适用于:SQL Server
Azure SQL 数据库
Azure SQL 托管实例
Azure Synapse Analytics
Analytics Platform System (PDW)
脚本中使用的变量称为脚本变量。 使用脚本变量,一个脚本可以应用于多个方案中。 例如,如果需要对多台服务器运行单个脚本,则可以用脚本变量来表示服务器名称,而不必为每台服务器修改脚本。 通过更改脚本变量表示的服务器名称,可以在不同的服务器上运行同一脚本。
可以使用 setvar 命令显式定义脚本变量,也可以使用 选项隐式定义脚本变量。
本文还包含有关使用 在 Cmd.exe 命令提示符下定义环境变量的示例。
setvar 命令用于定义脚本变量。 内部存储使用 setvar 命令定义的变量。 不应将脚本变量与使用 在命令提示符下定义的环境变量相混淆。 如果脚本引用的变量不是环境变量,或不是使用 setvar 定义的变量,则会返回错误消息,并将停止执行脚本。 有关详细信息,请参阅 sqlcmd中的 选项。
如果有多类变量具有相同的名称,则使用优先级最高的变量。
- 系统级环境变量
- 用户级环境变量
- 首先在命令提示符下设置命令 shell (),然后再启动 sqlcmd
使用具有相关 sqlcmd 变量的选项启动 sqlcmd 时, sqlcmd 变量将被隐式设置为使用该选项指定的值。 在下面的示例中,启动 时使用了 选项。 这会隐式设置 变量。
还可以使用 选项对脚本中的脚本变量进行设置。 在下面的脚本(文件名为 )中, 是一个脚本变量。
然后,您可以使用 选项指定要返回的列名称:
若要使用同一个脚本返回其他列,请更改 脚本变量的值。
为脚本变量命名时,请考虑以下原则:
- 变量名不能包含空格字符或引号。
- 变量名不能与变量表达式(如 $(var) )具有相同的形式。
- 脚本变量不区分大小写。
为脚本变量指定值时,请考虑以下原则:
- 如果字符串值包含空格,必须给使用 setvar 或 选项定义的变量值加上引号。
- 如果引号属于变量值的一部分,则必须对其进行转义。 例如::。
使用 定义的变量是 cmd.exe 环境的一部分并可以通过 sqlcmd 进行引用。 遵循以下指南:
- 变量名不能包含空格字符或引号。
- 变量值可包含空格或引号。
将 sqlcmd 定义的变量称为脚本变量。 下表列出了 sqlcmd 脚本变量。
1 使用 时设置 SQLCMDUSER、SQLCMDPASSWORD 和 SQLCMDSERVER。
2 R 表示该值在程序初始化过程中只能设置一次。
3 R/W 表示该值可以使用 setvar 命令重置,并且后续命令将使用新值。
许多 sqlcmd 选项可以通过在脚本内使用 setvar 命令进行控制。 在下面的示例中,创建了一个脚本 ,其中 变量设置为 秒,另一个脚本变量 设置为 。 以下是 中的代码。
然后使用 sqlcmd 调用脚本:
下面的示例说明了如何使用 命令交互式设置脚本变量。
结果集如下。
在下例中,设置了四个环境变量 然后从 sqlcmd 进行调用。
在下例中,在命令提示符下设置了用户级环境变量 ,并将其传递给了 输入文件。 若要获取用户级环境变量,请在“控制面板”中双击“系统”。 选择“高级”选项卡,然后选择“环境变量”。
下列代码位于输入文件 :
以下是在命令提示符下输入的代码:
将向输出文件 发送以下结果。
将在 sqlcmd 启动时执行 sqlcmd 启动脚本。 下面的示例设置了环境变量 。 下面是
这将在 启动时调用 文件。
这是输出。
下面的示例演示了以 sqlcmd 变量的形式处理数据。
在 (包含值 )的 中插入一行。
在 提示符下,如果没有将任何变量设置为 ,则以下语句将返回该行,并且还会返回消息:“未定义‘tablename’脚本变量”。默认情况下未设置 sqlcmd 标志 。 如果已设置 ,则 sqlcmd 将在“变量未定义”错误后终止。
结果集如下。
假设将变量 设置为 。
这些语句返回该行,并且还返回了消息:“未定义‘tablename’脚本变量”。
这些语句返回该行。
- 使用 sqlcmd 实用工具
- sqlcmd 实用工具
- 命令提示实用工具参考(数据库引擎)
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/sqlbc/51833.html