问题标签 [dacpac]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
311 浏览

sql-server - SQL Server Data Tools (SSDT) - 在部署时确定数据类型?

有没有人知道在部署时使用 SSDT / dacpac 部署来确定列的数据类型的技术,具体取决于目标 SQL Server 实例上可用的功能?具体例子:

在这种情况下,如果没有为 SQL Server 实例启用 FILESTREAM,我希望能够自动回退到传统的 VARBINARY(MAX) blob 而不是 FILESTREAM。

0 投票
0 回答
280 浏览

inno-setup - 使用 inno setup 部署数据层应用程序

我需要帮助。有一个数据层应用程序 .dacpac 需要使用 inno setup 部署在另一个用户的计算机上。脚本在目标机器上创建 SQL Server 实例,然后必须部署数据层应用程序。我认为可以使用 sqlpackage.exe,但我必须在我的安装 exe 中包含所有依赖项 ddls。还有其他方法可以部署数据层应用程序吗?

0 投票
1 回答
580 浏览

sql-server - 无法在 Visual Studio 2012 中为 dacpac 添加数据库引用 - OutOfMemoryException

我有一个 12 MB 的 dacpac,在 VisualStudio 2012 中生成需要 45 分钟。它用于生产 Microsoft Dynamics GP(以前称为 Great Plains)客户数据库。我很惊讶我能够首先创建 dacpac,但它似乎在任何开发工具(Visual Studio 2012 或 SSMS 2012)中都没用。现在我看到即使 Windows Azure 也有 5 MB 的限制(DacPac 错误太大 - 但我的文件只有 406kb)。

即使在 SSMS 2012 IDE 中,我也会收到 OutOfMemoryException。

SSMS 2012

值得一提的是,.model 临时文件增长到 1.5 GB,而 Visual Studio 2012 创建了 dacpac。

有什么想法可以在 Visual Studio 中添加数据库引用或将 dacpac 导入 SQL Server(可能分阶段)?工具可以使用的内容是否只有硬性限制?

0 投票
1 回答
1984 浏览

database-project - 我可以将带有数据的 BACPAC 导入数据库项目吗?

我有一个数据库,其中包含我想将其转换为 Visual Studio 2012 SQL 数据库项目的数据。

我尝试使用“导入-> 数据层应用程序 (*.dacpac)...” - 我没有收到任何错误,但没有导入数据(并且没有包含数据的选项)。

如何在 BACPAC 导入中包含数据?

0 投票
2 回答
2092 浏览

versioning - 如何从 DACPAC 文件中获取版本号

我使用生成的版本号从自动构建中生成 DACPAC 文件。虽然在 sqlpackager 操作期间很有用,但我需要能够在对文件执行任何操作之前确定 DACPAC 的版本号。

我可以使用什么工具(当然是自动化的)来查询 DACPAC 文件的版本号和描述?

0 投票
2 回答
4295 浏览

sql-server-2008 - 使用 SSDT Publish (.dacpac) 部署非空外键架构更新

我一直在使用 .dacpacs 将数据库更新部署到我们的各种环境中。我发现了一个导致特定更新发布失败的场景。

我需要添加一个新表dbo.Supplier并将一列添加到另一个dbo.PickZone具有引用新表的不可空外键的表中。SSDT 项目中的架构反映了这一点,为了准备新的 NOT NULL 列,我有以下预部署脚本;

上面的脚本更新架构和数据,以确保在发布时(我正在使用 sqlpackage.exe)将外键约束应用于以下内容时不会失败dbo.PickZone.SupplierId

问题在于,似乎 vs2012 Publish 和 sqlpackage.exe deploy 都准备了所需的架构更新,然后执行预部署脚本,然后执行架构更新 - 由于预部署脚本制作架构,这些更新现在不同步变化。

这会导致架构发布再次尝试添加表和列,并导致它失败。

我显然可以更改我的部署过程以在 dacpac 部署之外执行这些类型的准备脚本,但我有点希望 dacpac 负责所有架构更改......

有谁知道让 dacpac 发布以适应此类更新的方法?

0 投票
1 回答
631 浏览

database - 如何从 dacpac 中提取 dbschema

我将我的数据库项目从 VS2010 升级到 VS2012。问题是我使用生成的 dbschema 在存储过程上自动创建包装器。如何从更新的数据库项目(或生成的 .dacpac)中获取 dbschema?

0 投票
2 回答
1735 浏览

entity-framework - 如何通过 EF Model First 数据库架构升级避免数据丢失?

这是一个很长的问题,但如果我能得到一些好的建议,我将非常感激。简而言之,我正在寻找一种用于 MS SQL 数据库架构版本升级的好方法,该架构还需要将数据从已删除的表移动到新表中。

我认为 Stack Overflow 是这个问题最合适的地方(不是 dba.stackexchange.com),因为从本质上讲,这是使用 Entity Framework 的 .NET 开发人员的问题,其中的数据库部分主要由自动生成的 sql 组成脚本。


背景

.NET 应用程序和 SQL 数据库正在 Azure 中运行(辅助角色中的应用程序和 Azure SQL 中的数据库)。到目前为止,版本升级工作正常,因为所有数据库架构更改都很简单(例如添加新列)。但是,从现在开始,我还需要在升级期间处理将数据从一个表移动到另一个表的问题。(我可以通过创建一个新数据库来临时解决这个问题,使用旧数据库中的数据生成一个脚本并手动编辑脚本以使其适合新模式,但我希望有更好的方法)。

我使用实体框架,我使用模型优先。实体和关联是在 Visual Studio 数据模型设计器中定义的,这种方法非常适合我的应用程序。

我使用 dacpac 升级 Azure SQL 数据库,这种方法到现在为止效果很好(但现在我会丢失数据,所以现在我必须找到一种方法将数据移动到新表中)。

我希望我可以继续使用实体框架并在设计器中定义实体/关联,但如果需要,可以从 dacpac 升级切换到另一种技术。

升级方法到现在

  1. 我在设计器中添加新实体(表)、关联(关系)和属性(列)。
  2. 我右键单击,选择“Generate Database from Model...”,这会生成一个 .sql 脚本,该脚本会删除旧的数据库对象并创建新的数据库对象。
  3. 我创建了一个空数据库并运行脚本来创建表/键等。
  4. 在 SQL Server Management Studio 中,我右键单击数据库并选择“Tasks -> Extract Data-tier Application...”。当向导完成时,我得到了我需要的 dacpac(实际上我现在可以删除数据库,因为我创建它只是为了能够获取 dacpac 文件,因为我认为我不能在 Visual Studio 数据模型设计器中生成它) .
  5. 我右键单击 Azure SQL 数据库并选择“任务 -> 升级数据层应用程序...”并按照向导进行操作。到目前为止,我从未丢失过数据,所以效果很好!

现在的情况

这是一个说明问题的简化示例,但从现在开始,我似乎会经常遇到几乎相同的情况。看下图中新旧版本的架构。假设数据库中已经有数据。我需要 ImageFile 中的数据最终以 ImageFileOriginal 或 ImageFileProcessed 结尾,具体取决于 IsOriginal 布尔/位值。使用“升级数据层应用程序”我会收到有关数据丢失的警报。你会推荐什么方法来处理这个问题?正如我之前所说,如果需要,可以从 dacpac 升级切换到另一种技术。

旧架构 新架构

我已经阅读了 Visual Studio Database Projects、Fluent Migrator、Red Gate 和 Entity Designer Database Generation Power Pack(它不支持 Visual Studio 2012),但我没有找到一个好的方法。我承认我没有花一整天时间深入研究每种技术,但我确实花了一些时间来尝试找到一个好的方法。

0 投票
1 回答
1090 浏览

visual-studio - 部署包含多个复合数据库的数据层应用程序 (DAC) 失败

我有一个 SSDT 项目(称为 ConsumerSSDTProject),它引用一个相同服务器/不同数据库项目(包含“扩展”主服务器的存储过程;MstExtSSDTProject),以及两个对相同服务器/相同数据库项目(AddObjsSSDTProjectA 和 B)的引用。为所有项目选中包含复合对象选项。

当我使用 SSDT(版本 10.2.21208.0;SQL Server 数据工具 - 2012 年 12 月和数据层应用程序框架 - 2013 年 5 月)从 MSVS 2010 发布时,复合/引用的数据库对象也正确发布(对象已正确添加和/或更新在目标数据库或主数据库中)。

当我从 SSMS 2012 中的“部署数据终端应用程序”运行 ConsumerSSDTProject 的 DACPAC 文件时,没有部署任何复合/引用对象,这导致 ConsumerSSDTProject 中依赖于这些引用对象的对象失败。

我相信在我将数据层应用程序框架升级到 2013 年 5 月之前部署了 DACPAC 工作,但我的记忆可能是错误的,因为我使用 SSMS 向导部署已经一个多月了。

所以我的问题是:

1) SSMS 部署数据层应用程序向导的行为是否类似于 MSVS 发布者(包括复合/引用项目的部署)?

2) 如果是这样,我正在使用或未启用哪些选项、组件等以使这些功能与 DACPAC 部署一起使用?

3) 如果 DACPAC 不支持这一点,除了使用脚本,我还有什么其他选择?

谢谢!

0 投票
1 回答
1322 浏览

sql - 将 *.dacpac 导入 SQL Server 数据库项目

我在 VisualStudio 2012 中创建了一个 SQL Server 数据库项目。

有没有办法将 *.dacpac 文件从命令行导入到项目中?数据库项目必须更新到数据库的当前状态。

我知道 VS2012 的上下文菜单中有一个可用的命令,但我需要从命令行执行此操作才能自动执行此过程。

也接受导入 SQL 文件而不是 *.dacpac 文件。