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

0    623    2

Tags:

👉 本文共约32756个字,系统预计阅读时间或需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 实用工具

SQL Server客户端命令行工具sqlcmd和osql 下载 Microsoft Command Line Utilities 15 for SQL Server (x64) (2.6 MB)
SQL Server客户端命令行工具sqlcmd和osql 下载 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 实用工具,因为它在默认情况下已预安装:SQL Server客户端命令行工具sqlcmd和osql

若要在 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 支持”。

本人提供Oracle(OCP、OCM)、MySQL(OCP)、PostgreSQL(PGCA、PGCE、PGCM)等数据库的培训和考证业务,私聊QQ646634621或微信db_bao,谢谢!
SQL Server客户端命令行工具sqlcmd和osql后续精彩内容已被小麦苗无情隐藏,请输入验证码解锁本站所有文章!
验证码:
请先关注本站微信公众号,然后回复“验证码”,获取验证码。在微信里搜索“DB宝”或者“www_xmmup_com”或者微信扫描右侧二维码都可以关注本站微信公众号。

标签:

Avatar photo

小麦苗

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

您可能还喜欢...

发表回复

嘿,我是小麦,需要帮助随时找我哦。
  • 18509239930
  • 个人微信

  • DB宝
  • 个人邮箱
  • 点击加入QQ群
  • 个人微店

  • 回到顶部