基于sqlcmd命令行工具管理SQL server
在SQL Server数据库当中,除了大家熟知的基于SSMS来管理SQL server数据库之外,还有一个很强大的命令行工具sqlcmd。该命令行工具基本等同于Oracle SQL*Plus以及 MySQL命令提示符下以实现相关的运维管理工作。尤其是需要多个脚本执行的时候,sqlcmd便派上用场了。本文描述了sqlcmd的一些常规用法以及给出如何通过批处理方式执行脚本的示例。
一、获取sqlcmd帮助
C:\>sqlcmd -? Microsoft (R) SQL Server Command Line Tool Version 12.0.2000.8 NT %当前版本为SQLserver2014 12.0% Copyright (c) 2014 Microsoft. All rights reserved. usage: Sqlcmd [-U login id][-P password][-S server][-H hostname][-E trusted connection][-N Encrypt Connection][-C Trust Server Certificate][-d use database name][-l login timeout][-t query timeout][-h headers][-s colseparator][-w screen width][-a packetsize][-e echo input][-I Enable Quoted Identifiers][-c cmdend][-L[c] list servers[clean output]] [-q "cmdline query"][-Q "cmdline query" and exit][-m errorlevel][-V severitylevel][-W remove trailing spaces][-u unicode output][-r[0|1] msgs to stderr] [-i inputfile][-o outputfile][-z new password][-f <codepage> | i:<codepage>[,o:<codepage>]] [-Z new password and exit][-k[1|2] remove[replace] control characters] [-y variable length type display width][-Y fixed length type display width][-p[1] print statistics[colon format]] [-R use client regional setting][-K application intent][-M multisubnet failover][-b On error batch abort][-v var = "value"...][-A dedicated admin connection][-X[1] disable commands, startup script, environment variables [and exit]] [-x disable variable substitution][-? show syntax summary]
二、最常用的选项
服务器选项(-S),用于标识 sqlcmd 连接到的 Microsoft SQL Server 实例。 身份验证选项(-E、-U 和 -P),用于指定 sqlcmd 连接到 SQL Server 实例所使用的凭据。-E 选项为默认选项,毋须指定。 输入选项(-Q、-q 和 -i),用于标识 sqlcmd 输入的位置。 输出选项 (-o),用于指定 sqlcmd 输出所在的文件。
三、常见用法
使用 Windows 身份验证连接到默认实例,以交互方式运行 Transact-SQL 语句: sqlcmd -S <ComputerName> 上述示例中,未指定 -E,因为它是默认选项,而且 sqlcmd 使用 Windows 身份验证连接到默认实例。 使用 Windows 身份验证连接到命名实例,以交互方式运行 Transact-SQL 语句: sqlcmd -S <ComputerName>\<InstanceName> 或者 sqlcmd -S .\<InstanceName> 使用 Windows 身份验证连接到命名实例,并指定输入和输出文件: sqlcmd -S <ComputerName>\<InstanceName> -i <MyScript.sql> -o <MyOutput.rpt> 使用 Windows 身份验证连接到本地计算机上的默认实例,执行查询,并在查询运行完毕后使 sqlcmd 保持运行状态: sqlcmd -q "SELECT * FROM AdventureWorks2012.Person.Person" 使用 Windows 身份验证连接到本地计算机上的默认实例,执行查询,将输出定向到某个文件,并在查询运行完毕后使 sqlcmd 退出: sqlcmd -Q "SELECT * FROM AdventureWorks2012.Person.Person" -o MyOutput.txt 使用 SQL Server 身份验证连接到命名实例,以交互方式运行 Transact-SQL 语句,并由 sqlcmd 提示输入密码: sqlcmd -U MyLogin -S <ComputerName>\<InstanceName>
四、交互用法
交互方式,在请在未使用 -Q、-q、-Z 或 -i 选项指定任何输入文件或查询的情况下运行实用工具。 例如:sqlcmd -S <ComputerName>\<InstanceName> 交互方式2个常用的命令 GO + Enter : 将语句发送到SQLserver服务器并执行 Exit 或 QUIT : 退出sqlcmd命令行工作方式 :REST : 清除语句缓存,键入 ^C 将使 sqlcmd 退出,在发出 GO 命令后,还可以用 ^C 停止语句缓存的执行。 :ED : 使用编辑器编写SQL 示例 C:\>sqlcmd -U sa -P Sqlserve -H HQ1636 1> use testdb; 2> go 已将数据库上下文更改为 'testdb'。 1> select * from t2; 2> go id id2 ename ----------- ----------- ------------------- 1 1 NULL 1 NULL NULL 1 2 John (3 rows affected) 1> exit
五、使用sqlcmd运行SQL脚本
这个是比较管用的。对于熟悉Oracle SQL*Plus或者MySQL命令行的童鞋来说,有这个工具执行脚本,尤其是多个脚本需要执行的情绪,那个爽啊,不说了,直接看用法。
1、执行单个脚本
相关推荐
吹云 2020-11-05
84407805 2020-11-01
曾是土木人 2020-10-31
87201442 2020-10-15
java0 2020-09-29
81437716 2020-09-18
81437716 2020-09-13
bluecarrot 2020-09-11
myCat 2020-09-09
83427718 2020-09-07
85560694 2020-09-03
89520991 2020-08-21
89550191 2020-08-09
katie000 2020-08-04
hunningtu 2020-07-30
89961330 2020-07-28
yuzhongdelei0 2020-07-28
yuzhongdelei0 2020-07-27