有一个“穷人的” RedGate的替代方案,用于编写整个数据库模式的脚本? [关闭]

StackOverflow https://stackoverflow.com/questions/169107

我遇到的情况是我要为数据库生成一个脚本,我可以在另一台服务器上运行并获得与原始数据库相同的数据库,但没有任何数据。实质上,我希望最终得到一个捕获数据库模式的大型创建脚本。

我在安装了SQL Server 2000的环境中工作,我无法安装2005客户端工具(如果他们有帮助的话)。我负担不起RedGate,但我真的希望在另一台服务器上拥有一个具有相同架构的数据库。

有什么建议吗?任何简单的.exe(无需安装)工具,技巧或T-SQL技巧都将非常受欢迎。

更新:我正在使用的数据库有200多个表和几个外键关系和约束,因此手动编写每个表并将脚本粘贴在一起并不是一个可行的选择。我正在寻找比这个手动解决方案更好的东西

其他更新除非我完全遗漏了某些内容,否则这不是使用SQL 2000工具的可行解决方案。当我选择在数据库上生成创建脚本的选项时。我最终得到一个包含CREATE DATABASE命令的脚本,并且不创建任何对象 - 表,约束等.SQL 2005的Management Studio也可以处理这些对象,但是数据库处于没有对象的环境中我可以将Management Studio的安装程序连接到它。

有帮助吗?

解决方案

运行SQL Server Management Studio,右键单击数据库,然后选择 Script Database as>创建至>文件

这适用于SQL Server 2005.SQL Server 2000企业管理器具有类似的命令。只需右键单击数据库>所有任务>生成脚本

编辑:在SQL Server 2005中,您可以选择“数据库”。在对象资源管理器窗格中,在详细信息窗格中选择多个数据库。然后,右键单击您的选择并将“脚本数据库”作为>创建至>文件&QUOT ;.这将导致它将它们全部放入一个脚本中,它将包括所有表,键,存储过程和约束。

其他提示

所以,我假设您无法安装SQL Server Management Studio。甚至没有免费版本。如果这是一次性的事情,我会安装红门工具。试用版可以使用14天。做你的工作,然后卸载。您还可以查看 http://www.xsqlsoftware.com/ ,它们具有与Red Gate类似的功能。如果您的数据库很小,那么他们可以为您提供免费选项。我也喜欢 http://www.apexsql.com/ 。 使用其中一个的试用,然后再试一次说服你的老板买一个。

除了上述答案之外,我还建议(对于未来的项目,至少)你没有掌握数据库本身的数据库设计。

实现此目的的一种方法是从第一天开始简单地将数据库表,过程等维护为“CREATE”脚本,并设计一个主脚本,将所有单个脚本拉到一起,以便部署到您选择的数据库中。

更复杂的解决方案是使用类似Visual Studio数据库版本(如果您的评论可以通过,可能太昂贵),它允许您将每个数据库对象视为项目中的节点,同时仍然允许整个只需点击几下即可部署。

对这两个选项的解释过于简化,因为还有很多其他问题 - 版本控制,数据迁移等 - 但主要原则是相同的。

在您使用其他答案之一提取脚本后,您可能需要考虑使用此脚本作为“主人”的基础。

只需将“设计”保留在数据库之外 - 这纯粹是为了“实现”。

尝试将该过程视为与开发代码类似 - 源和二进制文件是分开的,后者是从前者生成的。

我曾多次成功使用过来自CodeProject的这个程序。它不仅可以编写模式脚本,还可以(可选)编写出重新创建数据库所需的所有INSERT语句。

我过去曾用它来对抗SQL Server 2000。显然,如果表中有一百万行,那么编写内容可能不是一个好主意,但它实际上是一个非常巧妙的工具,可以创建一系列SQL脚本来复制数据库。

如果是一次性操作并且您不想自己订购对象脚本,只需下载RedGate SQL的免费试用版比较

这是14天的完整工作版本,因此它将为您完成整个工作–这是完全合法的解决方案。并且您将拥有所有脚本以供将来与您的手动脚本一起使用。无论如何,我很确定如果你发现这个工具有多方便,你会在稍后阶段购买它,这是他们可能希望通过提供全面工作试验。在我的情况下,它以某种方式工作。

请注意,一旦试用期满,它会影响所有工具,因此请务必充分利用它。

Michael Lang,当您右键单击数据库并选择创建脚本时,您需要单击几个选项框才能生成所有内容。 2005在这方面要容易得多,但2000可以做到这一点,你只需要选择合适的选项。

如果您正在寻找命令行版本, Sql Server Hosting Toolkit 过去曾为我工作过。

Microsoft数据库发布向导(在Visual Studio 2008中)。

正如您在 SQL Server 2000 中所提到的,使用的命令是:

企业管理器中选择要从中编写脚本对象的数据库,然后右键单击并选择所有任务 - >生成SQL脚本......

选项窗格中,选择为每个对象创建一个文件非常方便,您可以将每个对象分别存储在源代码管理中。

那么每当你对一个tableA做一些更新时,你可以在源代码管理中检查它,让其他人知道你在它上面工作,完成后你可以编写那个单一对象的脚本并保存检查。

要编写单个对象的脚本,您可以使用相同的选项所有任务 - >生成SQL脚本...... ,然后只选择那个对象。

该方法的唯一问题是当您想要还原完整数据库时,您需要处理依赖对象,因为顶级对象必须在依赖于它们之前恢复。

具有讽刺意味的是,当您将整个数据库编写为一个文件时,对象不是按依赖性排序,而是基于创建日期。当您尝试使用它来恢复完整的数据库时,这会导致错误。

我们最终创建了批处理文件,它将创建每个对象,分别调用“osql”

那时候一切顺利

现在我们使用 SQLCompare Pro ,它保护我们免受麻烦,但如果你不经常发布,你可以没有它。

其他是正确的,但是为了从头开始创建一个完整的数据库,您需要在运行create tables和过程脚本之前在SQL中创建一个“设备”......

使用ADODB,因为几乎每个(如果不是每个)Windows框都安装了它来执行脚本。

哎呀,你甚至可以编写一个执行vbScript来构建整个数据库。您拥有的任何域表都需要记住在将项目添加到数据库之前打开身份插入。

如果您需要,我愿意接受源代码共享。几年前我不得不写同样的东西,最后得到3个脚本,一个创建设备,然后是表,然后是过程/触发器和域数据。我编写了代码来解析默认脚本并允许用户命名他自己的数据库,登录等等。你可能不必走那么远。

希望这会有所帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top