Alter 命令 (TMSL)
适用于:SQL Server 2016 及更高版本的 Analysis Services Azure Analysis Services Fabric/Power BI Premium
更改现有对象,但不更改其子对象。 如果该对象不存在,该命令将引发错误。
对目标更新使用 Alter 命令,例如在表上设置属性,而无需指定所有列。 此命令类似于 CreateOrReplace,但无需提供完整的对象定义。
对于具有读写属性的对象,如果指定一个读写属性,则需要使用新的或现有的值来指定所有这些属性。 可以使用 AMO PowerShell 获取属性列表。
请求
Alter 没有任何属性。 输入包括要更改的对象,后跟修改的对象定义。
以下示例演示了更改分区对象上的属性的语法。 对象路径确定要通过父对象的名称/值对来更改哪个分区对象。 第二个输入是指定新属性值的分区对象。
{
"alter": {
"object": {
"database": "\<database-name>",
"table": "\<table-name>",
"partition": "\<partition-name>"
},
"partition": {
"name": "\<new-partition-name>",
. . . << other properties
}
}
}
请求的结构因 对象而异。 Alter 可与以下任何对象一起使用:
数据库对象 (TMSL) 重命名数据库。
"alter": {
"object": {
"database": "\<database-name>"
},
"database": {
"name": "\<new-database-name>",
}
}
DATASources 对象 (TMSL) 重命名连接,该连接是数据库的子对象。
{
"alter":{
"object":{
"database":"AdventureWorksTabular1200",
"dataSource":"SqlServer localhost AdventureworksDW2016"
},
"dataSource":{
"name":"A new connection name"
}
}
}
TMSL) (表对象 请参阅下面的示例 1 。
分区对象 (TMSL) 请参阅下面的示例 2 。
ROLES 对象 (TMSL) 更改角色对象的属性。
{
"alter":{
"object":{
"database":"AdventureWorksTabular1200",
"role":"DataReader"
},
"role":{
"name":"New Name"
}
}
}
响应
命令成功时返回空结果。 否则,将返回 XMLA 异常。
示例
以下示例演示可在 Management Studio 的 XMLA 窗口中运行的脚本,或者在 AMO PowerShell Invoke-ASCmd cmdlet 中用作输入。
示例 1 - 此脚本更改表的 name 属性。
{
"alter": {
"object": {
"database": "AdventureWorksDW2016",
"table": "DimDate"
},
"table": {
"name": "DimDate2"
}
}
}
假设本地命名实例 (实例名称为“表格”) 且包含更改脚本的 JSON 文件,此命令将表名从 DimDate 更改为 DimDate2:
invoke-ascmd -inputfile '\\my-computer\my-shared-folder\altertablename.json' -server 'localhost\Tabular'
示例 2 -- 此脚本重命名分区,例如,当当前年份变为上一年时,在年底。 请务必指定所有属性。 如果未指定 源 ,则可能会破坏所有现有的分区定义。
除非创建、替换或更改数据源对象本身,否则在脚本 (中引用的任何数据源(例如下面的分区脚本中) 必须是模型中的现有 DataSource 对象。 如果需要更改数据源,请单独执行此操作。
{
"alter": {
"object": {
"database": "InternetSales",
"table": "DimDate",
"partition": "CurrentYear"
},
"partition": {
"name": "Year2009",
"source": {
"query": "SELECT [dbo].[DimDate].* FROM [dbo].[DimDate] WHERE [dbo].[DimDate].CalendarYear = 2009",
"dataSource": "SqlServer localhost AdventureworksDW2016"
}
}
}
}
使用情况 (终结点)
此命令元素用于通过 XMLA 终结点 (XMLA) 调用的 Execute 方法的语句中,以下列方式公开:
作为 SQL Server Management Studio (SSMS) 中的 XMLA 窗口
作为 invoke-ascmd PowerShell cmdlet 的输入文件
作为 SSIS 任务或SQL Server 代理作业的输入
无法从 SSMS 为此命令生成现成的脚本。 相反,可以从示例开始,也可以编写自己的示例。