ms sql中脚本DB对象的免费实用程序
-
08-07-2019 - |
题
我正在尝试实现数据库源代码控制。
我需要的工具应该为数据库中的每个对象创建一个单独的文件,最好安排在文件夹中,如
存储过程 功能 意见 表
并且能够转储某些查询的结果会很棒,以便跟踪几个配置表中的数据更改...
我想知道是否已经有一种可以处理这种东西的工具......
-
只是为了清楚一些事情......
我已经在使用sql delta来处理更新脚本......
我想拥有数据库的脚本以便与subversion一起使用,因此我可以跟踪每次提交时更改的对象,而无需研究更新脚本......
我正在使用SQL分布式管理对象(SQL-DMO)开发一个不错的vb脚本,我会告诉它是怎么回事......
拥有自己的解决方案有什么好处,我还可以包括查询或存储过程执行的输出,跟踪某些表中的更改,服务器配置,数据库的增长,以及我可以转储到的任何内容文本文件......
没有正确的解决方案
其他提示
我使用 ScriptDB 来实现此目的。我唯一需要改变的是删除生成的文件中的脚本日期。否则,文件始终在Subversion中标记为已更改。
这是我使用的批次。 svnclient是来自codeplex svncompletesync.codeplex.com 的工具,用于将文件夹中的所有文件签入到subversion中。 :
svn checkout" http:// svn / myproject" d:\ Projekte \ db_svn \ myproject的代码>
ScriptDB" D:\ temp \ scriptdb" myserver mydb mylogin mypwd
del" D:\ Projekte \ db_svn \ myproject \ Schema Objects \\ * .sql" / q / s
xcopy" D:\ temp \ scriptdb \ myserver \ mydb \ Schema Objects \\ * .sql" “D:\ Projekte \ db_svn \ myproject \ Schema Objects” / e / y / i
svnclient" D:\ Projekte \ db_svn \ myproject" -m“commit durch svncompletesync”
如果我理解正确,你需要做两件事:首先你需要从数据库元数据(表,视图,存储过程等)生成脚本,一旦完成,你需要使用某种一致的方法用于脚本版本控制。
如果您已经在数据库中拥有了metadat和数据,我看不出会阻止您使用SQL Management Studio (或SQL企业管理器)来生成脚本来自数据库对象:请参阅如何:生成脚本(SQL Server Management Studio) )。这适用于SQL Server 2000,2005等。请记住,您可以自定义脚本生成设置,例如而不是一个巨大的脚本,您可以为每个对象使用单独的脚本。您可能需要编写一些脚本来用数据填充表格(我不确定该向导是否支持数据提取)。
获得脚本后,您可能需要在特定文件夹之间手动分发它们,完成后,您应该准备好在源代码管理中检查它们。从这一点开始,您需要确定后续数据库安装,升级和修复的方法。这是一项相当复杂的任务,涉及的时间比简单的答案要长。如果您对可能的选项感兴趣,请查看我的数据库安装程序修订帖子中提到了一些数字方法并引用了几篇文章来解决数据库版本控制(对不起自我推销,但我不想重复相同的信息)。
此字段中的大多数工具都不是免费的,但有一个开源项目, ScriptDB ,可能满足您生成脚本的需求。
这不能解决如何以正确的顺序将脚本应用于数据库的问题 - 如果您不想付费,您可能需要即兴创作。
您可以尝试 Wizardby ,这不是您要求的,但仍然可以帮助您处理数据库更改管理。它可以对数据库模式进行逆向工程(以及它的一个子集),然后编写所谓的“迁移”。在一个特殊的平台独立的DSL中:
version 20090331140131:
oxite_FileResource:
FileResourceID type => PK, primary-key => true
SiteID type => Guid, nullable => false
FileResourceName type => LongName
CreatorUserID references => oxite_User
Data type => Binary
ContentType type => AnsiString, length => 25, nullable => false
Path type => String, length => 1000, nullable => false
State type => Byte, nullable => false
CreatedDate type => DateTime, nullable => false
ModifiedDate type => DateTime, nullable => false
oxite_UserFileResourceRelationship:
UserID references => oxite_User
FileResourceID references => oxite_FileResource:
add index unique => true
index "" columns => [UserID, FileResourceID], unique => true, clustered => true