问题标签 [data-tier-applications]

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 回答
2634 浏览

sql-server - 将数据库注册为数据层应用程序 - 对 SQLPackage 的部署方式有何更改?

我的任务是创建一个自动漂移报告,以密切关注我们一些数据库的健康状况。我有这个工作并发送电子邮件等......那里没问题。

我只是担心将我们所有的实时数据库注册为数据层应用程序。

我们目前使用 SQLPackage.exe 进行部署。我打算添加

到我们使用的每个 publish.xml 文件。

现在问题来了。

这对xml文件中的其他参数有影响吗?MSDN 文档没有提及任何内容。

是否有任何我应该注意的服务器级别更改?

这可以改变我们的备份程序吗?

到目前为止,我所有的测试都表明没有。我紧张的原因是,如果我要从 Visual Studio 发布,当您勾选“注册为数据层应用程序”框时,您的其他选项将显示为灰色。让我相信它确实有所作为。

欢迎发表意见!

谢谢!

0 投票
1 回答
1092 浏览

sql-server - dacpac 可以用于管理具有大量数据的数据库吗?

我们当前的数据库接近 200MB,但是一旦应用程序上线,我们预计它会增长到很大的容量......可能是 20-30 GB 的数据。

我们计划使用“dacpac”(由数据库项目 - SSDT 生成)部署在生产服务器上。将使用许多表和查找表中的大量初始数据创建数据库。

但是,当我们将使用“dacpac”(由数据库项目 - SSDT 生成)来升级生产服务器上的数据库时,我们担心的是未来的部署。

由于我过去没有使用 dacpac 进行部署的经验,任何人都可以建议我关注以下内容 -

  1. 部署是否取决于数据量?或者,如果它仅取决于架构更改?例如,如果目标数据库是 20-30 GB,那么升级它大概需要多少时间?
  2. 我们如何对数据库模式进行版本控制?
  3. 如果出现任何问题,升级过程是否可以回滚?

最后,它是否比传统的手动编写 sql 脚本升级数据库的方式更好?

0 投票
2 回答
1962 浏览

sql-server - dacpac - CLR 程序集引用路径问题

以下是我的数据库项目中的确切场景,我正在创建 dacpac 以在目标 SQL 实例上部署数据库:

  • 数据库项目有 CLR 程序集的引用。
  • TFS构建服务器用于构建项目
  • dacpac 在 TFS 构建过程中被创建

– 当我尝试运行 sqlpackage.exe 以在我的环境中部署 dacpac(在 TFS 构建过程中生成)时,我收到一条错误消息 –</p>

*** 没有提供文件供参考 XXXX.XXXX.XXXX.dll;部署可能会失败。创建 C:\Temp\Dacpac_testing\XXX.XXXXX.XXXX.dacpac 时,原始引用文件位于 C:\BUILDS\1\XXXX\XXXX\SRC\XXXXXXXX\ASSEMBLIES\XXXX.XXXX.XXXX.dll

如何创建 dacpac 以引用部署环境中 CLR 程序集的路径(而不是在构建 dacpac 时使用的路径)

对此的任何帮助将不胜感激。

0 投票
2 回答
3264 浏览

sql-server - Dacpac 不得删除多余的列

我一直很高兴地编写一个使用 Sql Server 数据库项目的产品,并且生活一直很好,直到我们发现升级中的问题。

当我们创建表、存储过程和各种其他数据库工件时,一旦部署到客户那里,他们就可以将自己的列添加到我们的 dacpac 创建的表中。

我们正在使用 DacFx 进行部署 (Microsoft.SqlServer.Dac),并且还为坚持由其 DBA 部署的客户提供原始 dacpac。

虽然在使用 SSMS 或类似工具时问题可能仍然存在,但我确信使用“正确”的代码,我们应该能够在通过代码部署时以某种方式防止这种情况。

有没有人遇到过同样的问题并可能找到了解决方案?

更新,添加部署设置的屏幕截图。从图中可以看出,“在目标中放置对象但不在项目中”设置已关闭。

部署选项

0 投票
1 回答
438 浏览

sql-server - SQL Server 2008 R2 - DAC 地理不支持的对象

使用 SQL Server Management Studio,我试图通过右键单击db -> Tasks -> Extract Data-Tier Application. 当我进入验证和摘要屏幕时,我收到一些错误,因为不支持 sql 空间数据类型。我读过这篇文章,它列出了SQL Server Data TypesDAC 中支持的和不支持的空间类型。是否有解决方法,以便我可以在我的表中创建具有 SQL 空间数据类型的 DACPAC?

这是向导中显示的错误:

0 投票
3 回答
4780 浏览

sql-server - bacpac 还原到 SQL Server 的内存使用情况

我刚刚将.bacpac文件还原到本地 SQL 服务器实例(64b v12.0.4213),备份来自 azure sql 实例。

它失败了几次,出现 OOM 异常。我关闭了我机器上的所有东西,在还原结束时,SQL 服务器服务实例从一个 700MB 的文件中消耗了 13GB 的内存!

恢复幸运地完成了,但似乎内存没有被释放/垃圾收集。在我写这篇文章时,它仍然是 12GB。

这是一个已知问题吗?有什么方法可以恢复.bacpac并选择要忽略的表?您可以通过正常的数据恢复来做到这一点,最令人反感的表是 dbo.[Logs] 表,obvs。

0 投票
0 回答
114 浏览

asp.net - 将 SignalR 与数据层应用程序框架 (DACFx) 一起使用:如何配置和控制数据库更改

我正在尝试为使用 SignalR 的现有数据库和 Web 应用程序开发一个可行的 CI/部署过程。应用程序架构非常复杂,有多个组件监视数据库的变化。

我希望能够使用数据层应用程序框架 (DACFx) 来部署 DACPAC 文件并使用注册过程来检测对数据库架构的进程外更改。目前,因为 SignalR 修改了数据库,所以这是不可能的。

我正在尝试确定是否可以将 SignalR 与数据层应用程序一起成功使用,不必求助于手动将 SignalR 表添加到架构中。

我在每个组件的 Startup.cs 中使用了类似于以下的SignalR代码:

在我的 Web.config 或 app.config 中,我有一个“SignalR”连接字符串,它指向与主应用程序不同的数据库。例如,“MyApp”用于应用程序数据,“SignalR”用于 SignalR 数据。

我的理解是,以这种方式配置 SignalR 时,它将创建:

  1. 用于跟踪连接的数据库表。
  2. 对数据库和相关联的清理 SP 的服务订阅。

我遇到的问题是数据库表是在我的主应用程序数据库中创建的,而且 SignalR 似乎没有提供用于取消注册服务的 API。

我做对了吗 - SignalR 是在创建服务订阅还是其他什么?

发生了什么事 - 为什么我的配置被忽略?

是否可以以一种优雅的方式进行清理,或者我是否需要在部署期间手动删除服务订阅?

0 投票
1 回答
113 浏览

sql-server - 数据层应用程序 - 手动表更改

假设我将我的数据层应用程序注册到 SQL Server 2014。有没有办法可以禁用手动更改表?所以我可以强制开发人员发布新版本的数据层应用程序,而不是手动更改数据库中的任何表吗?

当我绕过数据层升级手动更改某些内容时,数据层应用程序如何变化?

我的问题的重点是:有人可以为绕过数据层升级的客户直接向表中添加一列。这意味着我们在视觉工作室中的项目将过时。我想强制任何人仅通过数据层升级来更改数据库。

谢谢 :)

0 投票
1 回答
92 浏览

vb.net - Dacpac 没有通过代码正确升级

我们有一个中央数据库,需要升级我们的本地数据库。我们正在使用 dacpac 来执行此操作。基本上我们对服务器上的数据库进行更改。然后我们创建一个 dacpac。它被放入部署包中。当客户端运行应用程序时,它会检查是否有新版本。如果有,它将升级。问题是我们有。当您在不升级 dacpac 的情况下进行本地数据库更改时,它会导致警告说除了 dacpac 之外已经进行了更改。因此,当它升级 dacpac(通过 vb.net 代码完成)时,它完成了该过程,但实际上并没有做任何更改。基本上跳过一切

我的代码如下

If _package.Version <> databaseVersion Then

我注意到如果我手动进入 SSMS 并尝试升级。它提示我数据库已更改并单击继续,尽管可能会丢失数据。如果我这样做,它将手动工作。但是通过代码它似乎仍然没有升级,即使我有 blockonpossibledataloss=false

我能做些什么来解决这个问题?

0 投票
0 回答
516 浏览

c# - 从 C# 代码以编程方式与 Visual Studio 数据库项目交互

如何通过 C# 代码以编程方式与Visual Studio 数据库项目进行交互?我想做以下事情:

  • 给定一个实时数据库,创建一个表示该数据库架构的数据库项目
  • 给定一个现有的数据库项目和一个实时数据库,更新数据库项目以反映数据库的模式

我对Data-Tier Application Framework的组件非常熟悉,但是我找不到任何东西来处理这些类型的任务。有没有人对这类工作流程有任何经验?是否有可能公开这些功能的 Visual Studio 框架?

编辑:我看到有人投票结束这个问题,因为它“太宽泛”。如果有人在解释这个问题时遇到困难,请参阅我上面的要点。我想完成两项非常具体的任务。