回归命令行 SQLServer的命令行工具们(2) – sqlcmd.exe(中篇)
在了解完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流。 ?- 立即退出 sqlcmd。:EXIT用法很有讲究,实用的时候请注意 :EXIT ?? Statement的值是将第一个结果行的第一列转换为 4 字节的整数(长整型)。SQL Server 保留了介于 -1 到 -99 之间的返回值;sqlcmd 定义了以下附加返回值-100:选择返回值前遇到错误。-101:选择返回值时找不到行。-102:选择返回值时发生转换错误。 在编写自动脚本的时候:EXIT很实用。 go [<n>] ?- 执行语句缓存(n 次)。示例如下: 1> select count(*) from TestTab; :list ?- 输出语句缓存的内容。Go过之后,语句即被清掉,:list显示为空。示例如下 2> go :listvar - 列出设置的 sqlcmd 脚本变量,方便使用sqlcmd。 - 在执行批处理或 sqlcmd 命令时应对错误的措施。 Exit: sqlcmd 退出,并显示相应的错误值。 ?- 将计时输出重定向到文件、stderr 或 stdout。 :quit ?- 立即退出 sqlcmd。 :r < filename > ?- 将文件内容追加到语句缓存之后。 :reset ?- 放弃语句缓存。 :serverlist ?- 列出网络中的 SQL Server。 :setvar {variable} ?- 删除 sqlcmd 脚本变量。 :setvar < variable > <value> ?- 设置 sqlcmd 脚本变量。 ?? 如果使用 :Setvar 定义的变量和某个环境变量同名,则使用 :Setvar 定义的变量优先。变量名中不能包含空格字符。如果脚本变量的字符串值中含有空格,请用引号将该值引起来。否则将被华丽的无视。 ? From:http://www.cnblogs.com/trisaeyes/archive/2006/12/31/608708.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |