Powershell:SQL Server Management Studio 脚本生成器

C.M*_*.M. 3 sql sql-server powershell ssms

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

在此处输入图片说明 在此处输入图片说明

我必须在我用 Powershell 做的脚本中做一些替换。现在我想自动化生成。有没有办法完全执行这个脚本生成器工具(并在屏幕截图上设置一些选项 - 在我的情况下为“仅数据”)?或者(如果这是不可能的)我可以从 ps 脚本自动打开这个工具窗口,这样我就不必打开管理工作室,选择数据库,......?

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

谢谢!

小智 5

这个问题已经存在一段时间了,您现在可能已经找到了答案,但是对于那些正在寻找一种简单方法来执行此操作的人,当前版本的 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"
Run Code Online (Sandbox Code Playgroud)

如果要编写数据和元素(如索引、键、触发器等),则必须指定脚本选项,如下所示:

$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"
Run Code Online (Sandbox Code Playgroud)

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

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