Alter コマンド (TMSL)
適用対象:SQL Server 2016 以降の Analysis Services Azure Analysis Services Fabric/Power BI Premium
既存のオブジェクトを変更しますが、その子は変更しません。 オブジェクトが存在しない場合、コマンドはエラーを発生させます。
すべての列も指定せずにテーブルにプロパティを設定するなど、対象となる更新には Alter コマンドを使用します。 このコマンドは CreateOrReplace に似ていますが、完全なオブジェクト定義を指定する必要はありません。
読み取り/書き込みプロパティを持つオブジェクトの場合、1 つの読み取り/書き込みプロパティを指定する場合は、新規または既存の値を使用して、それらすべてを指定する必要があります。 AMO PowerShell を使用してプロパティ リストを取得できます。
要求
Alter には属性がありません。 入力には、変更するオブジェクトの後に変更されたオブジェクト定義が含まれます。
次の例は、パーティション オブジェクトのプロパティを変更するための構文を示しています。 オブジェクト パスは、親オブジェクトの名前と値のペアを使用して変更するパーティション オブジェクトを確立します。 2 番目の入力は、新しいプロパティ値を指定するパーティション オブジェクトです。
{
"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"
}
}
}
Response
コマンドが成功したときに空の結果を返します。 それ以外の場合は、XMLA 例外が返されます。
例
次の例は、Management Studio の XMLA ウィンドウで実行したり、AMO PowerShell の Invoke-ASCmd コマンドレットで入力として使用したりできるスクリプトを示しています。
例 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 エンドポイントに対する Execute メソッド (XMLA) 呼び出しのステートメントで使用されます。
SQL Server Management Studio (SSMS) の XMLA ウィンドウとして
invoke-ascmd PowerShell コマンドレットへの入力ファイルとして
SSIS タスクまたはSQL Server エージェント ジョブへの入力として
SSMS からこのコマンドの既製のスクリプトを生成することはできません。 代わりに、例から始めるか、独自の例を記述できます。