sql >> Database >  >> Database Tools >> SSMS

Powershell:SQL Server Management Studio Script Generator

Deze vraag is hier al een tijdje en je hebt waarschijnlijk je antwoord inmiddels gevonden, maar voor degenen die op zoek zijn naar een eenvoudige manier om dit te doen:de huidige versies van SQL server Powershell-modules hebben native commando's en methoden die deze functionaliteit van SMO ondersteunen.

U kunt Get-SqlDatabase . gebruiken en methoden zoals .Script() en .EnumScript().

Dit zal bijvoorbeeld CREATE-scripts genereren voor door de gebruiker gedefinieerde functies en deze opslaan in een bestand:

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

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

Als u gegevens wilt scripten en elementen zoals indexen, sleutels, triggers, enz. moet u de scriptopties als volgt specificeren:

$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"

Houd er rekening mee dat de methode Script() geen scriptgegevens ondersteunt. Gebruik EnumScript() voor tabellen.

Als u alleen gegevens wilt scripten, zoals gevraagd, kunt u $scriptOptions.ScriptData = $True proberen en $scriptOptions.ScriptSchema = $False .




  1. phpmyadmin 2002-fout voor externe server

  2. het ophalen van afbeeldingen uit de database en het weergeven van alles op een pagina

  3. MySQL:Huidige selectie bevat geen unieke kolom. De functies Rasterbewerking, selectievakje, Bewerken, Kopiëren en Verwijderen zijn niet beschikbaar

  4. Hoe bereik je hetzelfde resultaat met Mysql Joins in plaats van geneste subquery's?