.execute database script 命令

适用于:✅Azure 数据资源管理器

在单个数据库的范围内执行一批管理命令。

注释

在运行前选择完整的命令文本。 否则,它会在脚本中的第一个空行处停止。

小窍门

默认情况下, .execute database script 该命令始终成功。 如果希望命令在脚本中的某个命令失败时失败,请运行该命令, ThrowOnErrors 并将属性设置为 True

.execute database script with (ThrowOnErrors=true)

Permissions

你必须至少具有数据库管理员权限才能运行此命令。

Syntax

.execute database script
[with(PropertyName=PropertyValue [, ...])] <|ControlCommandsScript

详细了解语法约定

https://microsoft-ce-csi.acrolinx.cloud/htmldata/en/rules/6fba4c0492df38150ba70881e2fae9640d6466a0.html

参数

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

以下示例执行包含多个作的脚本,即使命令失败,仍继续执行。 该脚本创建或合并包含列Ta类型字符串的表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} 完成