当前位置:Gxlcms > 数据库问题 > sqlcmd

sqlcmd

时间:2021-07-01 10:21:17 帮助过:7人阅读

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))具有相同的形式

sqlcmd

标签:command   test   get   clock   引号   ini   查询   最大   intel   

人气教程排行