【问题标题】:Deploy content from a database-project to other database将内容从数据库项目部署到其他数据库
【发布时间】:2012-10-11 08:16:39
【问题描述】:

我在 TFS 中有一个构建定义,可以在 Visual Studio 中构建一个数据库项目。输出是一个 dbschema 和一些其他文件。 使用该 dbschema,我使用 vsdbcmd 将该数据库部署到另一台服务器。 这可以很好地部署数据库结构/架构。

是否可以将原始数据库的数据/内容也部署到其他数据库?或者也将 db-content 放在 build-definition 的输出中?

谢谢

【问题讨论】:

    标签: database visual-studio tfs vsdbcmd


    【解决方案1】:

    您可以在 DB 项目的 PostDeploy sql 脚本中包含 INSERT 语句,以生成您需要的任何数据。

    如果您想整体生成这些 INSERT 语句,您可以使用数据比较工具将有数据的数据库与没有数据的数据库进行比较,它会生成您需要的所有 INSERT 语句,然后您可以复制粘贴到部署后脚本。

    【讨论】:

    • 我可以在命令行中执行此操作吗?我希望这在构建定义中是自动的。
    • 如果你把它放在 PostDeploy 脚本中,你不需要做任何事情,它就可以工作。
    • 我的意思是,可以进行“数据比较”并在命令行中生成 INSERT 语句吗?
    • 如果数据是静态的,我建议只生成一次静态插入并将它们签入项目。如果数据发生更改并且您希望自动执行此操作,我建议使用数据生成计划(选择数据转换计划子类型),并且您需要通过可在部署时使用的连接字符串将其指向现有数据库 -是时候读取所需的数据了。
    【解决方案2】:

    我们在部署后脚本中使用 SQL 合并脚本(带有 MERGE-stmts 的脚本文件)来保持数据库中的查找表是最新的。为每个查找表创建一个脚本文件(合并 stmt)并从您的部署后脚本中引用这些文件。有时可能需要在将数据加载到查找表之前删除 FK 关系并以特定顺序加载它们。我们创建了两个脚本,一个在合并脚本之前运行,删除 FK,另一个在合并脚本之后运行,重新创建 FK。对我们来说很好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多