SSMS
 sql >> Base de données >  >> Database Tools >> SSMS

Powershell :Générateur de scripts SQL Server Management Studio

Cette question est là depuis un moment et vous avez probablement trouvé votre réponse maintenant, mais pour ceux qui recherchent un moyen simple de le faire, les versions actuelles des modules Powershell du serveur SQL ont des commandes et des méthodes natives qui prennent en charge cette fonctionnalité de SMO.

Vous pouvez utiliser Get-SqlDatabase et des méthodes telles que .Script() et .EnumScript().

Par exemple, cela générera des scripts CREATE pour les fonctions définies par l'utilisateur et les enregistrera dans un fichier :

$Database = Get-SqlDatabase -ServerInstance $YourSqlServer -Name $YourDatabaseName

$MyFuncs = $Database.UserDefinedFunctions | Where Schema -eq "dbo"
$MyFuncs.Script() | Out-File -FilePath ".\SqlScripts\MyFunctions.sql"

Si vous souhaitez scripter des données et des éléments tels que des index, des clés, des déclencheurs, etc., vous devrez spécifier les options de script, comme ceci :

$scriptOptions = New-Object -TypeName Microsoft.SqlServer.Management.Smo.ScriptingOptions

$scriptOptions.NoCollation = $True
$scriptOptions.Indexes = $True
$scriptOptions.Triggers = $True
$scriptOptions.DriAll = $True
$scriptOptions.ScriptData = $True

$Database.Tables.EnumScript($scriptOptions) | Out-File -FilePath ".\AllMyTables.sql"

Notez que la méthode Script() ne prend pas en charge les données de script. Utilisez EnumScript() pour les tableaux.

Si vous souhaitez uniquement scripter les données, comme demandé, vous pouvez essayer $scriptOptions.ScriptData = $True et $scriptOptions.ScriptSchema = $False .