【问题标题】:import a dbschema or dacpac ignoring all errors导入 dbschema 或 dacpac 忽略所有错误
【发布时间】:2012-11-19 04:27:32
【问题描述】:

我们使用 Visual Studio 数据库项目已有一段时间了,它们非常适合部署。我们已经开始将不同环境中数据库的当前状态捕获为 dbschema 或 dacpac 文件,以便我们可以在其他数据库项目中引用它们,这样我们就可以在没有生产访问权限的情况下查看生产模式的状态。

我经常想从源代码管理中获取 dbschema 或 dacpac,并在我的本地 sql 服务器上创建该模式,但由于用户存在于一个环境中而不是我的本地环境中,几乎总是会出现错误。如果我忽略用户对象类型,如果其他任何内容引用用户(如模式),我仍然会收到错误。

我看到了创建服务器项目来处理这种情况的建议,但我不想为此创建任何自定义的东西,因为我的任务是为我们的开发人员创建一个通用工具。我希望能够采用任何 dbschema 或 dacpac 并以“尽力而为”的方式导入它。

我知道这在大多数情况下会很危险,但在我的本地数据库上,我几乎从不关心是否存在数据丢失或其他严重错误。我只想要一种快速的方法来获取本地实例上 dbschema 中的有效对象。

【问题讨论】:

    标签: sql-server visual-studio-2010 database-project


    【解决方案1】:

    我知道您正在处理的确切问题。在 VS2010 中,当您使用 dbschema 文件时,我不相信除了创建服务器项目(如您所说)之外还有其他方法可以做到这一点。但是,您可以进行架构比较并选择不比较用户/登录名,我相信。

    我一直在我的最新项目中使用 2012 SSDT,直到我读到你的问题才意识到这个错误消失了。当我导入现有数据库时,似乎没有使用它导入用户。因此,当我发布项目时,它没有部署任何用户。有趣的是,如果您进行模式比较,您可以选择比较用户并部署它们。但是,如果您通过项目发布(我假设是使用 SqlProject.exe 发布),则不会触及用户,即使您选中 Drop Objects in Target 项目中不存在。

    然后我的建议是升级到最新版本的数据库项目(适用于 2010 和 2012),不要在项目中包含用户并使用 SqlPackage.exe 发布。

    希望这有帮助, 标记

    【讨论】:

    • 同时让我解决这个问题的是从生成的脚本中删除告诉 sqlcmd 出错退出的行。然后脚本继续创建我需要的所有对象,当用户不存在时忽略错误。
    猜你喜欢
    • 1970-01-01
    • 2012-07-01
    • 2017-05-29
    • 2023-01-22
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多