sql-server – 如何使用SMO脚本程序生成sql脚本
发布时间:2020-05-24 15:46:36 所属栏目:MsSql 来源:互联网
导读:我的数据库有表格,视图和所有.我需要一种以自动方式为所有DDL生成SQL脚本的方法.不需要数据. 存在FK约束,因此应该正确地排序表创建脚本.某些视图使用另一个视图,因此还必须正确排序视图创建脚本. 从MSDN Blog上提供的脚本开始,我得到以下内容: function Gene
|
我的数据库有表格,视图和所有.我需要一种以自动方式为所有DDL生成SQL脚本的方法.不需要数据. 存在FK约束,因此应该正确地排序表创建脚本.某些视图使用另一个视图,因此还必须正确排序视图创建脚本. 从MSDN Blog上提供的脚本开始,我得到以下内容: function Generate-SqlScript
{
param(
[string]$srvname,[string]$database,[string]$ScriptOutputFileName
)
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.SMO") | out-null
$srv = New-Object ("Microsoft.SqlServer.Management.SMO.Server") ($srvname)
$allUrns = @()
$allUrns += $srv.Databases[$database].Tables | foreach { $_.Urn}
$allUrns += $srv.Databases[$database].Views | foreach { $_.Urn}
$scriptingOptions = New-Object ("Microsoft.SqlServer.Management.SMO.ScriptingOptions")
$scriptingOptions.WithDependencies = $true
$scriptingOptions.AllowSystemObjects = $false
$scriptingOptions.ToFileOnly = $true
$scriptingOptions.Permissions = $true
$scriptingOptions.FileName = "$ScriptOutputFileName"
$scripter = New-Object ("Microsoft.SqlServer.Management.SMO.Scripter") ($srv)
$scripter.Options = $scriptingOptions;
$scripter.Script($allUrns)
}
Generate-SqlScript .sqlexpress <MyDbName> <FilePath>
现在问题是,WithDependencies选项导致视图脚本包含其先前已包含的依赖表.如果我取出WithDependencies选项,生成的脚本不会反映正确的顺序. 所以最终结果包含所有信息,但它不可运行.它会引发错误,因为它无法创建表两次. 我发现有太多帖子谈论SMO脚本编写器,所以我认为必须有一些我错过的东西.或者……所有这些帖子都错过了这个问题吗? 解决方法在编写对象脚本之前,需要在PowerShell脚本中按依赖顺序发现和排序表.在以下博客中查看此实现:http://patlau.blogspot.com/2012/09/generate-sqlserver-scripts-with.html 在C#中,这个概念对我来说更清晰.查看: (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- sql中 order by 和 group by的区别
- Mysql my.ini 配置文件详解
- 分享SQL Server删除重复行的6个方法
- 迁移 – 使用带有Symfony2的doctrine2迁移多个数据库
- SQL效率 – [=] vs [in] vs [like] vs [matches]
- 在PostgreSQL的基础上创建一个MongoDB的副本的教程
- sql-server-2008 – 在sqlserver 2008中使用Geography数据类
- sql-server – 为什么方括号出现在表名中?
- DB2常用傻瓜问题1000问(四)第1/2页
- 使用Subquery vs Left Joins进行MySQL索引优化
推荐文章
站长推荐
热点阅读
