我使用集成在Microsoft SQL Server Management Studio中的脚本生成器来为整个数据库生成导入脚本。
我必须在脚本中做一些替换,我使用Powershell。现在我想自动化这一代。有没有办法执行这个脚本生成器工具(并在屏幕截图中设置一些选项 - 在我的情况下'仅限数据')?或者(如果这不可能)我可以从ps脚本自动打开此工具窗口,因此我不必打开Management Studio,选择数据库,......?
我找到了一些手动'在Powershell中构建脚本文件,但这并不是我正在寻找的。 p>
谢谢!
答案 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
。