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。