La première opération depuis SQLPS va être de se positionner sur l'instance sur la laquelle on souhaite travailler. Dans le cas présent cela s'effectue de la façon suivante:
Il est ensuite nécessaire d'établir la connexion entre les objets SMO et l'instance sur laquelle SQLPS est connecté.Pour cela il suffit de définir un nouvel objet de type Microsoft.SqlServer.Management.Smo.Server. Cette création ainsi que l'affichage des informations de bases du serveur est réalisé à l'aide du script suivant:
$server=New-Object Microsoft.SqlServer.Management.Smo.Server $server.Information.Version
Soit dans le cadre de l'exemple actuel:
Maintenant que l'objet $server représente le serveur courant, la création d'une table ne peut intervenir qu'àprès s'être positionné sur la base qui va contenir cette table. Pour réaliser cette opération (habituellement réalisée en Trnasact SQL avec l'instruction USE) le script suivant est exécuté:
$bdd=[Microsoft.SqlServer.Management.Smo.Database]$server.Databases["Test"]
Ici encore, il est possible de verifier la la selection de la base se déroule correctement en demandant par exemple le simple affichage de son nom de la façon suivante:
$bdd.Name
Ce qui donne dans le contexte de l'exemple:
La dernière opération consiste à créer une table. Pour cela l’objet Microsoft.SqlServer.Management.Smo.Table sera utilisé. Bien entendu avant la demande de création de table,, il est nécessaire d’y définir une ou plusieurs colonnes. Les colonnes sont représentées par des objets de type Microsoft.SqlServer.Management.Smo.Column. Le script suivant illustre la création d’une table avec une colonne de type int.
$table=New-Object Microsoft.SqlServer.Management.Smo.Table($bdd,"uneTable") $colonne1=New-Object Microsoft.SqlServer.Management.Smo.Column $colonne1.Name="code" $colonne1.Parent=$table $colonne1.DataType=([Microsoft.SqlServer.Management.Smo.DataType]::Int) $table.Columns.Add($colonne1) $table.Create()
Maintenant que les différents sont vus, il est possible de définir la table telle qu'exposée initialement. Pour définir le type identity, les propriétés Identity, IdentityIncrement et IdentitySeed serons utilisées.
# Script de creation de table $server=New-Object Microsoft.SqlServer.Management.Smo.Server $server.Information.Version # Se positionner sur la base de travail $bdd=[Microsoft.SqlServer.Management.Smo.Database]$server.Databases["Test"] $bdd.Name # Définir la structure de la table $table=New-Object Microsoft.SqlServer.Management.Smo.Table($bdd,"Individus") $table.Name #Définir la colonne id $colonne1=New-Object Microsoft.SqlServer.Management.Smo.Column $colonne1.Name="id" $colonne1.Parent=$table $colonne1.DataType=([Microsoft.SqlServer.Management.Smo.DataType]::Int) $colonne1.IdentityIncrement=1 $colonne1.IdentitySeed=1 $colonne1.Identity=$True $table.Columns.Add($colonne1) #Définir la colonne nom $colonne2=New-Object Microsoft.SqlServer.Management.Smo.Column $colonne2.Name="nom" $colonne2.Parent=$table $colonne2.DataType=([Microsoft.SqlServer.Management.Smo.DataType]::NVarchar(50)) $table.Columns.Add($colonne2) #Définir la colonne prenom $colonne3=New-Object Microsoft.SqlServer.Management.Smo.Column $colonne3.Name="prenom" $colonne3.Parent=$table $colonne3.DataType=([Microsoft.SqlServer.Management.Smo.DataType]::NVarchar(80)) $table.Columns.Add($colonne3) # Créer la table $table.Create()