适用于:✅Azure 数据资源管理器
在单个数据库的范围内执行一批管理命令。
注释
在运行前选择完整的命令文本。 否则,它会在脚本中的第一个空行处停止。
小窍门
默认情况下, .execute database script 该命令始终成功。 如果希望命令在脚本中的某个命令失败时失败,请运行该命令, ThrowOnErrors 并将属性设置为 True
.execute database script with (ThrowOnErrors=true)。
Permissions
你必须至少具有数据库管理员权限才能运行此命令。
Syntax
.execute
database
script
[with(PropertyName=PropertyValue [, ...])] <|ControlCommandsScript
详细了解语法约定。
参数
| Name | 类型 | 必选 | Description |
|---|---|---|---|
| ControlCommandsScript | string |
✔️ | 包含一个或多个管理命令的文本。 |
| PropertyName、PropertyValue | string |
可选属性。 请参阅 支持的属性。 |
支持的属性
| PropertyName | 类型 | Description |
|---|---|---|
ContinueOnErrors |
bool |
如果设置为 false - 脚本在第一个错误时停止。 如果设置为 true - 脚本执行将继续。 默认值:false。 |
ThrowOnErrors |
bool |
如果设置为 true - 脚本在第一个错误上引发错误(失败)。 不能一 ContinueOnErrors起使用,只允许一个。 默认值:false。 |
退货
脚本中显示的每个命令都报告为输出表中的单独记录。 每个记录具有以下字段:
| 输出参数 | 类型 | Description |
|---|---|---|
| OperationId | guid |
命令的标识符。 |
| CommandType | string |
命令的类型。 |
| CommandText | string |
特定命令的文本。 |
| 结果 | string |
特定命令执行的结果。 |
| 原因 | string |
有关命令执行结果的详细信息。 |
注释
- 脚本文本可以包含命令之间的空行和注释。
- 命令按输入脚本中显示的顺序按顺序执行。
- 脚本执行是顺序的,但非事务性执行,并且不会在错误时执行回滚。 建议在使用
.execute database script时使用命令的幂等形式。 - 除了每个特定命令所需的权限外,执行命令还需要数据库管理员权限。
- 命令的默认行为 - 在第一个错误时失败,可以使用属性参数对其进行更改。
- 不执行只读管理命令(
.show命令),并报告状态Skipped。
小窍门
- 如果要将现有数据库“克隆”/“重复”,则此命令非常有用。 可以使用
.show database schema command现有数据库(源数据库),并使用其输出作为“.execute 数据库脚本”的 Control-commands-script 。 - 如果要“克隆”/“复制”群集,可以使用其 ARM 模板 重新创建资源。
Example
以下示例执行包含多个作的脚本,即使命令失败,仍继续执行。 该脚本创建或合并包含列T和a类型字符串的表b。 然后,它会在表上 T 设置保留策略,以在 10 天后软删除数据。 最后,它会创建或更改该SampleT1函数,该函数采用长类型的参数myLimit,并返回表中myLimit的第一T1行。 该函数是在创建期间创建的,无需验证它。
.execute database script with (ContinueOnErrors=true)
<|
//
// Create tables
.create-merge table T(a:string, b:string)
//
// Apply policies
.alter-merge table T policy retention softdelete = 10d
//
// Create functions
.create-or-alter function
with (skipvalidation = "true")
SampleT1(myLimit: long) {
T1 | take myLimit
}
| OperationId | CommandType | CommandText | 结果 | 原因 |
|---|---|---|---|---|
| 1d28531b-58c8-4023-a5d3-16fa73c06cfa | TableCreate | .create-merge table T(a:string, b:string) |
完成 | |
| 67d0ea69-baa4-419a-93d3-234c03834360 | RetentionPolicyAlter | .alter-merge table T policy retention softdelete = 10d |
完成 | |
| 0b0e8769-d4e8-4ff9-adae-071e52a650c7 | FunctionCreateOrAlter | .create-or-alter function with (skipvalidation = "true")SampleT1(myLimit: long) {T1 \| take myLimit} |
完成 |