Alter, commande (TMSL)

S’applique à : SQL Server 2016 et versions ultérieures Analysis Services Azure Analysis Services Fabric/Power BI Premium

Modifie un objet existant, mais pas ses enfants. Si l’objet n’existe pas, la commande génère une erreur.

Utilisez la commande Alter pour les mises à jour ciblées, comme la définition d’une propriété sur une table sans avoir à spécifier toutes les colonnes. Cette commande est similaire à CreateOrReplace, mais sans avoir à fournir une définition d’objet complète.

Pour les objets ayant des propriétés en lecture-écriture, si vous spécifiez une propriété en lecture-écriture, vous devez les spécifier toutes, à l’aide de valeurs nouvelles ou existantes. Vous pouvez utiliser AMO PowerShell pour obtenir une liste de propriétés.

Requête

Alter n’a pas d’attributs. Les entrées incluent l’objet à modifier, suivi de la définition de l’objet modifié.

L’exemple suivant illustre la syntaxe de modification d’une propriété sur un objet de partition. Le chemin d’accès de l’objet établit l’objet de partition à modifier via des paires nom-valeur d’objets parents. La deuxième entrée est un objet de partition qui spécifie la nouvelle valeur de propriété.

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

La structure de la requête varie en fonction de l’objet . Alter peut être utilisé avec l’un des objets suivants :

Objet de base de données (TMSL) Renommez une base de données.

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

Objet DataSources (TMSL) Renommez une connexion, qui est un objet enfant de la base de données.

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

Objet Tables (TMSL) Voir l’exemple 1 ci-dessous.

Objet Partitions (TMSL) Voir l’exemple 2 ci-dessous.

Objet Roles (TMSL) Modifier une propriété sur un objet de rôle.

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

response

Retourne un résultat vide lorsque la commande réussit. Sinon, une exception XMLA est retournée.

Exemples

Les exemples suivants illustrent le script que vous pouvez exécuter dans une fenêtre XMLA dans Management Studio ou utiliser comme entrée dans Invoke-ASCmd applet de commande dans AMO PowerShell.

Exemple 1 : ce script modifie la propriété name sur une table.

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

En supposant qu’un nom local nommé instance (instance nom est « tabulaire ») et un fichier JSON avec le script alter, cette commande remplace le nom de table DimDate par DimDate2 :

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

Exemple 2 : ce script renomme une partition, par exemple à la fin de l’année quand l’année en cours devient l’année précédente. Veillez à spécifier toutes les propriétés. Si vous laissez la source non spécifiée, toutes vos définitions de partition existantes peuvent être rompues.

Sauf si vous créez, remplacez ou modifiez l’objet de source de données lui-même, toute source de données référencée dans votre script (par exemple, dans le script de partition ci-dessous) doit être un objet DataSource existant dans votre modèle. Si vous devez modifier la source de données, procédez comme une étape distincte.

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

Utilisation (points de terminaison)

Cet élément de commande est utilisé dans une instruction de l’appel de méthode d’exécution (XMLA) sur un point de terminaison XMLA, exposé de la manière suivante :

  • En tant que fenêtre XMLA dans SQL Server Management Studio (SSMS)

  • En tant que fichier d’entrée de l’applet de commande PowerShell invoke-ascmd

  • En tant qu’entrée pour une tâche SSIS ou SQL Server Agent travail

Vous ne pouvez pas générer de script prêt à l’utilisation de cette commande à partir de SSMS. Au lieu de cela, vous pouvez commencer par un exemple ou écrire le vôtre.