Powershell: SQL Server Management Studio 脚本生成器

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

enter image description here enter image description here

我需要用Powershell进行一些脚本替换。现在我想自动化生成。有没有办法执行这个脚本生成工具(并设置一些选项,如截图中的“仅数据”)?或者(如果不可能)我能否从ps脚本自动打开此工具窗口,以便无需打开管理工作室、选择数据库等操作?我找到了一些在Powershell中“手动”构建脚本文件的脚本,但这不是我要找的东西。谢谢!

也许这个答案可以帮助你:https://dba.stackexchange.com/questions/56616/sql-server-2012-generate-scripts-from-command-line - gofr1
您可以按照所提到的SQL教程创建一个SMO(SQL Server Management Objects)项目,将数据库对象脚本化为文本文件。http://www.kodyaz.com/sql-server-tools/sql-server-management-objects-create-database-table-scripts.aspx - Eralper
嗨,谢谢你的提示和想法!我想尝试使用SMO,但遇到了问题。我认为发一篇新的问题是个好主意,我会在这里发布链接。 - C.M.
1个回答

6
这个问题已经存在一段时间了,你可能已经找到了答案,但对于那些寻找简单方法的人来说,当前版本的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。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接