【问题标题】:Powershell: SQL Server Management Studio Script GeneratorPowershell:SQL Server Management Studio 脚本生成器
【发布时间】:2016-12-02 16:55:57
【问题描述】:

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

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

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

谢谢!

【问题讨论】:

  • 也许这个答案会对你有所帮助dba.stackexchange.com/questions/56616/…
  • 您可以创建一个 SMO(SQL Server 管理对象)项目kodyaz.com/sql-server-tools/…,如用于将数据库对象脚本化到文本文件中的参考 SQL 教程中所示。
  • 您好,感谢您的提示和想法!我想通过 SMO 尝试,但遇到了问题。我认为为此发布一个新问题是个好主意,我将在此处发布链接。

标签: sql sql-server powershell ssms


【解决方案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

【讨论】:

    猜你喜欢
    • 2012-03-14
    • 2014-02-18
    • 1970-01-01
    • 2023-01-03
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多