问题标签 [sqlpackage]

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 投票
0 回答
308 浏览

azure-sql-database - 无法部署 Azure SQL 数据库

我正在尝试通过 Powershell 使用 SQLPackage.exe(DacPack Deploy) 部署 Azure SQLDatabase。在“美国东部”地区部署 dacpack(130) 时,出现以下错误:

sqlpackage.exe : * 无法部署包。~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (* Could not deploy package.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError 无法连接到主服务器或目标服务器“TestDB”。您必须在主服务器或目标服务器“TestDB”中有一个密码相同的用户。

在“美国中南部”地区部署时,相同的数据库已成功部署,但我想在“美国东部”地区部署数据库。

安装 DacFramework(140) 后,数据库被部署。

但我想知道,Region 有什么问题吗?

我该如何解决这个问题?

谢谢你

0 投票
0 回答
1242 浏览

sql-server - SqlPackage.exe 部署的 dacpac 中创建用户导致登录失败 SqlException

问题

我正在尝试自动化 SQL 部署,包括用户和角色。当我在 Sql Management Studio 中创建用户时,它可以工作,但是当我部署 dacpack 时,我得到 SqlException: Login Failed for user 'MyUser'

描述

  1. 我在 localhost 上安装了 SQL Server 2016,同时启用了 Sql Server 和 Windows 身份验证。

  2. 我在 Visual Studio 中有带有这些文件的 Sql 数据库项目:

    • MyUser.sql [构建操作=构建]

      /li>
    • RolesMembership.sql [构建操作=构建]

      /li>
  3. 我构建它并使用命令行部署创建的 dacpac:

    /li>

当我在 sql management studio 中执行此脚本时,它可以工作。但是当我使用 SqlPackage 部署它时,它会导致

SqlException:用户“MyUser”登录失败

编辑:

我调查了生成的 sql 脚本并包含REVOKE CONNECT

如何防止生成 REVOKE CONNECT 行

0 投票
1 回答
1981 浏览

sql - 自动创建数据库比较脚本并执行

我有一种情况,我必须将我的数据库版本(模式)与我的所有客户端(可能不同的版本)进行比较,并部署必要的更改以使所有版本都相似。我正在寻找一种自动将我的数据库架构与我的客户架构进行比较、生成差异脚本并执行它以确保所有版本都相同的方法。

我知道 Red Gate 和类似工具,但问题是我需要从我的客户端获取架构(这很难获得)。

提前致谢。

0 投票
3 回答
386 浏览

sql-server - 是 SSDT 错误 - 不包括加密触发器?

我在 MSDN 论坛上问过这个问题,没有任何回应。也许这里有人可以帮助我?

我认为这是 SSDT 中的一个错误,而且很老。我已经尝试了几个版本的 SSDT 二进制文件,但问题仍然存在。SQLPackage.exe 不能正确排除触发器,尤其是在加密的情况下。情况:

  1. 在空数据库中创建简单表 dbo.TheTable 和加密触发器:
  1. 使用 SQLPackage.exe 并将该数据库提取(操作:提取)到 dacpac:
  1. 运行SQLPackage.exe生成脚本(Action:Script),可以使用同一个数据库:

并引发以下错误:

错误 SQL0:元素 [dbo].[trgInsTheTable] 无法部署,因为脚本正文已加密。

  1. 好的,现在让我们尝试只生成表 TheTable 并为此使用 /p:ExludeObjectTypes=DatabaseTriggers;ServerTriggers:

SqlPackage.exe /Action:Script /SourceFile:".\DB.dacpac" /Profile:".\Sandbox.Publish.xml" /p:CreateNewDatabase=True /OutputPath:".\DB.sql" /p:ExcludeObjectTypes=数据库触发器;服务器触发器

再次抛出上述错误。唯一但不可接受的方法是将表添加到 ExludeObjectTypes。然后排除此触发器,但与创建它的表一起。

发布 XML 文件可以是任何默认值。

我在这里想念什么?

0 投票
1 回答
405 浏览

sql-server - SqlPackage.exe -“System.StackOverflowException”

我有一系列由 TFS 代理运行的 PowerShell 脚本是构建过程的一部分。它们在多个服务器(Windows Server 2012 R2)上运行,这些服务器将一系列 DACPAC 发布到给定的数据库集。最近我将所有 TFS 构建代理更新到最新版本(TFS 2018

今天我注意到我的构建过程中的这些服务器之一不再运行,特别是由于“System.StackOverflowException”错误(非常适合这个站点),它无法运行“SqlPackage.exe”。

通过手动运行 power shell 脚本可以重现同样的问题,但仅在这台服务器上,所有其他服务器都可以正常运行。脚本如下所示:

手动运行时,调试的异常是:

Microsoft.SqlServer.TransactSql.ScriptDom.dll 中出现“System.StackOverflowException”类型的未处理异常

我真的不确定这台服务器上的什么配置会导致这种问题。资源方面,服务器非常强大,有大量可用内存,其他服务器运行得很好。我尝试了各种版本的“SqlPackage”(13, 14),但似乎没有任何效果。我已经换掉了 DacPac,但这似乎也不起作用......

有没有人见过这个问题?什么样的服务器配置会导致此类问题?

更新 1:嗯,只需切换到新的“14.0”、“SqlPackage.exe”,现在我在所有机器上都安装了它,我想知道它是否与任何真实的 dll 有关,例如我在SSDT中安装的那些。

实际上现在我想到这个,我认为这个问题是在我第一次安装 VS 2017 时在服务器上开始的,我想知道这是否对“SqlPackage.exe”有影响?

我还发现了这个有趣的帖子,我想知道我是否可以通过这种方式解决它...

0 投票
1 回答
1567 浏览

sql-server - 错误 SQL0:无法解析来自名为“MyDatabase.dacpac”的源对外部元素的引用,因为没有加载此类源

我在使用 sqlpackage.exe 或 DacFx DLL 以编程方式发布由另一个团队编译和提供的 dacpac (A) 时遇到此错误,而该团队又依赖于另一个 dacpac (B)。

我可以确认:

  • 从 A 对 B 的引用具有“禁止引用警告”为 True
  • B .dacpac 文件与 A .dacpac 文件位于同一文件夹中
  • 我尝试了 2 个不同版本的 Microsoft.SqlServer.Dac.dll,12.0.2882.1 和 14.0.3881.1
  • 两个 dacpacs 都有针对 SQL Server 2012 的设置,我正在尝试发布到 SQL Server 2012
  • 我已经尝试将IncludeCompositeObjects部署选项设置为 true 和 false

我究竟做错了什么?如何发布已编译并提供给我的 dacpac,其中包含一个对我无效的路径引用的数据库引用?

0 投票
0 回答
58 浏览

escaping - 如何转义传递给 sqlpackage.exe 的 AdditionalDeploymentContributorArguments 属性中的等号字符?

sqlpackage是 SQL Server 中与DACPAC一起使用的命令。它可以采用一个形式的参数,/p:AdditionalDeploymentContributorArguments=...其中...是一个分号分隔的键值列表,如下所示key1=value1;key2=value2。我想传递一个包含=但当我将其指定为的值:

sqlpackage误解,我最终只通过key2and key3。我曾尝试使用%3D, \=, \\=\\\=\\\\=没有一个有效。

0 投票
0 回答
518 浏览

sql-server-2012 - 无法从“...\sql\debug\database.bacpac”加载包

我已经为 SQL Server 2012 构建了我的数据库项目。我正在使用以下命令来准备部署脚本,

我收到此错误

*** 无法从“C:\some\path\DBProject\Database\sql\debug\Database.dacpac”加载包。找不到路径“C:\some\path\DBProject\Database\sql\debug\Database.dacpac”的一部分。

看来我可能有错误的数据库目标,这个错误是因为这个,但我已经验证我已经使用 SQL Server 2012 作为目标构建了项目,并且 SQLPackage.exe 也是相同的 SQL Server 版本(110)。

有什么建议么?

0 投票
0 回答
295 浏览

sql-server - SSDT 从表定义中排除填充因子

SSDT 可以选择忽略填充因子 ( IgnoreFillFactor)。但它实际上做的是:如果只有填充因子更改,它不会将对象标记为已更改。如果有一些额外的变化,填充因子将与这些变化一起发布。

当有人使用模式比较来比较开发数据库与数据库项目时,实际问题出现了,然后它将填充因子与其他更改(IgnoreFillFactor在此处也不起作用)一起带到数据库项目,并通过发布应用于生产。我知道可以手动编辑数据库项目并排除填充因子,但这不是一个非常实用的解决方法。

有没有办法使用 SSDT 从表定义中完全排除填充因子?

0 投票
2 回答
1329 浏览

tsql - SqlPackage - 如何阻止它关闭我的查询存储?

我在 Visual Studio 2017 中有一个数据库项目。我们的数据库项目的管理方式与其他任何代码库一样,多个开发人员可以根据需要更新项目。为了减轻部署的痛苦,我在我们的 TFS 2018 (vNext) 构建过程中构建了一个自定义部署任务,它是一个调用 sqlPackage.exe 的 powershell 脚本。SqlPackage 将我们编译的数据库项目(*.dacpac 文件)与我们的目标数据库(在 Dev、QA 等中)进行比较。我配置了自定义步骤,以便它将预期的更改写入磁盘,因此我记录了更改的内容,然后 sqlPackage 运行第二遍以将更改应用到预期的目标数据库。

我的 DBA 在我们的 SQL 2016 数据库中启用了查询存储。在我的 sqlPackage 部署期间,最初的步骤之一是关闭查询存储,这让我的 DBA 不高兴。他希望能够比较部署前后的更改,但如果查询存储关闭,我们就会丢失历史记录。

我已经尝试了文档中的几个开关(https://msdn.microsoft.com/en-us/library/hh550080(v=vs.103).aspx#Publish%20Parameters,%20Properties,%20and%20SQLCMD% 20Variables),但我似乎找不到神奇的参数。

如何阻止 SqlPackage 关闭查询存储?

我当前的脚本:

有没有更好的办法?我很惊讶我必须编写一个自定义的 TFS 构建任务来执行此操作。这让我觉得我可能正在艰难地做这件事。(但在过去的几年里,这对我来说效果很好)。我喜欢数据库项目,我喜欢它们强制引用并确保我们在删除列时不会破坏其他对象(例如)。

任何见解将不胜感激。