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 为此命令生成现成的脚本。 相反,可以从示例开始,也可以编写自己的示例。