共用方式為


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

Partitions 物件 (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) 呼叫的語句中,以下列方式公開:

  • SQL Server Management Studio 中的 XMLA 視窗 (SSMS)

  • 作為 invoke-ascmd PowerShell Cmdlet 的輸入檔

  • 做為 SSIS 工作或 SQL Server Agent 作業的輸入

您無法從 SSMS 產生此指令的現成腳本。 相反地,您可以從範例開始,或自行撰寫。