Share via


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"  
      }  
   }  
}  

Tables 物件 (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"  
    }   
  }   
}  

假設本機具名實例 (實例名稱為 「tabular」) ,且具有改變腳本的 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"  
        }  
    }   
  }   
}  

使用量 (端點)

此命令元素用於 Execute 方法的語句中, (XMLA) 透過 XMLA 端點呼叫,以下列方式公開:

  • SQL SERVER MANAGEMENT STUDIO (SSMS) 中的 XMLA 視窗

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

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

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