问题标签 [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.
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 有什么问题吗?
我该如何解决这个问题?
谢谢你
sql-server - SqlPackage.exe 部署的 dacpac 中创建用户导致登录失败 SqlException
问题
我正在尝试自动化 SQL 部署,包括用户和角色。当我在 Sql Management Studio 中创建用户时,它可以工作,但是当我部署 dacpack 时,我得到 SqlException: Login Failed for user 'MyUser'
描述
我在 localhost 上安装了 SQL Server 2016,同时启用了 Sql Server 和 Windows 身份验证。
我在 Visual Studio 中有带有这些文件的 Sql 数据库项目:
MyUser.sql [构建操作=构建]
/li>RolesMembership.sql [构建操作=构建]
/li>
我构建它并使用命令行部署创建的 dacpac:
/li>
当我在 sql management studio 中执行此脚本时,它可以工作。但是当我使用 SqlPackage 部署它时,它会导致
SqlException:用户“MyUser”登录失败
编辑:
我调查了生成的 sql 脚本并包含REVOKE CONNECT:
如何防止生成 REVOKE CONNECT 行
sql - 自动创建数据库比较脚本并执行
我有一种情况,我必须将我的数据库版本(模式)与我的所有客户端(可能不同的版本)进行比较,并部署必要的更改以使所有版本都相似。我正在寻找一种自动将我的数据库架构与我的客户架构进行比较、生成差异脚本并执行它以确保所有版本都相同的方法。
我知道 Red Gate 和类似工具,但问题是我需要从我的客户端获取架构(这很难获得)。
提前致谢。
sql-server - 是 SSDT 错误 - 不包括加密触发器?
我在 MSDN 论坛上问过这个问题,没有任何回应。也许这里有人可以帮助我?
我认为这是 SSDT 中的一个错误,而且很老。我已经尝试了几个版本的 SSDT 二进制文件,但问题仍然存在。SQLPackage.exe 不能正确排除触发器,尤其是在加密的情况下。情况:
- 在空数据库中创建简单表 dbo.TheTable 和加密触发器:
- 使用 SQLPackage.exe 并将该数据库提取(操作:提取)到 dacpac:
- 运行SQLPackage.exe生成脚本(Action:Script),可以使用同一个数据库:
并引发以下错误:
错误 SQL0:元素 [dbo].[trgInsTheTable] 无法部署,因为脚本正文已加密。
- 好的,现在让我们尝试只生成表 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 文件可以是任何默认值。
我在这里想念什么?
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”有影响?
我还发现了这个有趣的帖子,我想知道我是否可以通过这种方式解决它...
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,其中包含一个对我无效的路径引用的数据库引用?
escaping - 如何转义传递给 sqlpackage.exe 的 AdditionalDeploymentContributorArguments 属性中的等号字符?
sqlpackage
是 SQL Server 中与DACPAC一起使用的命令。它可以采用一个形式的参数,/p:AdditionalDeploymentContributorArguments=...
其中...
是一个分号分隔的键值列表,如下所示key1=value1;key2=value2
。我想传递一个包含=
但当我将其指定为的值:
sqlpackage
误解,我最终只通过key2
and key3
。我曾尝试使用%3D
, \=
, \\=
,\\\=
但\\\\=
没有一个有效。
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)。
有什么建议么?
sql-server - SSDT 从表定义中排除填充因子
SSDT 可以选择忽略填充因子 ( IgnoreFillFactor
)。但它实际上做的是:如果只有填充因子更改,它不会将对象标记为已更改。如果有一些额外的变化,填充因子将与这些变化一起发布。
当有人使用模式比较来比较开发数据库与数据库项目时,实际问题出现了,然后它将填充因子与其他更改(IgnoreFillFactor
在此处也不起作用)一起带到数据库项目,并通过发布应用于生产。我知道可以手动编辑数据库项目并排除填充因子,但这不是一个非常实用的解决方法。
有没有办法使用 SSDT 从表定义中完全排除填充因子?
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 构建任务来执行此操作。这让我觉得我可能正在艰难地做这件事。(但在过去的几年里,这对我来说效果很好)。我喜欢数据库项目,我喜欢它们强制引用并确保我们在删除列时不会破坏其他对象(例如)。
任何见解将不胜感激。