SQL Server命令行导数据两种方式bcp和sqlcmd
先说一下bcp:
BCP是SQL Server中负责导入导出数据的一个命令行工具,它是基于DB-Library的,并且能以并行的方式高效地导入导出大批量的数据。
BCP共有四个动作可以选择。
(1) 导入。
这个动作使用in命令完成,后面跟需要导入的文件名。
(2) 导出。
这个动作使用out命令完成,后面跟需要导出的文件名。
(3) 使用SQL语句导出。
这个动作使用queryout命令完成,它跟out类似,只是数据源不是表或视图名,而是SQL语句。
(4) 导出格式文件。
这个动作使用format命令完成,后而跟格式文件名。
下面介绍一些常用的选项:
-f format_file
format_file表示格式文件名。这个选项依赖于上述的动作,如果使用的是in或 out,format_file表示已经存在的格式文件,如果使用的是format则表示是要生成的格式文件。
-x 这个选项要和-f format_file配合使用,以便生成xml格式的格式文件。
-F first_row 指定从被导出表的哪一行导出,或从被导入文件的哪一行导入。
-L last_row
指定被导出表要导到哪一行结束,或从被导入文件SQL Server命令行导数据时,导到哪一行结束。
-c使用char类型做为存储类型,没有前缀且以”\t”做为字段分割符,以”\n”做为行分割符。
-w 和-c类似,只是当使用Unicode字符集拷贝数据时使用,且以nchar做为存储类型。
-t field_term 指定字符分割符,默认是”\t”。
-r row_term 指定行分割符,默认是”\n”。
-S server_name[ \instance_name]
指定要连接的SQL Server服务器的实例,如果未指定此选项,BCP连接本机的SQL Server默认实例。如果要连接某台机器上的默认实例,只需要指定机器名即可。
-U login_id 指定连接SQL Sever的用户名。
-P password 指定连接SQL Server的用户名密码。
-T 指定BCP使用信任连接登录SQL Server。如果未指定-T,必须指定-U和-P。
-k 指定空列使用null值插入,而不是这列的默认值。
exp:
BCP AdventureWorks.sales.currency out c:\currency1.txt -c -U”sa” -P”password” –使用密码连接或BCP AdventureWorks.sales.currency out c:\currency1.txt -c -T –使用信任连接
BCP不仅可以接受表名或视图名做为参数,也可以接受SQL做为参数。通过SQL语句可以对要导出的表进行过滤,然后导出过滤后的记录。
EXEC master..xp_cmdshell ‘BCP “SELECT TOP 20 * FROM AdventureWorks.sales.currency” queryout c:\currency2.txt -c -U”sa” -P”password”‘
BCP还可以通过简单地设置选项对导出的行进行限制。
EXEC master..xp_cmdshell ‘BCP “SELECT TOP 20 * FROM AdventureWorks.sales.currency” queryout c:\currency2.txt -F 10 -L 13 -c -U”sa” -P”password”‘
接着说sqlcmd:启动 sqlcmd 实用工具并连接到 SQL Server 的默认实例
A、在“开始”菜单上,单击“运行”。在“打开”框中,键入 cmd,然后单击“确定”打开命令提示符窗口。
B、在命令提示符处,键入 sqlcmd。
C、按 Enter 键。
现在,您已与计算机上运行的默认 SQL Server 实例建立了可信连接。是 sqlcmd 提示符,可以指定行号。每按一次 Enter,该数字就会加 1。
D、若要结束 sqlcmd 会话,请在 sqlcmd 提示符处键入 EXIT。
 exp:sqlcmd -S localhost -d databasename -U sa -P 12345 -i d:\test.sql
以上的相关内容就是对SQL Server命令行导数据的介绍,望你能有所收获。
 该文章出自黄页搜搜,原文链接:http://news.huangyesoso.com/Details/3255.html 转载请务必保留此链接,谢谢!
 SQLServer的命令行工具-sqlcmd等.. 
 分类: SQL SERVER基础知识 2011-05-18 10:06 857人阅读 评论(0) 收藏 举报 和往常一样,我们先使用 /?来看看sqlcmd的启动参数们:
 
C:Documents and Settingschenxie.IFLYTEK>sqlcmd.exe /?
Microsoft (R) SQL Server 命令行工具
版本 9.00.1399.06 NT INTEL X86
版权所有 (c) Microsoft Corporation。保留所有权利。
 
用法: Sqlcmd            [-U 登录 ID]          [-P 密码]
 [-S 服务器]            [-H 主机名]          [-E 可信连接]
 [-d 使用数据库名称] [-l 登录超时值]     [-t 查询超时值]
 [-h 标题]           [-s 列分隔符]      [-w 屏幕宽度]
 [-a 数据包大小]        [-e 回显输入]        [-I 允许带引号的标识符]
 [-c 命令结束]            [-L[c] 列出服务器[清除输出]]
 [-q "命令行查询"]   [-Q "命令行查询" 并退出]
 [-m 错误级别]        [-V 严重级别]     [-W 删除尾随空格]
 [-u unicode 输出]    [-r[0|1] 发送到 stderr 的消息]
 [-i 输入文件]         [-o 输出文件]        [-z 新密码]
 [-f <代码页> | i:<代码页>[,o:<代码页>]] [-Z 新建密码并退出]
 [-k[1|2] 删除[替换]控制字符]
 [-y 可变长度类型显示宽度]
 [-Y 固定长度类型显示宽度]
 [-p[1] 打印统计信息[冒号格式]]
 [-R 使用客户端区域设置]
 [-b 出错时中止批处理]
 [-v 变量 = "值"...] [-A 专用管理连接]
 [-X[1] 禁用命令、启动脚本、环境变量[并退出]]
 [-x 禁用变量情况]
 [-? 显示语法摘要]
 
呵呵,和osql没什么变化吧。下面我将仔细解释每个参数和它们的使用方法。
 
 
  下面是这些参数的详细解释(注意,区分大小写):
1. 首先是登陆方面的:
如果 –U  -P –S都是空,比如直接在CMD下打 sqlcmd或sqlcmd.exe将使用本地账户尝试连接本地数据库
-U login_id
用户登录 ID。登录 ID 区分大小写。
如果 -U 选项和 -P 选项均未指定,sqlcmd 将尝试使用 Microsoft Windows 身份验证模式进行连接。身份验证基于运行 sqlcmd 的用户的 Windows 帐户。
如果 -U 选项与 -E 选项(在本主题的后面详细说明)一起使用,将生成错误消息。如果 –U 选项后有多个参数,将生成错误消息并退出程序。
 
-P password
用户指定的密码。密码是区分大小写的。如果未使用 -P 选项,并且未设置 SQLCMDPASSWORD 环境变量,则 sqlcmd 会提示用户输入密码。如果在命令提示符的末尾使用 -P 选项而不带密码,sqlcmd 将使用默认密码 (NULL)。
通过向控制台打印密码提示,可以显示密码提示,如下所示:
Password:
  隐藏用户输入,这意味着将不会显示任何输入的内容,光标保留原位不动。
如果将 -P 选项与 -E 选项一起使用,将生成错误消息。
如果 –P 选项后有多个参数,将生成错误消息并退出程序。
-E
使用可信连接而不是用户名和密码登录 SQL Server。默认情况下,sqlcmd 将使用可信连接选项。
-E 选项会忽略可能的用户名和密码环境变量设置,例如 SQLCMDPASSWORD。如果将 -E 选项与 -U 选项或 -P 选项一起使用,将生成错误消息。
-S server_name [ instance_name ]
指定要连接的 SQL Server 的实例。它设置 sqlcmd 脚本变量 SQLCMDSERVER
指定 server_name 将连接到该服务器中 SQL Server 的默认实例。指定 server_nameinstance_name 将连接到该服务器中 SQL Server 的命名实例。如果未指定服务器,sqlcmd 将连接到本地计算机上的 SQL Server 的默认实例。从网络上的远程计算机执行 sqlcmd 时,此选项是必需的。
如果在启动 sqlcmd 时未指定用户名,SQL Server 将检查并使用 SQLCMDSERVER 环境变量。如果未指定服务器,则使用工作站名称。
-H wksta_name
工作站的名称。此选项设置 sqlcmd 脚本变量 SQLCMDWORKSTATION。该工作站名称在 sys.processes 目录视图的 hostname 列中列出,并可使用存储过程 sp_who 返回。如果未指定此选项,则使用当前计算机名称。此名称可用来标识不同的 sqlcmd 会话。
 
2. 连接设置:
 
-l time_out
指定 sqlcmd 到 OLE DB 访问接口的登录超时时间。此选项设置 sqlcmd 脚本变量 SQLCMDLOGINTIMEOUT。登录 sqlcmd 的默认超时时间为 8 秒。登录超时设定必须是介于 0 和 65534 之间的数字。如果提供的值不是数值或不在此范围内,sqlcmd 将生成错误消息。该值为 0 时,则允许无限制等待。
-t time_out
   指定命令(或 SQL 语句)超时的时间。此选项设置 sqlcmd 脚本变量 SQLCMDSTATTIMEOUT。如果未指定 time_out 值,则命令将不会超时。登录 time_out 必须是介于 1 和 65535 之间的数字。如果提供的值不是数值或不在此范围内,则 sqlcmd 将生成错误消息。
 
注:实际的超时值可能会与指定的 time_out 值相差几秒。几秒,不是几毫秒,别看错了。
 
-d db_name
   启动 sqlcmd 时发出一个USE db_name 语句。此选项设置 sqlcmd 脚本变量 SQLCMDDBNAME。它指定初始数据库。如果数据库不存在,则生成错误消息且 sqlcmd 退出
 
-A
   使用专用管理员连接 (DAC) 登录到 SQL Server。此类型连接用于排除服务器故障。这只适用于支持 DAC 的服务器。如果 DAC 不可用,sqlcmd 会生成错误消息,然后退出。很好的东西,下面会详细介绍。
 
 
-I
将 SET QUOTED_IDENTIFIER 连接选项设置为 ON。默认情况下,将其设定为 OFF。这与SQL Server的默认设置不同,SQL是设置默认是ON的。
 
小帖士:QUOTED_IDENTIFIER,分隔符使用设置。
SET QUOTED_IDENTIFIER 为 ON(默认值)时,由双引号分隔的所有字符串都被解释为对象标识符。(比如 Select * from [USER],或Select * from “USER”,这里USER就被视为非系统保留字)
因此,加引号的标识符不必符合 Transact-SQL 标识符规则。它们可以是保留关键字,并且可以包含 Transact-SQL 标识符中通常不允许的字符。不能使用双引号分隔文字字符串表达式,而必须用单引号括住文字字符串。如果单引号 (') 是文字字符串的一部分,则可以由两个单引号 (") 表示。当对数据库中的对象名使用保留关键字时,SET QUOTED_IDENTIFIER 必须为 ON。
当 SET QUOTED_IDENTIFIER 为 OFF 时,表达式中的文字字符串可以由单引号或双引号分隔。如果文字字符串由双引号分隔,则可以在字符串中包含嵌入式单引号,如省略号。
在SQL操作的时候具体,默认值为ON还是OFF请查SQLServer2005的联机手册,上面有详细描述。
 
 
 
3.显示设置:
 
-h headers
指定要在列标题之间打印的行数。系统默认为每组查询结果打印一次标题。此选项设置 sqlcmd 脚本变量 SQLCMDHEADERS。使用 -1 指定不能打印标题。如果使用 -1,则在参数和设置之间没有空格(可以是 -h-1,但不能是 -h -1)。任何无效的值都将导致 sqlcmd 生成错误消息,然后退出。
 
-w column_width
 
指定用于输出的屏幕宽度。此选项设置 sqlcmd 脚本变量 SQLCMDCOLWIDTH。该列宽必须是介于 8 和 65536 之间的数字。如果指定的列宽不在此范围内,则 sqlcmd 将生成错误消息。默认宽度为 80 个字符。在输出行超出指定的列宽时,将转到下一行。
-e
将输入脚本打印到标准输出设备 (stdout)。
-r [ 0 | 1]
将错误消息输出重定向到屏幕 (stderr)。如果未指定参数或指定参数为 0,则仅重定向严重级别为 17 或更高的错误消息。如果指定参数为 1,则将重定向所有消息输出(包括 PRINT)。
-k [ 1 | 2 ]
     删除输出中的所有控制字符,例如制表符和换行符。这会在返回数据时保留列格式。如果指定了 1,则控制字符被一个空格替代。如果指定了 2,则连续的控制字符被一个空格替代。
-p [ 1 ]
    打印每个结果集的性能统计信息。以下示例是性能统计信息的格式:
Network packet size (bytes): n
x xact[s]:
Clock Time (ms.): total       t1 avg       t2 (t3 xacts per sec.)
  其中
x = SQL Server 处理的事务数。
t1 = 所有事务的总时间。
t2 = 单个事务的平均时间。
t3 = 每秒的平均事务数。
所有时间均以毫秒表示。
如果指定了可选参数 1,则统计信息的输出格式为以冒号分隔的格式,此格式可以由脚本轻松导入到电子表格中或进行处理。
如果可选参数是除 1 之外的任何值,则将生成错误并且 sqlcmd 将退出。
-o output_file
标识从 sqlcmd 接收输出的文件。
如果指定了 -u,则 output_file 以 Unicode 格式存储。包含空格的文件名必须用引号引起来。如果文件名无效,将生成一个错误消息,并且 sqlcmd 将退出。sqlcmd 不支持向同一文件并发写入多个 sqlcmd 进程。文件输出将损坏或不正确。
 
  -u
    指定无论 input_file 为何种格式,output_file 都以 Unicode 格式进行存储。
 
 4.查询配置:
-q " query "
    启动 sqlcmd 时执行查询,但是在查询完成时不退出 sqlcmd。将查询用引号引起来,如下例所示。(建议不要使用这个,如果是写批处理命令或是程序自动执行,请用下面那个)
在命令提示符下,键入(不要在查询中使用 GO 终止符):
sqlcmd -d AdventureWorks -q "SELECT FirstName, LastName FROM Person.Contact WHERE LastName LIKE 'Whi%'"
  如果与此选项同时指定了 -b,sqlcmd 在遇到错误时将退出。
-Q " query "
    执行查询并立即退出 sqlcmd,类上。(建议不要使用这个,除非是写批处理命令或是程序自动执行)
    如果与此选项同时指定了 -b,sqlcmd 在遇到错误时将退出。
 
-i input_file[,input_file2...]
     标识包含一批 SQL 语句或存储过程的文件。可以指定要按顺序读取和处理的多个文件。文件名之间不要使用任何空格。sqlcmd 将首先检查所有指定的文件是否都存在。如果有一个或多个文件不存在,sqlcmd 将退出。
 
-b
     指定错误发生时 sqlcmd 退出并返回一个 DOS ERRORLEVEL 值。当 SQL Server 错误消息的严重级别高于 10 时,返回给 DOS ERRORLEVEL 变量的值为 1;否则返回的值为 0。如果除 -b 选项外还设置了 -V 选项,则当严重等级低于使用 -V 设置的值时,sqlcmd 将不报告错误。命令提示符批处理文件可以测试 ERRORLEVEL 的值并适当处理错误。sqlcmd 不对严重级别 10 报告错误(信息性消息)。
如果 sqlcmd 脚本包含错误的注释、语法错误或缺少脚本变量,则返回的 ERRORLEVEL 为 1。
 
-V
    指定 sqlcmd 报告的最低严重级别。Transact-SQL 脚本中发生错误时,仅当严重级别大于或等于由 -V 开关指定的值时,才报告严重级别。如果严重级别低于该值,则报告 0。命令提示符批处理文件可以测试 ERRORLEVEL 的值并适当处理错误。
 
-s col_separator
    指定列分隔符字符。默认为空格。此选项设置 sqlcmd 脚本变量 SQLCMDCOLSEP。若要使用对操作系统有特殊含义的字符(如 and 字符 (&) 或分号 (;)),请将该字符用双引号 (") 引起来。列分隔符可以是任意 8 位字符。
 
-c cmd_end
     指定批处理终止符。默认情况下,通过单独在一行中键入“GO”来终止命令并将其发送到 SQL Server。重置批处理终止符时,不要使用对操作系统具有特殊意义的 Transact-SQL 保留关键字或字符,即便它们前面有反斜杠也是如此。
 
-R
   设置 SQL Server OLE DB 访问接口,使其在将货币、日期和时间数据转换为字符数据时使用客户端区域设置。
 
5.参数设置:
 
-a packet_size
    需要不同大小的数据包。该选项设置 sqlcmd 脚本变量 SQLCMDPACKETSIZE。packet_size 必须是介于 512 和 32767 之间的值。如果脚本的两个 GO 命令之间包含大量 SQL 语句,则使用较大的数据包可以提高脚本执行的性能。我们可以请求更大的数据包,但如果请求被拒绝,sqlcmd 将默认为服务器默认的数据包大小。
 
-L [ c ]
     列出在本地配置的服务器和在网络上广播的服务器的名称。此参数不能与其他参数结合使用。可以列出的服务器的最大数目是 3000。如果服务器列表由于缓冲区大小而被截断,则会显示错误消息。
     如果指定可选参数 c,则输出不会显示 Servers: 标题行,且列出的每个服务器行都没有前导空格。这称为清除输出。清除输出可以提高脚本语言的处理性能。
     注意:由于网络广播的本质,sqlcmd 可能无法及时接收到所有服务器的响应,因此,每次调用此选项时,根据人品的不同,返回的服务器列表可能会有所不同。 :-)
 
-m error_level
     自定义错误消息的显示。显示高于指定严重级别的错误的消息号、状态和错误级别。而不显示严重级别低于指定级别的错误的信息。用 -1 指定与消息一起返回所有标题,即使是信息性的消息。如果指定了 -1,则在参数和设置之间不能有空格(例如,可以是 -m-1,但不能是 -m -1)。
     此选项设置 sqlcmd 脚本变量 SQLCMDERRORLEVEL。
-W
   此选项删除列的尾随空格。在准备要导出到另一应用程序的数据时,请将此选项和 -s 选项结合使用。不能与 -y 或 -Y 选项结合使用。
 
-f < codepage > | i: < codepage > [ < , o: < codepage > ]
     指定输入和输出代码页。代码页页码是指定已安装的 Windows 代码页的数值。
-y display_width
   限制为较大的可变长度数据类型返回的字符数:
·         varchar(max)
·         nvarchar(max)
·         varbinary(max)
·         xml
·         UDT(用户定义的数据类型)
·         text
·         ntext
·         image
     根据实现,UDT 可以使用固定的长度。如果此固定长度 UDT 的长度比 display_width 短,则返回的 UDT 值将不会受影响。但是,如果此长度比 display_width 长,则输出将会被截断。如果 display_width 为 0,则输出将会在 1-MB 处截断。
     使用 -y 0 选项时要特别注意,因为根据返回的数据量大小,此选项可能导致服务器和网络上出现严重性能问题。
-Y display_width
限制为以下数据类型返回的字符数:
·         char
·         nchar
·         varchar(n),其中 1<n<8000
·         nvarchar(n) 其中 1<n<4000
·         sql_variant
-v var=" value"[ var="value"...]
    创建可用于 sqlcmd 脚本中的 sqlcmd 脚本变量。如果该值包含字符,则将其用引号引起来。可以指定多个 var="values" 值。如果指定的任何值中有错误,sqlcmd 会生成错误消息,然后退出。
-X [ 1 ]
    从批处理文件执行 sqlcmd 时,将禁用可能危及系统安全的命令。禁用的命令仍然可以被识别;sqlcmd 发出警告消息并继续。如果指定了可选参数 1,则 sqlcmd 将生成错误消息,然后退出。使用 -X 选项时,将禁用以下命令:
·         ED
·         !! command
    如果指定 -X 选项,它会阻止将环境变量传递给 sqlcmd。同时该选项还会阻止执行通过使用 SQLCMDINI 脚本变量指定的启动脚本。
-x
    导致 sqlcmd 忽略脚本变量。当脚本中包含多个 INSERT 语句,并且这些语句可能包含格式与常规变量,如 $(variable_name) 相同的字符串时,这一选项很有用。
  
 在了解完sqlcmd 参数之后,我们载来看看sqlcmd的命令,使用:Help来看看一共有那些命令
1> :Help
:!! [<命令>]
 - 在 Windows 命令 shell 中执行命令。
:connect server[instance] [-l 超时值] [-U 用户 [-P 密
 - 连接到 SQL Server 实例。
:ed
 - 编辑当前语句缓存或上次执行的语句缓存。
:error <目标>
 - 将错误输出重定向到文件、stderr 或 stdout。
:exit
 - 立即退出 sqlcmd。
:exit()
 - 执行语句缓存;不返回值,直接退出。
:exit(<查询>)
 - 执行指定的查询;返回数字结果。
go [<n>]
 - 执行语句缓存(n 次)。
:help
 - 显示此命令列表。
:list
 - 输出语句缓存的内容。
:listvar
 - 列出设置的 sqlcmd 脚本变量。
:on error [exit|ignore]
 - 在执行批处理或 sqlcmd 命令时应对错误的措施。
:out <文件名>|stderr|stdout
 - 将查询输出重定向到文件、stderr 或 stdout。
:perftrace <文件名>|stderr|stdout
 - 将计时输出重定向到文件、stderr 或 stdout。
:quit
 - 立即退出 sqlcmd。
:r <文件名>
 - 将文件内容追加到语句缓存之后。
:reset
 - 放弃语句缓存。
:serverlist
 - 列出本地 SQL Server 和网络中的 SQL Server。
:setvar {variable}
 - 删除 sqlcmd 脚本变量。
:setvar <变量> <值>
 - 设置 sqlcmd 脚本变量。
Sqlcmd的命令都是以”:”符号开始的(除了GO,打:GO系统会认为是向缓存区添加了一段字符:GO),虽然有些命令可以省略”:”,但是为了安全与方便记忆,实用的时候推荐大家还是打上”:”把,辛苦多打下一个”:”不会引发任何血案的,我保证!^_^
 
下面是每个命令的解释:
[:] !!< command>
    执行操作系统命令,在脚本中常见,极大的增强了交互性能。
    当然,偶尔还为忘记了(或是偷懒想copy)IO文件名的程序员们提供DIR命令。
下面是例子
3> !!dir
驱动器 C 中的卷没有标签。
卷的序列号是 044A-C8D9 
C:Documents and Settingschenxie.IFLYTEK 的目录
2006-12-29 08:46    <DIR>          .
2006-12-29 08:46    <DIR>          ..
2006-12-29 08:46                 0 awstats.myvirtualhostname
2006-12-29 08:46                 0 awstats.myvirtualhostname.html
2006-12-30 16:23    <DIR>          Favorites
2006-12-02 11:49               664 intlname.ols
2006-12-31 09:10    <DIR>          My Documents
2006-12-11 14:37    <DIR>          VSWebCache
2006-10-27 15:14    <DIR>          WINDOWS
2006-12-04 17:39    <DIR>          「开始」菜单
2006-12-30 14:09    <DIR>          桌面
             3 个文件            664 字节
             8 个目录 7,063,961,600 可用字节 
:Connect server_name[instance_name] [-l timeout] [-U user_name [-P password]]
-关闭当前的连接,连接到另一个的 SQL Server实例。不指定timeout将使用SQLCMDLOGINTIMEOUT变量值。
:ed
 - 编辑当前语句缓存或上次执行的语句缓存。
   召唤编辑器来编辑缓存中的语句,默认为Edit.com。可以通过修改SQLCMDEDITOR 环境变量来改变编辑器(比如 SET SQLCMDEDITOR=notepad)。
另外提一句:不知道什么原因,我使用Edit.com之后回到sqlcmd,所有的中文都无法正确显示了具体原因也找不到,郁闷,期待高手。
:Error <filename>|STDERR|STDOUT
 - 将错误输出重定向到文件.
    若该文件已经存在,则将其截断为零字节。若该文件不可访问(由于权限或其他原因),将不会切换输出,也不会将输出发送到上次指定的目标或默认目标。默认情况下,错误输出将发送到 stderr流。
: EXIT[ (statement) ]
 - 立即退出 sqlcmd。:EXIT用法很有讲究,实用的时候请注意
:EXIT
 不执行批处理就立即退出,无返回值。:EXIT( )
 执行批处理后退出,无返回值。:EXIT(query)
 执行包括查询的批处理,返回查询的结果后退出。   Statement的值是将第一个结果行的第一列转换为 4 字节的整数(长整型)。SQL Server 保留了介于 -1 到 -99 之间的返回值;sqlcmd 定义了以下附加返回值-100:选择返回值前遇到错误。-101:选择返回值时找不到行。-102:选择返回值时发生转换错误。
在编写自动脚本的时候:EXIT很实用。
go [<n>]
 - 执行语句缓存(n 次)。示例如下:
1> select count(*) from TestTab;
 2> go 3
 -----------
  410
 (1 行受影响)
 -----------
 410
 (1 行受影响)
 -----------
  410
 (1 行受影响)
 1>:list
 - 输出语句缓存的内容。Go过之后,语句即被清掉,:list显示为空。示例如下
1> select count(*) from TestTab;
 2> :list
 select count(*) from LCS_BIZOBJECT;2> go
 -----------
 410
  (1 行受影响)
 1> :list
 1>:listvar
- 列出设置的 sqlcmd 脚本变量,方便使用sqlcmd。
:on error [exit|ignore]
- 在执行批处理或 sqlcmd 命令时应对错误的措施。
 设置在脚本或批处理执行过程中发生错误时要执行的操作。
 默认情况下,会打印错误消息。Exit: sqlcmd 退出,并显示相应的错误值。
 Ignore: sqlcmd 会忽略错误,并继续执行批处理或脚本。:out < filename >|stderr|stdout
 -将所有查询结果重定向到 filename 指定的文件、stderr 或 stdout。
 默认情况下,输出将发送到 stdout。:perftrace < filename >|stderr|stdout
 - 将计时输出重定向到文件、stderr 或 stdout。
 默认情况下,输出将发送到 stdout。:quit
 - 立即退出 sqlcmd。
:r < filename >
 - 将文件内容追加到语句缓存之后。
:reset
 - 放弃语句缓存。
:serverlist
 - 列出网络中的 SQL Server。
:setvar {variable}
 - 删除 sqlcmd 脚本变量。
:setvar < variable > <value>
 - 设置 sqlcmd 脚本变量。
   如果使用 :Setvar 定义的变量和某个环境变量同名,则使用 :Setvar 定义的变量优先。变量名中不能包含空格字符。如果脚本变量的字符串值中含有空格,请用引号将该值引起来。否则将被华丽的无视。
 如果未指定脚本变量的值,则将删除该脚本变量。
 变量名不能与变量表达式(例如 $(var))具有相同的形式