【问题标题】:Programmatically generate script for all objects in a database以编程方式为数据库中的所有对象生成脚本
【发布时间】:2010-12-14 07:44:32
【问题描述】:

对于为使用 Microsoft SQL Server 的应用程序生成设置的自动设置构建,我目前正在评估以下是否可行:

我想以编程方式(CMD 脚本或 C# 代码)在可从 Microsoft SQL Server Management Studio 2008 访问的数据库上执行函数“Generate Scripts”。

即调用一些代码并将指定数据库的所有对象(表、SP、约束等)作为 SQL 脚本。

目前,我只需要结构,不需要数据。

问题:是否有可能实现这个目标?

【问题讨论】:

    标签: c# sql sql-server scripting


    【解决方案1】:

    我编写了SMOscript,这是一个命令行工具,可以将所有对象编写到一个文件中,或者为所有对象编写一个文件。

    MSSQL 的 Generate Scripts 功能通常不考虑引用和依赖关系来确定对象的顺序(至少 2000 和 2005 是这种情况)

    【讨论】:

    • 您的代码是否适用于 SQL Server 2008?我看到它需要安装 SQL Server 2005 中的库才能工作。否则,它是一个美妙的工具。
    • 我在 2008 年定期使用 0.19 版(10.0.2531.0 SP1)
    • 当前版本不适用于 SQL Azure 数据库。并不奇怪,因为它在 SSMS 2008 R2 中的 Generate Scripts 中也不起作用,两者都以相同的错误消息结尾,关于 Index 超出了数组的范围。 (在这里查看我的问题:stackoverflow.com/questions/9622688/…
    • 在较新的 SQL Server Management Studio 版本中,“生成脚本”向导还能够为 SchemaData 生成 SQL 代码. SMOscript 也可以做到这一点吗?
    • 答案中的链接已损坏。
    【解决方案2】:

    我使用http://www.codeplex.com/ScriptDB 非常成功。

    【讨论】:

      【解决方案3】:

      您应该可以使用 SMO 在托管代码中执行此操作

      【讨论】:

        【解决方案4】:

        您可以通过 the sysobjects view 调用标准选择子句(例如使用 ADO.NET)。

        【讨论】:

          【解决方案5】:

          Microsoft 还发布了一个名为“mssql-scripter”的工具。可以在这里找到:mssql-scripter

          【讨论】:

          • 看起来棒极了!非常感谢?。
          • 这个库不再维护...谢谢微软!....
          猜你喜欢
          • 2018-04-17
          • 1970-01-01
          • 1970-01-01
          • 2011-05-13
          • 1970-01-01
          • 2012-02-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多