Skip to content

Instantly share code, notes, and snippets.

@stevebauman
Created November 21, 2017 23:01
Show Gist options
  • Save stevebauman/aba7fccc0c6d5950bbbfa19ed1b5cb16 to your computer and use it in GitHub Desktop.
Save stevebauman/aba7fccc0c6d5950bbbfa19ed1b5cb16 to your computer and use it in GitHub Desktop.
Export MSSQL Stored Procedures with Powershell
# Start Script
Set-ExecutionPolicy RemoteSigned
$servername = 'SQL01';
$dbname = 'DATABASE';
$scriptpath = 'C:\Users\johndoe\Desktop\Procedures';
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | Out-Null
[System.Reflection.Assembly]::LoadWithPartialName("System.Data") | Out-Null
$srv = new-object "Microsoft.SqlServer.Management.SMO.Server" $serverName
$srv.SetDefaultInitFields([Microsoft.SqlServer.Management.SMO.View], "IsSystemObject")
$db = New-Object "Microsoft.SqlServer.Management.SMO.Database"
$db = $srv.Databases[$dbname]
$scr = New-Object "Microsoft.SqlServer.Management.Smo.Scripter"
$deptype = New-Object "Microsoft.SqlServer.Management.Smo.DependencyType"
$scr.Server = $srv
$options = New-Object "Microsoft.SqlServer.Management.SMO.ScriptingOptions"
$options.AllowSystemObjects = $false
$options.IncludeDatabaseContext = $true
$options.IncludeIfNotExists = $false
$options.ClusteredIndexes = $true
$options.Default = $true
$options.DriAll = $true
$options.Indexes = $true
$options.NonClusteredIndexes = $true
$options.IncludeHeaders = $false
$options.ToFileOnly = $true
$options.AppendToFile = $false
$options.ScriptDrops = $false
# Set options for SMO.Scripter
$scr.Options = $options
$StoredProcedures = $db.StoredProcedures | where {$_.IsSystemObject -eq $false}
Foreach ($StoredProcedure in $StoredProcedures) {
$options.FileName = $scriptpath + "\$($StoredProcedure).sql"
New-Item $options.FileName -type file -force | Out-Null
if ($StoredProcedures -ne $null) {
$scr.Script($StoredProcedure)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment