Powershell:SQL Server Management Studio脚本生成器

时间:2016-07-28 10:39:58

标签: sql sql-server powershell ssms

我使用集成在Microsoft SQL Server Management Studio中的脚本生成器来为整个数据库生成导入脚本。

enter image description here enter image description here

我必须在脚本中做一些替换,我使用Powershell。现在我想自动化这一代。有没有办法执行这个脚本生成器工具(并在屏幕截图中设置一些选项 - 在我的情况下'仅限数据')?或者(如果这不可能)我可以从ps脚本自动打开此工具窗口,因此我不必打开Management Studio,选择数据库,......?

我找到了一些手动'在Powershell中构建脚本文件,但这并不是我正在寻找的。

谢谢!

1 个答案:

答案 0 :(得分:1)

这个问题已经存在了一段时间,您现在可能已经找到了答案,但是对于那些寻求简单方法的人来说,当前版本的SQL Server Powershell模块具有支持SMO此功能的本机命令和方法。

您可以使用 Get-SqlDatabase 和诸如 .Script() .EnumScript()之类的方法。

例如,这将为用户定义的函数生成CREATE脚本并将其保存到文件:

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

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

如果要脚本数据以及诸如索引,键,触发器等元素,则必须指定脚本选项,如下所示:

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

请注意,Script()方法不支持脚本数据。将EnumScript()用于表。

如果您只想按要求编写数据脚本,则可以尝试$scriptOptions.ScriptData = $True$scriptOptions.ScriptSchema = $False