2.9SqlCmd命令行工具程序_SQLServer2005数据库开发详解Microsoft认证考试
文章作者 100test 发表时间 2009:04:10 02:33:20
来源 100Test.Com百考试题网
2.9 SqlCmd 命令行工具程序
SQL Server 2005 提供了非常多的命令行工具程序,例如大量输出入数据的 bcp.exe、分析性能的 dta.exe、与 SSIS 相关的 dtexec.exe、dtutil.exe、与 Reporting Services 相关的 rs.exe、rsconfig.exe、rskeymgmt.exe等等。我们在此仅介绍新版增加的、利用命令提示符执行 T-SQL 语法的工具程序 SqlCmd.exe。其他的工具程序你可以参考在线帮助“工具与公共程序参考”-“命令提示符公共程序”节点下的内容。
sqlcmd 通过 OLE DB 数据访问界面与 SQL Server 数据引擎沟通,可以让用户互动地执行 SQL 语法,或是指定 T-SQL 脚本文件交互执行,可以周期性在后台批处理地执行,一些日常营运维护的工作将会需要此种方式完成。当你想要利用 SQL Server 2005 保留的“专用管理连接线(Dedicated Administrator Connection DAC)接到 SQL Server 时,也一定要通过 SqlCmd.exe 命令行工具程序。
在先前的版本若 SQL Server 实例的资源用尽,管理员无法利用任何方式创建新的连接以进入 SQL Server 实例做补救的操作,例如,杀掉一些耗资源的连接工作。在这一版可以通过 SqlCmd 使用 SQL Server 2005 保留的“专用管理员连接”,完成一些补救或清除的工作。SQL Server 2005 会为“专用管理员连接”保有专属的资源,让该条连接一定可以成功地访问 SQL Server 实例,但只保有一条连接的资源,所以你不可能同时建立两条“专用管理员连接”。
SQL Server 2005 仍完整支持前版的 osql 工具程序来连接到 SQL Server 2005。不过,必须利用 SQL Server 2005 所提供的 osql 版本来执行新的功能。若你使用 SQL Server 2000 所提供的 osql 访问 SQL Server 2005,则只能执行与旧版兼容的功能,而部分新功能将无法使用。
在通过 SqlCmd 登录与执行 T-SQL 语法之前,有相当多的选择参数可用,你可以在命令提示行输入如下的语法:
SqlCmd/?
以获得如下的参数说明画面:
图2-30 查看 SqlCmd 工具程序所提供的多种参数
从图2-30中看到 SqlCmd 工具程序可接受的参数是大小写有别的,在此举几个常用的参数列表说明如表2-3所示,至于完整的帮助,你可以参照在线帮助的“工具和公用程序参考”-“命令提示符公用程序”-“sqlcmd 公用程序”节点:
表2-3 SqlCmd 经常搭配使用的参数
参数与设置格式 |
说明 |
? |
显示如图2-30 的简单说明画面 |
A |
利用SQL Server 2005为管理者保留的“专用管理员连接(DAC)”来登录。 |
d数据库名 |
使用SQL Server信任的Windows账号来登录,不需要设置用户账号/密码,默认采用此选项。 |
E |
使用 SQL Server 信任的 Windows 账号登录需设置用户账号/密码,默认采用此选项。 |
i 输入文件名[, 文件名2...] |
设置包含SQL 表达式的纯文本文件,通过 SqlCmd 执行。可以同时指定多个文件,文件名称之间不能有空格。SqlCmd 会依照顺序来读取和处理,并在执行前先检查指定的文件是否全部存在。如果有一个以上文件不存在,sqlcmd 会结束操作。 |
O输出文件名 |
接收 sqlcmd 输出的文件。如果有指定文件 u参数,输出文件会以 Unicode 格式存储。若文件名称包含空格,必须用引号括住。如果定义了无效的文件名称,则会产生错误信息并退出执行。 |
P 密码 |
搭配 U 所指定的帐号所使用的密码。如果没有指定 -U 和 -P 这两个选项,sqlcmd 会利用当前用户的 Windows 账号来连接 SQL Server 实例。 |
Q “SQL 语法” |
功能与下面的 q 相同,只是执行完查询后会自动关闭 sqlcmd 应用程序。 |
q “SQL 语法” |
启动 sqlcmd 连线后连接查询,但查询完成不退出 sqlcmd。你可以简单地直接执行如下的语法:
sqlcmd –q “0select * from Northwind.dbo.Customers”
这代表以 SQL Server 信任的Windows 账号登录本机的默认实例,直接执行 Northwind 数据库内的 Customers 数据表查询。 |
S 服务器名[\实例名] |
指定要连接SQL Server 实例,如果未指定此选项sqlcmd 会连接本机的默认实例。 |
U SQL_Server_账号 |
指定 SQL 自身的登录账号 |
v 变量名称=“值” [ 变量名称=“值”...] |
定义 sqlcmd 所载装的脚本文件所定义的变量。如果设置值包含字元,则需要用引号括住该值。可同时指定多个 变量= “值” 的配对。如果指定的任何值发生错误,sqlcmd 会产生报错信息并退出执行。 |
进入到 SqlCmd 公用程序后,会以数字编号搭配大于符号(>)当作命令提示符。顺序创建的数字代表你曾经下了几个命令,而 GO 命令会把累积下来可执行的 SQL 命令传递到服务器端,并返回结果。简单的使用范例如图2-31所示。
图2-31 通过 SqlCmd 工具程序连接 SQL Server 实例并执行命令
在图2-31中,笔者先通过 sqlcmdeditor 环境变量设置 SqlCmd 工具程序可以调用的文字编辑程序,接着执行 SqlCmd 工具程序,以集成验证的方式登录本机默认实例后,先下一个 SQL 命令:
use northwind
接着通过 ED 命令,可以打开先前以环境变量设置的 Notepad 编辑程序。在 Notepad 内编写如图2-31中,位于 ED 之后的 SQL 命令,保存退出后