问题标签 [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 回答
669 浏览

sql-server - BACPAC 导入和临时表可能存在的 BUG

我使用最新版本的 SQL Server 2016 开发人员版和 SSMS (13.0.15600.2)。

在导入bacpac包含任何临时表和任何使用“WITH SCHEMABINDING”引用它们的对象(函数。视图)的数据层应用程序 () 时可能存在错误。

完全可以将此类数据库导出到 backpac,但是在将其导入时 - 出现错误:

错误 SQL72014:.Net SqlClient 数据提供程序:消息 3729,级别 16,状态 4,第 1 行无法更改“Table2Version”,因为它被对象“BindTest”引用。错误 SQL72045:脚本执行错误。执行的脚本: ALTER TABLE [dbo].[Table2Version] SET (SYSTEM_VERSIONING = OFF);

将重现此问题的最小数据库创建脚本是:

这真的是一个错误还是我做错了什么?

0 投票
1 回答
1012 浏览

sql-server - sqlpackage.exe 部署小数据库真的很慢

我使用 VS2015 在发布模式下构建我的数据库项目,然后将生成的 .dacpac 文件复制到我的生产服务器。

然后我运行如下命令:

dacpac 大小约为 8kb。它可能包含 10 个表和一些静态数据。

然后我运行命令,它需要很长时间才能运行。用于创建初始数据库和任何升级。我估计对于这个小型数据库,运行上述命令大约需要 5 分钟。

有没有办法可以提高这个速度?

当然,在最初推出我的应用程序的过程中,我将进行一些小的更改和部署,这个时间延迟将成为一个真正的障碍。

0 投票
2 回答
511 浏览

azure - 有没有办法从 azure 数据库中删除 blob 存储凭据以允许 bacpac 本地还原?

我正在尝试从 Azure 导出 bacpac 并在 SQLEXPRESS 2016 上本地恢复它。当我尝试恢复它时,虽然我从 SSMS 中的导入数据层应用程序向导中收到以下错误:

无法导入包。

警告 SQL72012:对象 [TestBacPacDB_Data] 存在于目标中,但即使您选中了“为目标数据库中但不在源中的对象生成删除语句”复选框,它也不会被删除。

警告 SQL72012:对象 [TestBacPacDB_Log] 存在于目标中,但即使您选择了“为目标数据库中但不在源中的对象生成删除语句”,它也不会被删除

错误 SQL72014:.Net SqlClient 数据提供程序:消息 33161,级别 15,状态 1,行 1 此版本的 SQL Server 不支持无密码的数据库主密钥。错误 SQL72045:脚本执行错误。执行脚本:CREATE MASTER KEY;

经过一番挖掘,我发现已将凭据和主密钥添加到数据库中。凭据名称引用了一个 blob 存储容器,所以我想可能在某个时候设置了审核,将容器作为外部资源或类似的东西。

我想删除此凭据,以便可以在本地恢复数据库,但数据库会抛出一个错误,说明它正在使用中。我已尝试禁用 Azure 中的日志记录,但仍无法删除凭据。

我知道 Azure 有时需要时间来关闭资源,所以也许这就是原因,但我想知道是否有其他人遇到过类似的问题。

我试图避免必须为主密钥设置密码,因为我不关心本地的凭据,如以下问题:SSMS 2016 Error Importing Azure SQL v12 bacpac: master keys without password not supported

0 投票
1 回答
602 浏览

dac - 命名空间名称“Dac”在命名空间“Microsoft.SqlServer”中不存在

我正在尝试让 DacFx (latest-v17.1) 在具有 SQL Server 2014 和 VS 2013 的机器上工作。我尝试从 140/dac/bin 文件夹中手动引用 dll(我已经安装了 DacFx17.1框架)在我的控制台应用程序中。

我还在我的解决方案中尝试了以下 nuget。 https://www.nuget.org/packages/Microsoft.SqlServer.DacFx.x86/140.3652.3

但我收到以下错误..

错误 18 名称空间“Microsoft.SqlServer”中不存在类型或名称空间名称“Dac”(您是否缺少程序集引用?)

这是否意味着我将无法使用最新的 DacFx 框架?

0 投票
0 回答
393 浏览

sql-server - 升级数据层应用程序时违反 PRIMARY KEY 约束错误

我正在尝试使用数据层应用程序标准化我的数据库架构。

为此,我有一个想要应用于我的数据库的现有数据层应用程序。

在尝试升级 Data-Tier 应用程序时,我收到以下错误消息:

我尝试对数据库运行此查询,错误消息是

当前在 [dbo].[ResidencyAgent] 表中的数据是:

数据层应用程序执行脚本时出现问题的原因是该表包含复合键,因此它创建的临时表应定义如下:

有没有其他人遇到过类似的事情?如果是这样,他们是如何解决的?

有什么方法可以让数据层应用程序“意识到”这一点 - 有没有可以设置的选项?我可以编辑我用来升级数据层应用程序的 dacpac 来解决这个问题吗?

谢谢,

肖恩

0 投票
1 回答
701 浏览

azure - 有没有一种简单的方法可以在 SQL Server 2014 上本地复制 SQL Azure 数据库?

我通过 Azure 的导出选项创建了一个 bacpac 文件。

然后,我尝试将 bacpac 文件导入到我电脑上本地安装的 SQL Server 中,在 SQL Server Management Studio 中选择“<strong>Import Data-tier Application...</strong>”功能。

导入失败,因为目标版本的 sql server 与源版本不同(即从 Sql Azure 到 SQL Server 2014)。事实上,我已经在我的电脑 SQL Server 2014 上本地安装了。

要解决这个问题,我应该在Visual Studio 2017中创建一个新的 SQL Server 数据库项目,删除一些不兼容性,如下所示:

然后我应该发布项目以在本地创建一个新的数据库。

但是发布Visual Studio项目获得的新数据库是空的,所以我必须手动复制数据,导致SSMS中的导入数据功能由于列标识等问题而不起作用。

有没有一种快速简单的方法可以在我的本地 SQL Server 上创建 SQL Azure 数据库的本地副本?

谢谢

0 投票
1 回答
369 浏览

sql-server - 需要在 Visual Studio 数据库项目中明确指定 Microsoft.Data.Tools.Schema.Tasks.Sql 版本

我的情况有点复杂,希望我能正确解释:我有一个 Visual Studio 解决方案,用于构建 WiX 安装程序。除其他外,此安装程序通过 dacpac 部署 SQL DB 模式。此 dacpac 由同一解决方案中的 SQL Server 2014 项目生成。

当前,当它到达需要部署生成的 dacpac 的步骤时,安装会失败。错误如下:

这与此线程中描述的情况类似较新的 SqlPackage.exe 版本对我不起作用。

此外,部署 dacpac 文件的解决方案中的自定义操作项目绑定到 .net 4.5.1。这是一个产品限制,因此使用更新的 .net 版本对我来说也不是解决方案。

不兼容的原因是 dacpac 文件以某种方式针对较新的 Data.Tools.Schema 版本生成。从 dacpac 中的 Origin.xml 中提取:

这会导致 dacpac 文件中的 model.xml 包含部署自定义操作使用的 Microsoft.Data.Tools.Schema.Sql.Deployment 版本 12 无法理解的一些花哨的标签(如错误消息中所示)。

所以我想我唯一的解决方案是明确告诉 Visual Studio 使用 Data.Tools.Schema 的 12 版生成 dacpac 文件,而不是默认选择 14 版,但我在数据库中没有找到任何位置可以指定 Data.Tools.Schema 版本的项目属性。我想 VS 只是获得了它可以在构建机器上找到的最新 DAC 版本并基于它生成 dacpac。

有谁知道如何做到这一点?还是我目前没有看到其他解决方案?

0 投票
2 回答
1020 浏览

sql - 错误 SQL72016:无法打开登录请求的数据库 XXX。登录失败

我们面临与从本地 SQL 实例到 Azure SQL 的 bacpac 导入相关的问题。

我们在本地 SQL (DAC\140..\sqlpackage) 中生成一个 bacpac,然后将此 bacpac 导入 Azure。我们正面临这个问题:

错误 SQL72016:无法打开登录请求的数据库 XXX。登录失败

这个问题并不总是发生,我们也有这个警告:

警告 SQL0:将 SQL Server vNext CTP 指定为目标平台的项目可能会遇到与 Microsoft Azure SQL 数据库 v12 的兼容性问题。

我们如何解决这个问题?

谢谢

0 投票
0 回答
42 浏览

sql-server-data-tools - SQL Server 数据库项目允许目标平台不支持的功能

我有一个 SQL Server 数据库项目,它设置为将 SQL Server 2008 作为其目标平台。

显示 SQL Server 2008 是目标平台的图像

在我的一个存储过程中,我的代码如下:

特定的存储过程使用 SQL 2012 中引入的 datefromparts() 函数。

我的问题是,如果有人使用指定目标平台不支持的功能,我怎样才能让数据库项目不编译或创建错误?

目前,直到我们部署到使用 SQL 2008 的站点,我们才发现这个问题。

0 投票
1 回答
65 浏览

ssms - Sqlpackage 抛出错误没有详细信息

我目前正在开发一个可以轻松恢复 bacpac 文件的应用程序。不幸的是我有以下问题:Sqlpackage 抛出一个错误,它无法导入数据库,因为它包含一个或多个用户对象,但是当我使用 SSMS 恢复 bacpac 时,它给了我详细的错误消息:Invalid column IncSetCost。

sqlpackage 是否有可能在不使用 SSMS 获取详细错误消息的情况下给我相同的错误消息(例如:使用额外的命令/开关),或者是否有其他实用程序可以使用更详细的错误消息恢复 bacpac。

错误消息 sqlpackage:在此处输入图像描述 错误消息 SSMS(导入数据层)在此处输入图像描述

问候,斯特凡