Alter-Befehl (TMSL)
Gilt für: SQL Server 2016 und höher Analysis Services
Azure Analysis Services
Power BI Premium
Ändert ein vorhandenes Objekt, aber nicht seine untergeordneten Elemente. Wenn das Objekt nicht vorhanden ist, löst der Befehl einen Fehler aus.
Verwenden Sie den Befehl Alter für gezielte Updates, z. B. das Festlegen einer Eigenschaft für eine Tabelle, ohne dass auch alle Spalten angegeben werden müssen. Dieser Befehl ähnelt CreateOrReplace, muss jedoch keine vollständige Objektdefinition bereitstellen.
Wenn Sie für Objekte mit Lese-/Schreibeigenschaften eine Lese-/Schreibeigenschaft angeben, müssen Sie alle eigenschaften mit neuen oder vorhandenen Werten angeben. Sie können AMO PowerShell verwenden, um eine Eigenschaftenliste abzurufen.
Anforderung
Alter weist keine Attribute auf. Eingaben enthalten das objekt, das geändert werden soll, gefolgt von der geänderten Objektdefinition.
Das folgende Beispiel veranschaulicht die Syntax zum Ändern einer Eigenschaft für ein Partitionsobjekt. Der Objektpfad legt fest, welches Partitionsobjekt über Name-Wert-Paare übergeordneter Objekte geändert werden soll. Die zweite Eingabe ist ein Partitionsobjekt, das den neuen Eigenschaftswert angibt.
{
"alter": {
"object": {
"database": "\<database-name>",
"table": "\<table-name>",
"partition": "\<partition-name>"
},
"partition": {
"name": "\<new-partition-name>",
. . . << other properties
}
}
}
Die Struktur der Anforderung variiert je nach Objekt. Alter kann mit einem der folgenden Objekte verwendet werden:
Datenbankobjekt (TMSL) Benennen Sie eine Datenbank um.
"alter": {
"object": {
"database": "\<database-name>"
},
"database": {
"name": "\<new-database-name>",
}
}
DataSources-Objekt (TMSL) Benennen Sie eine Verbindung um, bei der es sich um ein untergeordnetes Objekt der Datenbank handelt.
{
"alter":{
"object":{
"database":"AdventureWorksTabular1200",
"dataSource":"SqlServer localhost AdventureworksDW2016"
},
"dataSource":{
"name":"A new connection name"
}
}
}
Tables-Objekt (TMSL) Siehe Beispiel 1 weiter unten.
Partitions-Objekt (TMSL) Siehe Beispiel 2 weiter unten.
Roles-Objekt (TMSL) Ändern einer Eigenschaft für ein Rollenobjekt.
{
"alter":{
"object":{
"database":"AdventureWorksTabular1200",
"role":"DataReader"
},
"role":{
"name":"New Name"
}
}
}
Antwort
Gibt ein leeres Ergebnis zurück, wenn der Befehl erfolgreich ausgeführt wird. Andernfalls wird eine XMLA-Ausnahme zurückgegeben.
Beispiele
Die folgenden Beispiele veranschaulichen das Skript, das Sie in einem XMLA-Fenster in Management Studio ausführen oder als Eingabe in Invoke-ASCmd Cmdlet in AMO PowerShell verwenden können.
Beispiel 1 : Dieses Skript ändert die Name-Eigenschaft für eine Tabelle.
{
"alter": {
"object": {
"database": "AdventureWorksDW2016",
"table": "DimDate"
},
"table": {
"name": "DimDate2"
}
}
}
Angenommen, eine lokale benannte Instanz (Instanzname ist "tabellarisch") und eine JSON-Datei mit dem Alter-Skript, ändert dieser Befehl einen Tabellennamen von DimDate in DimDate2:
invoke-ascmd -inputfile '\\my-computer\my-shared-folder\altertablename.json' -server 'localhost\Tabular'
Beispiel 2 : Dieses Skript benennt eine Partition um, z. B. am Jahresende, wenn das aktuelle Jahr zum vorherigen Jahr wird. Achten Sie darauf, alle Eigenschaften anzugeben. Wenn Sie die Quelle nicht angegeben lassen, kann dies alle vorhandenen Partitionsdefinitionen unterbrechen.
Sofern Sie das Datenquellenobjekt selbst nicht erstellen, ersetzen oder ändern, muss jede Datenquelle, auf die in Ihrem Skript verwiesen wird (z. B. im Partitionsskript unten), ein vorhandenes DataSource-Objekt in Ihrem Modell sein. Wenn Sie die Datenquelle ändern müssen, tun Sie dies in einem separaten Schritt.
{
"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"
}
}
}
}
Verwendung (Endpunkte)
Dieses Befehlselement wird in einer Anweisung des XMLA-Aufrufs (Execute Method) über einen XMLA-Endpunkt verwendet, der auf folgende Weise verfügbar gemacht wird:
Als XMLA-Fenster in SQL Server Management Studio (SSMS)
Als Eingabedatei für das PowerShell-Cmdlet invoke-ascmd
Als Eingabe für einen SSIS-Task oder SQL Server-Agent Auftrag
Sie können kein vorgefertigtes Skript für diesen Befehl aus SSMS generieren. Stattdessen können Sie mit einem Beispiel beginnen oder Eigenes schreiben.