Condividi tramite


Comando Alter (TMSL)

Si applica a: SQL Server 2016 e versioni successive di Analysis Services Azure Analysis Services Fabric/Power BI Premium

Modifica un oggetto esistente, ma non i relativi elementi figlio. Se l'oggetto non esiste, il comando genera un errore.

Usare il comando Alter per gli aggiornamenti di destinazione, ad esempio impostando una proprietà in una tabella senza dover specificare anche tutte le colonne. Questo comando è simile a CreateOrReplace, ma senza il requisito di dover fornire una definizione completa dell'oggetto.

Per gli oggetti con proprietà di lettura-scrittura, se si specifica una proprietà di lettura-scrittura, sarà necessario specificare tutti, usando valori nuovi o esistenti. È possibile usare AMO PowerShell per ottenere un elenco di proprietà.

Richiesta

Alter non dispone di attributi. Gli input includono l'oggetto da modificare, seguito dalla definizione dell'oggetto modificato.

Nell'esempio seguente viene illustrata la sintassi per la modifica di una proprietà in un oggetto di partizione. Il percorso dell'oggetto stabilisce quale oggetto di partizione deve essere modificato tramite coppie nome-valore degli oggetti padre. Il secondo input è un oggetto di partizione che specifica il nuovo valore della proprietà.

{   
  "alter": {   
    "object": {   
      "database": "\<database-name>",   
      "table": "\<table-name>",   
      "partition": "\<partition-name>"   
    },   
    "partition": {   
      "name": "\<new-partition-name>",   
       . . .  << other properties   
    }   
  }   
}   

La struttura della richiesta varia in base all'oggetto . È possibile usare Alter con uno degli oggetti seguenti:

Oggetto database (TMSL) Rinominare un database.

"alter": {   
    "object": {   
      "database": "\<database-name>"  
    },   
    "database": {   
      "name": "\<new-database-name>",   
    }   
  }   

Oggetto DataSources (TMSL) Rinominare una connessione, ovvero un oggetto figlio del database.

{   
   "alter":{   
      "object":{   
         "database":"AdventureWorksTabular1200",  
         "dataSource":"SqlServer localhost AdventureworksDW2016"  
      },  
      "dataSource":{   
         "name":"A new connection name"  
      }  
   }  
}  

Oggetto Tables (TMSL) Vedere l'esempio 1 seguente.

Oggetto Partitions (TMSL) Vedere Esempio 2 di seguito.

Oggetto Ruoli (TMSL) Modificare una proprietà in un oggetto role.

{   
   "alter":{   
      "object":{   
         "database":"AdventureWorksTabular1200",  
         "role":"DataReader"  
      },  
      "role":{   
         "name":"New Name"  
      }  
   }  
}  

Risposta

Restituisce un risultato vuoto quando il comando ha esito positivo. In caso contrario, viene restituita un'eccezione XMLA.

Esempio

Negli esempi seguenti viene illustrato lo script che è possibile eseguire in una finestra XMLA in Management Studio o usare come input nel cmdlet Invoke-ASCmd in PowerShell AMO.

Esempio 1 : questo script modifica la proprietà name in una tabella.

{   
  "alter": {   
    "object": {   
      "database": "AdventureWorksDW2016",   
      "table": "DimDate"  
    },   
    "table": {   
      "name": "DimDate2"  
    }   
  }   
}  

Supponendo che un'istanza denominata locale (il nome dell'istanza sia "tabulare") e un file JSON con lo script alter, questo comando modifica un nome di tabella da DimDate a DimDate2:

invoke-ascmd -inputfile '\\my-computer\my-shared-folder\altertablename.json' -server 'localhost\Tabular'

Esempio 2 : questo script rinomina una partizione, ad esempio alla fine dell'anno quando l'anno corrente diventa l'anno precedente. Assicurarsi di specificare tutte le proprietà. Se si lascia l'origine non specificata, potrebbe interrompere tutte le definizioni di partizione esistenti.

A meno che non si stia creando, sostituendo o modificando l'oggetto origine dati stessa, qualsiasi origine dati a cui si fa riferimento nello script (ad esempio nello script di partizione seguente) deve essere un oggetto DataSource esistente nel modello. Se è necessario modificare l'origine dati, eseguire questa operazione come passaggio separato.

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

Utilizzo (endpoint)

Questo elemento di comando viene usato in un'istruzione del metodo Execute (XMLA) chiamata su un endpoint XMLA esposto nei modi seguenti:

  • Come finestra XMLA in SQL Server Management Studio (SSMS)

  • Come file di input per il cmdlet invoke-ascmd di PowerShell

  • Come input per un'attività SSIS o un processo SQL Server Agent

Non è possibile generare uno script pronto per questo comando da SSMS. È invece possibile iniziare con un esempio o scrivere il proprio.