SQL Server客户端命令行工具sqlcmd和osql

0    694    2

Tags:

👉 本文共约32884个字,系统预计阅读时间或需124分钟。

sqlcmd实用工具

sqlcmd概述

参考:

https://docs.microsoft.com/zh-cn/sql/tools/sqlcmd-utility?view=sql-server-ver15

https://docs.microsoft.com/zh-cn/previous-versions/sql/2014/tools/sqlcmd-utility?view=sql-server-2014&preserve-view=true

有关 SQL Server 2014 及更低版本的信息,请参阅 sqlcmd 实用工具

有关在 Linux 上使用 sqlcmd 的信息,请参阅在 Linux 上安装 sqlcmd 和 bcp

可以通过各种可用模式,使用 sqlcmd 实用工具输入 Transact-SQL 语句、系统过程和脚本文件:

  • 通过命令提示符。
  • 在查询编辑器中的 SQLCMD 模式下。
  • 在 Windows 脚本文件中。
  • 在 SQL Server 代理作业的操作系统 (Cmd.exe) 作业步骤中。

此实用工具使用 ODBC 执行 Transact-SQL 批处理。

下载最新版本的 sqlcmd 实用工具

下载 sqlcmd for x64 下载 Microsoft Command Line Utilities 15 for SQL Server (x64) (2.6 MB)
下载 sqlcmd for x86 下载 Microsoft Command Line Utilities 15 for SQL Server (x86) (2.3 MB)

命令行工具为公开发行版 (GA),但与 SQL Server 2019 (15.x) 的安装程序包一起发布。

版本信息

版本号:15.0.2
生成号:15.0.2000.5
发行日期:2020 年 9 月 11 日

新版本的 SQLCMD 支持 Azure AD 身份验证,包括对 SQL 数据库、Azure Synapse Analytics 和 Always Encrypted 功能的多重身份验证 (MFA) 支持。 新 BCP 支持 Azure AD 身份验证,包括对 SQL 数据库和 Azure Synapse Analytics 的多重身份验证 (MFA) 支持。

系统要求 Windows 10、Windows 7、Windows 8、Windows 8.1、Windows Server 2008 - 2019。

此组件要求具有内置 Windows Installer 5Microsoft ODBC Driver 17 for SQL Server

若要查看 SQLCMD 版本,请执行 sqlcmd -? 命令,并确认使用的是版本 15.0.2000.5 或更高版本。

备注

需要版本 13.1 或更高版本才支持 Always Encrypted (-g) 和 Azure Active Directory 身份验证 (-G)。 (你的计算机上可能已安装多个版本的 sqlcmd.exe。 请确保使用正确的版本。 若要确定版本,请执行 sqlcmd -?。)

可以从 Azure Cloud Shell 中尝试使用 sqlcmd 实用工具,因为它在默认情况下已预安装:启动 Cloud Shell

若要在 SSMS 中运行 sqlcmd 语句,请从顶部导航栏上的“查询菜单”下拉列表中选择“SQLCMD 模式”。

重要

在“查询编辑器”的常规模式和 SQLCMD 模式下,SQL Server Management Studio (SSMS) 使用 Microsoft .NET Framework SqlClient 执行操作。 通过命令行运行 sqlcmd 时,sqlcmd 使用 ODBC 驱动程序。 由于可以应用不同的默认选项,因此在 SQL Server Management Studio SQLCMD 模式下以及在 sqlcmd 实用工具中执行相同的查询时,可能会看到不同的行为。

sqlcmd 暂不要求在命令行选项和值之间使用空格。 不过,在今后推出的版本中,可能会要求在命令行选项和值之间必须有空格。

其他主题:

在 Linux 上安装 sqlcmd 和 bcp SQL Server 命令行工具

参考:https://docs.microsoft.com/zh-cn/sql/linux/sql-server-linux-setup-tools?view=sql-server-ver15

通过以下步骤安装命令行工具、Microsoft ODBC 驱动程序及其依赖项。 mssql-tools 包包含:

  • sqlcmd:命令行查询实用工具。
  • bcp:批量导入-导出实用工具。

为你的平台安装工具:

在 RHEL 8 上安装工具

通过以下步骤在 Red Hat Enterprise Linux 上安装 mssql-tools

  1. 进入超级用户模式。

  2. 下载 Microsoft Red Hat 存储库配置文件。

  3. 退出超级用户模式。

  4. 如果安装了早期版本的 mssql-tools,请删除所有旧的 unixODBC 包。

  5. 运行以下命令,以使用 unixODBC 开发人员包安装 mssql-tools

    备注

    若要将 mssql-tools 更新至最新版本,请运行以下命令:

  6. 可选:向 bash shell 中的 PATH 环境变量添加 /opt/mssql-tools/bin/

    要使 sqlcmd/bcp 能从登陆会话的 bash shell 进行访问,请使用下列命令修改 ~/.bash_profile 文件中的 PATH :

    Bash复制

    要使 sqlcmd/bcp 能从交互式/非登录会话的 bash shell 进行访问,请使用下列命令修改 ~/.bashrc 文件中的 PATH :

在 Ubuntu 16.04 上安装工具

通过以下步骤在 Ubuntu 上安装 mssql-tools

备注

  • 从 SQL Server 2019 CU3 开始,支持 Ubuntu 18.04。
  • 自 SQL Server 2019 CU10 起,开始支持 Ubuntu 20.04。
  • 如果你使用的是 Ubuntu 18.04 或 Ubuntu 20.04,请将下面步骤 2 中的存储库路径从 /ubuntu/16.04 更改为 /ubuntu/18.04/ubuntu/20.04
  1. 导入公共存储库 GPG 密钥。

    Bash复制

  2. 注册 Microsoft Ubuntu 存储库。

    Bash复制

  3. 更新源列表,并使用 unixODBC 开发人员包运行安装命令。

    Bash复制

    备注

    若要将 mssql-tools 更新至最新版本,请运行以下命令:

    Bash复制

  4. 可选:向 bash shell 中的 PATH 环境变量添加 /opt/mssql-tools/bin/

    要使 sqlcmd/bcp 能从登陆会话的 bash shell 进行访问,请使用下列命令修改 ~/.bash_profile 文件中的 PATH :

    Bash复制

    要使 sqlcmd/bcp 能从交互式/非登录会话的 bash shell 进行访问,请使用下列命令修改 ~/.bashrc 文件中的 PATH :

    Bash复制

在 SLES 12 上安装工具

通过以下步骤在 SUSE Linux Enterprise Server 上安装 mssql-tools

  1. 将 Microsoft SQL Server 存储库添加到 Zypper。

    Bash复制

  2. 使用 unixODBC 开发人员包安装 mssql-tools

    Bash复制

    备注

    若要将 mssql-tools 更新至最新版本,请运行以下命令:

    Bash复制

  3. 可选:向 bash shell 中的 PATH 环境变量添加 /opt/mssql-tools/bin/

    要使 sqlcmd/bcp 能从登陆会话的 bash shell 进行访问,请使用下列命令修改 ~/.bash_profile 文件中的 PATH :

    Bash复制

    要使 sqlcmd/bcp 能从交互式/非登录会话的 bash shell 进行访问,请使用下列命令修改 ~/.bashrc 文件中的 PATH :

    Bash复制

在 macOS 上安装工具

macOS 上目前提供 sqlcmdbcp 的预览版。 有关详细信息,请参阅公告

如果尚未安装 Homebrew,请进行安装:

  • /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

若要为 Mac El Capitan 和 Sierra 安装工具,请使用以下命令:

Bash复制

Docker

如果在 Docker 容器中运行 SQL Server,则 SQL Server 命令行工具已包含在 SQL Server Linux 容器映像中。 如果使用交互式 bash shell 附加到正在运行的容器,则可以在本地运行这些工具。

脱机安装

如果 Linux 计算机不能访问之前部分中使用的在线存储库,则可以直接下载包文件。 这些包位于 Microsoft 存储库中,网址为 https://packages.microsoft.com

提示

如果通过之前部分中的步骤成功安装了包,则无需下载或者手动安装以下包。 这仅适用于脱机的情况。

  1. 首先,找到并复制适用于你的 Linux 分发版的 mssql-tools 包:

    Linux 分发版mssql-tools 包位置
    Red Hathttps://packages.microsoft.com/rhel/7.3/prod
    SLEShttps://packages.microsoft.com/sles/12/prod
    Ubuntu 16.04https://packages.microsoft.com/ubuntu/16.04/prod/pool/main/m/mssql-tools
  2. 此外,找到并复制 msodbcsql 包,它是一个依赖项。 msodbcsql 包对 unixODBC-devel(Red Hat 和 SLES)或 unixodbc-dev (Ubuntu) 也具有依赖项。 下表列出了 msodbcsql 包的所在位置:

    Linux 分发版ODBC 包位置
    Red Hathttps://packages.microsoft.com/rhel/8/prod
    SLEShttps://packages.microsoft.com/sles/12/prod
    Ubuntu 16.04msodbcsql unixodbc-dev
  3. 将下载的包移至 Linux 计算机。 如果使用了不同的计算机下载包,则可以通过“scp”命令将包移至你的 Linux 计算机。

  4. 安装包:安装 mssql-toolsmsodbc 包。 如果遇到任何依赖项错误,请忽略,直到出现下一步操作。

    平台包安装命令
    Red Hatsudo yum localinstall msodbcsql-<version>.rpm sudo yum localinstall mssql-tools-<version>.rpm
    SLESsudo zypper install msodbcsql-<version>.rpm sudo zypper install mssql-tools-<version>.rpm
    Ubuntusudo dpkg -i msodbcsql_<version>.deb sudo dpkg -i mssql-tools_<version>.deb
  5. 解决缺少依赖项的问题:此时可能会出现缺少依赖项的情况。 如果没有,可以跳过此步骤。 在某些情况下,必须手动查找并安装这些依赖项。

    对于 RPM 包,可通过以下命令检查必需的依赖项:

    Bash复制

    对于 Debian 包,如果能够访问包含这些依赖项的已批准存储库,则最简单的解决办法是使用 apt-get 命令:

    Bash复制

    备注

    此命令还会完成 SQL Server 包的安装。

    如果此命令对 Debian 包不起作用,可通过以下命令检查必需的依赖项:

    Bash复制

语法

cmd复制

命令行选项

登录相关选项

-A
使用专用管理员连接 (DAC) 登录 SQL Server。 此类型连接用于排除服务器故障。 此连接只适用于支持 DAC 的服务器计算机。 如果 DAC 不可用,sqlcmd 会生成错误消息并退出。 有关 DAC 的详细信息,请参阅 用于数据库管理员的诊断连接。 不支持同时使用 -A 选项和 -G 选项。 使用 -A 连接到 SQL 数据库时,你必须是 SQL Server 管理员。 DAC 不适用于 Azure Active Directory 管理员。

-C
该开关供客户端用于将其配置为隐式表示信任服务器证书且无需验证。 此选项等同于 ADO.NET 选项 TRUSTSERVERCERTIFICATE = true

-d db_name
在你启动 sqlcmd 时,此选项发出一个 USE db_name 语句。 此选项设置 sqlcmd 脚本变量 SQLCMDDBNAME。 此参数指定初始数据库。 默认为您的登录名的默认数据库属性。 如果数据库不存在,则生成错误消息且 sqlcmd 退出。

-D
将提供给 -S 的服务器名称解释为 DSN 而不是主机名。 有关详细信息,请参阅使用 sqlcmd 进行连接中的“sqlcmd 和 bcp 中的 DSN 支持”。

备注

-D 选项仅适用于 Linux 和 MacOS 客户端。 在 Windows 客户端上,它以前引用的选项现在已过时,该选项已被删除并被忽略。

-l login_timeout
指定在你尝试连接到服务器时 sqlcmd 登录 ODBC 驱动程序的超时时间(以秒为单位)。 此选项设置 sqlcmd 脚本变量 SQLCMDLOGINTIMEOUT。 登录到 sqlcmd 的默认超时时间为 8 秒。 当使用 -G 选项连接到 SQL 数据库或 Azure Synapse Analytics,并使用 Azure Active Directory 进行身份验证时,建议超时值至少为 30 秒。 登录超时必须是介于 0 和 65534 之间的数字。 如果提供的值不是数值或不在此范围内, sqlcmd 将生成错误消息。 该值为 0 时,则允许无限制等待。

-E
使用信任连接而不是用户名和密码登录 SQL Server。 默认情况下,如果未指定 -Esqlcmd 将使用信任连接选项。

-E 选项会忽略可能的用户名和密码环境变量设置,例如 SQLCMDPASSWORD。 如果将 -E 选项与 -U 选项或 -P 选项一起使用,将生成错误消息。

-g
将列加密设置设为 Enabled。 有关详细信息,请参阅 Always Encrypted。 仅支持存储在 Windows 证书存储中的主密钥。 -g 开关至少需要 sqlcmd 版本 13.1。 若要确定你的版本,请执行 sqlcmd -?

-G
当连接到 SQL 数据库或 Azure Synapse Analytics 时,客户端将使用此开关指定该用户使用 Azure Active Directory 身份验证来进行身份验证。 此选项设置 sqlcmd 脚本变量 SQLCMDUSEAAD = true。 -G 开关至少需要 sqlcmd 版本 13.1。 若要确定你的版本,请执行 sqlcmd -?。 有关详细信息,请参阅使用 Azure Active Directory 身份验证连接到 SQL 数据库或 Azure Synapse Analytics。 不支持同时使用 -A 选项和 -G 选项。

重要

-G 选项仅适用于 Azure SQL 数据库和 Azure Synapse Analytics。 Linux 或 macOS 目前不支持 AAD 交互式身份验证。 AAD 集成身份验证需要 Microsoft ODBC Driver 17 for SQL Server 版本 17.6.1 或更高版本,以及正确配置的 Kerberos 环境

  • Azure Active Directory 用户名和密码:

    当你想要使用 Azure Active Directory 用户名和密码时,可以提供 -G 选项,也可以通过提供 -U 选项和 -P 选项来使用用户名和密码。

    cmd复制

    -G 参数在后端生成以下连接字符串:

    cmd复制

  • Azure Active Directory 集成

    要进行 Azure Active Directory 集成身份验证,可提供 -G 选项而无需用户名或密码。 AAD 集成身份验证要求 Microsoft ODBC Driver 17 for SQL Server 版本 17.6.1 或更高版本以及正确配置的 Kerberos 环境

    cmd复制

    这将在后端生成以下连接字符串:

    cmd复制

    备注

    -E 选项 (Trusted_Connection) 无法与 -G 选项结合使用。

  • Azure Active Directory 交互式身份验证

    使用面向 Azure SQL 数据库和 Azure Synapse Analytics 的 Azure AD 交互式身份验证,可以使用支持多重身份验证的交互式方法。 有关详细信息,请参阅 Active Directory 交互式身份验证

    Azure AD 交互式身份验证需要 sqlcmd 版本 15.0.1000.34 或更高版本,以及 ODBC 版本 17.2 或更高版本

    若要启用交互式身份验证,请仅为 -G 选项提供用户名 (-U),而不提供密码。

    下面的示例使用 Azure AD 交互模式导出数据,该数据指示用户名,其中的用户代表 AAD 帐户。 这与上一节中使用的示例相同:Azure Active Directory 用户名和密码。

    交互模式需要手动输入密码,或者对于启用了多重身份验证的帐户,请完成配置的 MFA 身份验证方法。

    cmd复制

    上一个命令将在后端生成以下连接字符串:

    cmd复制

    如果 Azure AD 用户是使用 Windows 帐户的域联合用户,则命令行中所需的用户名将包含其域帐户(例如 joe@contoso.com,见下文):

    cmd复制

    如果来宾用户存在于特定的 Azure AD 中,并且属于 SQL 数据库中存在的具有执行 sqlcmd 命令的数据库权限的组,则使用其来宾用户别名(例如,keith0@adventureworks.com)。

    重要

    -G-U 选项与 SQLCMD 结合使用时,存在以下已知问题:将 -U 选项放在 -G 选项前面可能会导致身份验证失败。 始终先使用 -G 选项,再后跟 -U 选项。

-H workstation_name
工作站的名称。 此选项设置 sqlcmd 脚本变量 SQLCMDWORKSTATION。 工作站名称列出在 sys.sysprocesses 目录视图的 hostname 列中,并且可使用存储过程 sp_who 返回。 如果不指定此选项,则默认为当前计算机名称。 此名称可用来标识不同的

sqlcmd 会话。

-j 将原始错误消息输出到银幕上。

-K application_intent
连接到服务器时声明应用程序工作负荷类型。 目前唯一支持的值是 ReadOnly。 如果未指定 -K ,sqlcmd 实用工具将不支持连接到 AlwaysOn 可用性组中的次要副本。 有关详细信息,请参阅活动次要副本:可读次要副本(Always On 可用性组)

-M multisubnet_failover
在连接到 SQL Server 可用性组或 SQL Server 故障转移群集实例的可用性组侦听程序时,应始终指定 -M。 -M 将为(当前)活动服务器提供更快的检测和连接。 如果 -M 未指定,-M 处于关闭状态。 有关侦听程序、客户端连接、应用程序故障转移创建和配置可用性组 (SQL Server)故障转移群集和 Always On 可用性组 (SQL Server)活动次要副本:可读次要副本(Always On 可用性组)的详细信息。

-N
此开关供客户端用于请求加密连接。

-P password
用户指定的密码。 密码是区分大小写的。 如果使用了 -U 选项而未使用 -P 选项,并且未设置 SQLCMDPASSWORD 环境变量,则 sqlcmd 会提示用户输入密码。 我们不建议使用 null 密码,但你可以通过对参数值使用一对连续的双引号来指定 null 密码:

  • -P ""

建议使用强密码。

使用强密码!

通过向控制台输出密码提示,可以显示密码提示,如下所示: Password:

隐藏用户输入。 也就是说,将不会显示任何输入的内容,光标保留原位不动。

使用 SQLCMDPASSWORD 环境变量可以为当前会话设置默认密码。 因此,不必将密码硬编码到批处理文件中。

以下示例首先在命令提示符处设置 SQLCMDPASSWORD 变量,然后访问 sqlcmd 实用工具。 在命令提示符处,键入:

SET SQLCMDPASSWORD= p@a$$w0rd
在以下命令提示符处键入:

如果用户名和密码组合不正确,将生成错误消息。

注意! 为实现向后兼容性而保留了 OSQLPASSWORD 环境变量。 SQLCMDPASSWORD 环境变量优先于 OSQLPASSWORD 环境变量。 现在,不再共享 OSQLPASSWORD,实用工具 sqlcmd 和 osql 可以彼此相邻使用而不会相互干扰 。 旧脚本可以继续使用。

如果将 -P 选项与 -E 选项一起使用,将生成错误消息。

如果 -P 选项后有多个参数,将生成错误消息并退出程序。

-S [protocol:]server[ \ instance_name][ , port]
指定要连接的 SQL Server 实例。 它设置 sqlcmd 脚本变量 SQLCMDSERVER。

指定 server_name 可连接到该服务器计算机上的 SQL Server 默认实例。 指定要连接到该服务器计算机上 SQL Server 命名实例的 server_name [ *instance_name* ]。 如果不指定服务器,sqlcmd 将连接到本地计算机上 SQL Server 的默认实例。 从网络上的远程计算机执行 sqlcmd 时,此选项是必需的。

protocol 可以是 tcp (TCP/IP)、 lpc (共享内存)或 np (命名管道)。

如果在启动 sqlcmd 时未指定 server_name [ *instance_name* ],SQL Server 将检查并使用 SQLCMDSERVER 环境变量。

备注

为实现向后兼容性而保留了 OSQLSERVER 环境变量。 SQLCMDSERVER 环境变量优先于 OSQLSERVER 环境变量;也就是说 sqlcmdosql 可以彼此相邻使用而不会相互干扰,并且旧式脚本可以继续使用。

-U login_id
登录名或包含的数据库用户名。 对于包含的数据库用户,必须提供数据库名称选项 (-d)。

备注

OSQLUSER 环境变量可用于实现向后兼容性。 SQLCMDUSER 环境变量优先于 OSQLUSER 环境变量。 也就是说, sqlcmdosql 可以彼此相邻使用而不会相互干扰。 此外,现有的 osql 脚本可以继续使用。

如果 -U 选项和 -P 选项均未指定,sqlcmd 会尝试使用 Microsoft Windows 身份验证模式进行连接。 身份验证基于运行 sqlcmd 的用户的 Windows 帐户。

如果 -U 选项与 -E 选项(将在本主题的后面进行说明)一起使用,则会生成错误消息。 如果 -U 选项后跟多个参数,便会生成错误消息并退出程序。

-z new_password
更改密码:

-Z new_password
更改密码并退出:

输入/输出选项
-f codepage | i:codepage[,o:codepage] | o:codepage[,i:codepage ]
指定输入和输出代码页。 代码页页码是指定已安装的 Windows 代码页的数值。

代码页转换规则:

  • 如果未指定代码页, sqlcmd 会将当前代码页同时用于输入文件和输出文件,除非输入文件为 Unicode 文件,在此情况下无需进行转换。
  • sqlcmd 自动识别 Big-endian Unicode 和 Little-endian Unicode 输入文件。 如果已指定 -u 选项,输出将始终为 Little-endian Unicode。
  • 如果未指定输出文件,输出代码页将为控制台代码页。 借助此方法,可以在控制台上正确显示输出。
  • 假定多个输入文件具有相同的代码页。 可以将 Unicode 和非 Unicode 输入文件混合在一起。

在命令提示符处输入 chcp 以验证 Cmd.exe 的代码页。

-i input_file[,input_file2...]
标识包含一批 SQL 语句或存储过程的文件。 可以指定要按顺序读取和处理的多个文件。 文件名之间不要使用任何空格。 sqlcmd 将首先检查所有指定的文件是否都存在。 如果有一个或多个文件不存在, sqlcmd 将退出。 -i 和 -Q/-q 选项是互斥的。

路径示例:

cmd复制

包含空格的文件路径必须用引号引起来。

此选项可以使用多次:-iinput_file -II input_file。

-o output_file
标识从 sqlcmd 接收输出的文件。

如果指定了 -u ,则 output_file 以 Unicode 格式存储。 如果文件名无效,将生成一个错误消息,并且 sqlcmd 将退出。 sqlcmd 不支持向同一文件并发写入多个 sqlcmd 进程。 文件输出将损坏或不正确。 请参阅同样与文件格式相关的 -f 开关。 如果不存在,则将创建此文件。 前一个 sqlcmd 会话中的同名文件将被覆盖。 此处指定的文件不是 stdout 文件。 如果指定了 stdout 文件,就不会使用此文件。

路径示例:

cmd复制

包含空格的文件路径必须用引号引起来。

-r[0 | 1]
将错误消息输出重定向到屏幕 (stderr)。 如果未指定参数或指定参数为 0,则仅重定向严重级别为 11 或更高的错误消息。 如果指定参数为 1,则将重定向所有消息输出(包括 PRINT)。 如果使用 -o,将不起任何作用。 默认情况下,消息将发送到 stdout

-R
让 sqlcmd 根据客户端的区域设置,本地化从 SQL Server 中检索到的数字、货币、日期和时间列。 默认情况下,这些列使用服务器的区域设置进行显示。

-u
指定无论 input_file 为何种格式,都以 Unicode 格式存储 output_file

查询执行选项
-e
将输入脚本写入标准输出设备 (stdout)。

-I
将 SET QUOTED_IDENTIFIER 连接选项设置为 ON。 默认情况下,此选项设置为 OFF。 有关详细信息,请参阅 SET QUOTED_IDENTIFIER (Transact-SQL)

-q " cmdline query "
启动 sqlcmd 时执行查询,但是在查询结束运行时不退出 sqlcmd 。 可以执行多个以分号分隔的查询。 将查询用引号引起来,如下例所示。

在命令提示符处,键入:

重要

请不要在查询中使用 GO 终止符。

如果在指定此选项的同时还指定了 -bsqlcmd 在遇到错误时将退出。 -b 将在本文后面部分进行介绍。

-Q " cmdline query "
sqlcmd 启动时执行查询,随后立即退出 sqlcmd。 可以执行多个以分号分隔的查询。

将查询用引号引起来,如下例所示。

在命令提示符处,键入:

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信dbaup66,谢谢!
AiDBA后续精彩内容已被站长无情隐藏,请输入验证码解锁本文!
验证码:
获取验证码: 请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“AiDBA”或者“dbaup6”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

学习或考证,均可联系麦老师,请加微信db_bao或QQ646634621

您可能还喜欢...

发表回复