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 可以搭配下列任何物件使用:
Database 物件 (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"
}
}
}
Tables 物件 (TMSL) 請參閱下列 範例 1。
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) 呼叫的語句中,以下列方式公開:
SQL Server Management Studio 中的 XMLA 視窗 (SSMS)
作為 invoke-ascmd PowerShell Cmdlet 的輸入檔
做為 SSIS 工作或 SQL Server Agent 作業的輸入
您無法從 SSMS 產生此指令的現成腳本。 相反地,您可以從範例開始,或自行撰寫。