回归命令行 SQLServer的命令行工具们(2) – sqlcmd.exe(中篇)
Posted on 2006-12-31 11:17 charleschen 阅读(8216) 评论(1) 编辑 收藏 举报在了解完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 Settings\chenxie.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))具有相同的形式