使用查询编辑器编辑 SQLCMD 脚本
更新日期: 2006 年 7 月 17 日
使用 Microsoft SQL Server 查询编辑器,可以将查询作为 SQLCMD 脚本来进行编写和编辑。 查询编辑器中的 SQLCMD 脚本可以使用所有 Transact-SQL 脚本能够使用的功能。 这些功能包括:
- 颜色编码
- 执行脚本
- 源代码管理
- 分析脚本
- 显示计划
在查询编辑器中启用 SQLCMD 脚本撰写
若要使用 SQL Server 查询编辑器编写或编辑 SQLCMD 脚本,您必须启用脚本撰写模式。 默认情况下,查询编辑器中将不启用该模式。 可以通过在工具栏中单击**“SQLCMD 模式”图标或从“查询”菜单中选择“SQLCMD 模式”**来启用脚本撰写模式。 这些方法将为当前窗口启用 SQLCMD 脚本撰写。
若要将查询编辑器窗口切换到 SQLCMD 模式,请执行以下操作:
在对象资源管理器中,右键单击服务器,再单击**“新建查询”**以打开新的查询编辑器窗口。
在**“查询”菜单中,单击“SQLCMD 模式”**。
查询编辑器将在其上下文中执行 sqlcmd 语句。
在**“SQL 编辑器”工具栏的“可用数据库”**列表中,选择 AdventureWorks。
在查询编辑器窗口中,键入以下两个 Transact-SQL 语句和
!!DIR
sqlcmd 语句:SELECT DISTINCT Type FROM Sales.SpecialOffer; GO !!DIR GO SELECT ProductCategoryID, Name FROM Production.ProductCategory; GO
按 F5 执行整个 Transact-SQL 和 MS-DOS 语句的混合部分。
请注意第一个和第三个语句产生的两个 SQL 结果窗格。
在**“结果”窗格中,单击“消息”**选项卡可以查看所有三个语句产生的消息:
- (6 row(s) affected)
- <目录信息>
- (4 row(s) affected)
重要提示: |
---|
从命令行执行 sqlcmd 实用工具时,该工具允许与操作系统完全交互。 在“SQLCMD 模式”下使用查询编辑器时,必须注意不要执行交互语句。 查询编辑器无法响应操作系统提示。 |
有关如何运行 SQLCMD 的详细信息,请参阅 sqlcmd 实用工具 或学习 SQLCMD 教程。
默认启用 SQLCMD 脚本撰写
若要默认启用 SQLCMD 脚本撰写,请在**“工具”菜单中选择“选项”,展开“查询执行”和 SQL Server,单击“常规”页面,然后选中“默认情况下,在 SQLCMD 模式下打开新查询”**框。
编写和编辑 SQLCMD 脚本
启用脚本撰写模式后,可以编写 SQLCMD 命令和 Transact-SQL 语句。 下列规则适用:
- SQLCMD 命令必须是一行中的第一个语句。
- 每行只允许使用一个 SQLCMD 命令。
- SQLCMD 命令前可以添加注释或空格。
- 注释字符内的 SQLCMD 命令不会执行。
- 单行注释字符包含两个连字符 (
--)
,必须位于一行的开头。 - 操作系统命令前面必须具有两个感叹号 (
!!
)。 两个感叹号命令使其后的语句通过cmd.exe
命令处理器来执行。!!
后面的文本作为一个参数传递到cmd.exe
,因此最终的命令行将如此执行:"%SystemRoot%\system32\cmd.exe /c <text after !!>"
。 - 为了清楚地区分 SQLCMD 命令和 Transact-SQL,所有的 SQLCMD 命令都需要在前面添加冒号 (
:
)。 GO
命令可以直接使用,无需在其前面加!!:
- 查询编辑器支持环境变量和定义为 SQLCMD 脚本的一部分的变量,但不支持内置的 SQLCMD 或 osql 变量。
注意: |
---|
在常规模式和 SQLCMD 模式下,SQL Server Management Studio 使用 Microsoft .NET SqlClient 执行。 从命令行运行时,SQLCMD 将使用 OLE DB 访问接口。 由于可以应用不同的默认选项,因此在 SQL Server Management Studio SQLCMD 模式下以及在 SQLCMD 实用工具中执行相同的查询时,可能会获得不同的行为。 |
支持的 SQLCMD 语法
查询编辑器支持以下 SQLCMD 脚本关键字:
[!!:]GO[count]
!! <command>
:exit(statement)
:Quit
:r <filename>
:setvar <var> <value>
:connect server[\instance] [-l login_timeout] [-U user [-P password]]
:on error [ignore|exit]
:error <filename>|stderr|stdout
:out <filename>|stderr|stdout
注意: |
---|
对于 :error 和 :out ,stderr 和 stdout 将向消息选项卡发送输出。 |
查询编辑器不支持上面未列出的 SQLCMD 命令。 执行包含不支持的 SQLCMD 关键字的脚本时,查询编辑器会为每个不支持的关键字向目标发送一条“忽略命令 <ignored command>”消息。 脚本将成功执行,但同时忽略不支持的命令。
注意: |
---|
因为不是从命令行启动 SQLCMD,所以在 SQLCMD 模式下运行查询编辑器时会有一些限制。 不能传入命令行参数(如变量),而且,由于查询编辑器无法响应操作系统提示,因此必须注意不要执行交互语句。 |
SQLCMD 脚本中的颜色编码
启用 SQLCMD 脚本撰写后,脚本将进行颜色编码。 Transact-SQL 关键字的颜色编码将保持不变。 SQLCMD 命令用阴影背景来表示。
示例
以下示例使用 sqlcmd 语句创建名为 testoutput.txt 的输出文件,并将两个 Transact-SQL SELECT 语句与一个操作系统命令一起执行(以打印当前目录)。 结果文件包含 DIR
语句的消息输出,后面跟有 Transact-SQL 语句的结果输出。
:out C:\testoutput.txt
SELECT @@VERSION As 'Server Version'
!!DIR
!!:GO
SELECT @@SERVERNAME AS 'Server Name'
GO
请参阅
其他资源
sqlcmd 实用工具
SQL Server Management Studio 教程
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2006 年 7 月 17 日 |
|
2005 年 12 月 5 日 |
|