【问题标题】:Free Schema Export for SQL Server 2008?SQL Server 2008 的免费架构导出?
【发布时间】:2009-12-17 05:13:11
【问题描述】:

不确定这是属于这里还是属于 ServerFault,但我想知道是否有人知道导出 SQL Server 2008 架构的免费工具?它仅适用于表及其索引、外键等,它需要是一个命令行工具才能作为构建过程的一部分运行。如果它可以读取 .net 连接字符串,那就太棒了(因此有 .net 标签)

不需要数据,任何类型的版本控制/差异也是“不错,但不需要”。是的,我知道 Red-Gate 很棒的 SQL Server 工具,遗憾的是这是一个预算为 0 的爱好项目:-(

【问题讨论】:

    标签: .net sql-server sql-server-2008


    【解决方案1】:

    不确定是否有现成的工具,但使用 SMO 库(Microsoft.SqlServer.Smo、.SmoEnum、.SqlEnum)很容易做到:

    using Microsoft.SqlServer.Management.Smo;
    
    var server = new Server("localhost");
    var database = server.Databases["databaseName"];
    var transfer = new Transfer(database);
    var options = new ScriptingOptions();
    // set transfer and options object properties to reflect what you want to script:
    // i.e. all tables, indexes, triggers, etc.
    options.FileName = "c:\\temp\\databaseName_schema.sql";
    transfer.Options = options;
    transfer.ScriptTransfer();
    

    我使用这种方法构建了一个简单的工具来重新生成我的产品的数据库创建脚本,作为设置构建器中预构建步骤的一部分。

    【讨论】:

    • 仅供参考:我自己编写了其中的几个,我可以告诉您,您正在掩饰困难的部分,即正确设置选项。尤其如此,因为许多选项都特定于特定的 SQL 类型(表、触发器等),并且如果将它们保留在不适用的类型上,则会经常引发异常。
    • 不知道你的意思,RBY。我指的选项都是简单的布尔值:CopyAllDatabaseTriggersCopyAllTablesIncludeDatabaseContextWithDependencies 等。它们有很多,是的,但将 most 设置为 true 很简单,通常的例外是登录名和用户等安全对象,根据源数据库,这些对象可能包含最终脚本中不需要的条目。
    【解决方案2】:

    出于好奇,您是否尝试过在 Visual Studio 中使用 SQL Server 项目?

    另一种方法是通过 SQL 脚本,我相信您已经知道了。我认为可以使生成脚本命令在命令行中运行。

    【讨论】:

    • 我以为只有VS Team System数据库版才有,但我在Visual Studio 2008 Professional中也发现了一个“数据库项目”。我去看看,谢谢提醒!
    • T-SQL 中没有“生成脚本”命令,SQLCMD 中也没有 AFAIK。它只是 Management Studio 中的一个菜单/按钮任务(调用 SMO 来执行此操作)。但是,它可以从 Powershell (SQL 2008) 编写脚本,这可能是您所想的。
    【解决方案3】:

    您始终可以使用 SQL Server Management Studio 来执行此操作,右键单击数据库,选择“任务”,然后选择“生成脚本”。

    【讨论】:

      【解决方案4】:

      在 CodePlex 上有几个像这样的免费命令行工具。其中之一是 Scriptio,here

      【讨论】:

        【解决方案5】:

        微软几周前发布了一个名为 mssql-scripter 的新工具。它是一个免费的基于 Python 的开源命令行工具,您可以找到官方公告here。本质上,脚本程序允许您为您的数据库/数据库对象生成一个 T-SQL 脚本作为 .sql 文件。您可以生成该文件,然后执行它。这可能是您生成模式(默认选项)您的数据库及其对象(例如表和索引)以查看差异的一个很好的解决方案,因为它是生成的 .sql 文件。下面是一个快速使用示例,可​​帮助您入门:

        $ pip install mssql-scripter
        # script the database schema and data piped to a file.
        $ mssql-scripter -S localhost -d AdventureWorks -U sa > ./adventureworks.sql
        

        更多使用示例在我们的 GitHub 页面上:https://github.com/Microsoft/sql-xplat-cli/blob/dev/doc/usage_guide.md

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-02-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-19
          • 2011-07-09
          • 2011-09-24
          • 2014-02-12
          相关资源
          最近更新 更多