在处理 DB 项目时,Visual Studio 生成了一个包含以下几行的更改脚本:
GO
SET ANSI_NULLS, ANSI_PADDING --etc.;
SET NUMERIC_ROUNDABORT OFF;
GO
:setvar DatabaseName "Foo"
:setvar DefaultFilePrefix "Foo"
:setvar DefaultDataPath ""
:setvar DefaultLogPath ""
GO
:on error exit
GO
:setvar __IsSqlCmdEnabled "True"
GO
IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True'
BEGIN
PRINT N'SQLCMD mode must be enabled to successfully execute this script.';
SET NOEXEC ON;
END
GO
USE [$(DatabaseName)];
GO
CREATE NONCLUSTERED INDEX [SomeIndex]
ON [dbo].[SomeTable]([SomeColumn] ASC);
GO
Run Code Online (Sandbox Code Playgroud)
行首的冒号有什么意义?这个 Stackoverflow 问题说冒号用于绑定变量,但是冒号有:on error exit什么作用呢?
JGA*_*JGA 11
你拥有的是一个sqlcmd脚本。
该sqlcmd实用程序允许您在命令提示符下输入 Transact-SQL 语句、系统过程和脚本文件。
并且 sqlcmd 有一些以冒号开头的 sqlcmd 特定命令。
下面是有关 sqlcmd 的一些一般信息。

您可以编写在键入后执行的 SQL 语句GO。在示例中,首先AdventureWorks2012选择数据库,然后SELECT执行 a。
但是,您也可以使用选项-i执行准备好的脚本,例如:


您还可以使用符号$(name)创建脚本变量并使用选项-v从命令提示符传递值


除了命令提示符之外,还可以通过SQLCMD mode在查询窗口中进行选择,从 SQL Server Management Studio 执行包括脚本变量在内的代码。

在这种环境中,您可以使用:SETVAR命令来设置脚本变量的值

的:ON ERROR [EXIT | IGNORE]设置在脚本或批处理执行过程中发生错误时要执行的操作。

使用该IGNORE选项时,将忽略错误并继续执行批处理或脚本。但是,会打印错误消息。

使用该EXIT选项时,执行停止并存在。
| 归档时间: |
|
| 查看次数: |
4565 次 |
| 最近记录: |