问题标签 [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 - 无法使用 sqlpackage.exe 将 DACPAC 发布到 Azure SQL 数据库
尝试将 DACPAC 应用于 Azure SQL 数据库时,我从 sqlpackage.exe 获得以下信息:
*** 生成部署计划时出错。部署无法继续。Element 或 Annotation 类 SqlDatabaseOptions 不包含 Property 类 CatalogCollation。
我已经设法将 VS2017 与 SSDT 一起使用来创建一个包,然后使用 SQL Server 对象资源管理器将其部署到另一个数据库,但是当我使用 sqlpackage.exe 时它失败了
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130
Azure SQL 数据库兼容级别设置为 140,所以我不确定 SSDT (v 15.6.0) 是否使用更现代的 sqlpacakage.exe 版本,或者我在哪里可以找到它?我还尝试从 Azure SQL 数据库部署 VSTS 任务运行它并获得相同的结果。
我已经尝试映射在此窗口中找到的命令行开关,但我仍然得到同样的错误。
是否有 SSDT 正在使用的我找不到的 sqlpackage.exe 版本,或者它是我缺少的参数?
作为参考,这是我正在使用的命令:
C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\130>sqlpackage.exe /SourceFile:"generated.dacpac" /Action:Publish /TargetServerName:"xxxxxxx.database .windows.net" /TargetDatabaseName:"xxxxxxx" /TargetUser:"xxxxxx" /TargetPassword:"xxxxxxx" /TargetTimeout:120
powershell - SqlPackage.exe - 将 Azure Db 导出到 Blob 存储
您可以使用 sqlpackage.exe 触发导出数据库到 BLOB 存储吗?
令人惊讶的是,我找不到任何关于这样做的参考。"sqlpackage /a:export" 的参数没有任何指定 blob 存储的参数,只有 File|Memory。
现在我们正在使用 Powershell AzureRm 组件,我们必须在其中发出请求,然后循环获取状态。这适用于导出正常,但发现状态检查请求不稳定,因此它会定期中断脚本的整体进度。
sqlpackage.exe 调用将是一个阻塞调用,它将消除对额外错误处理逻辑的需要。
感谢您的任何见解
visual-studio-2015 - 如何让 SSDT Publish 不生成 REVOKE CONNECT 脚本
我们已经开始使用 SSDT 来管理我们的脚本部署。最初我们使用 Schema Compare 并取消选中我们不想部署的部分。我们现在需要使用仅包含在发布功能中的 Pre 和 Post-Deploy 脚本,并且我们也在尝试清理我们排除的部分。
在 Publish 中添加了 2 个未在 Schema Compare 中的差异,即使设置尽可能接近,我似乎也无法弄清楚。
第一个是 Publish 脚本想要删除 dacpac 中不存在的表的统计信息,即使DropStatisticsNotInSource
设置为 false。我能够根据SSDT/SqlPackage drop statistics中的 DeploymentFilterContributor 答案解决此问题。
第二个继续难倒我。大多数应用程序安全性是通过授予角色和各种系统帐户成为成员,具体取决于环境,但是也有用户不在开发数据库中的角色(通常是管理员,但也有具有各种权限的实用程序)。我们在不同的环境中有不同的用户。我的长期目标是只让用户担任角色,但我们还没有实现。与此同时,我们需要排除用户被丢弃。我从设置Exclude Users
,开始ExcludeLogins
,ExcludeRoleMembership
这是我们在 Schema Compare 中使用的,效果很好。然而,在 Publish 脚本中,我们得到了REVOKE CONNECT
脚本(但不是DROP LOGIN
or DROP USER
)。
我已经阅读了使用 SqlPackage.exe 发布 DACPAC 时防止删除用户并在 SqlPackage.exe 部署的 dacpac 中创建用户导致登录失败 SqlException(这似乎是一个类似的脚本结果,具有不同的目标,也没有答案)。我尝试将AgileSqlClub.DeploymentFilterContributor与IgnoreType(Login)
, IgnoreType(User)
, IgnoreType(RoleMembership)
, 以及IgnoreType(Permissions)
,一起使用IgnoreSecurity
。前3个没有效果。最后 2 个(我还尝试了等效的 SSDT 配置选项)还删除GRANT
了我想针对 db 角色包含的脚本。
我觉得我应该能够做到这一点,而无需创建自定义DeploymentContributor
并且无需在部署后为所有这些用户编写脚本。我怎样才能摆脱这些REVOKE CONNECT
电话?
此外,如果有人知道 Visual Studio 是否实际上在其路径中调用 SqlPackage.exe 或者正在使用库,我将不胜感激这些信息......我似乎无法让我的机器上的 5 个 SqlPackage.exe 中的任何一个工作使用 VS 使用的内置 .dacpac 和 .publish.xml 文件。
我包括完整的发布配置文件以供参考:
VS2015 Update 3 和 SSDT 14.0.61712.050(我认为是最新的)。
sql-server - VSTS - SQL Server 数据库部署 - DoNotDropObjectTypes 不是有效参数
我正在尝试使用 SQL Server 数据库部署发布任务来部署我的 dacpac,我想使用 /p:DoNotDropObjectTypes=Users;Permissions 参数来防止某些对象被删除,但是我在下面收到以下错误:
我还尝试使用我的发布配置文件 sans 在任务中设置其他参数:
但 SqlPackage 无论如何都试图删除它们:
sql-server - SSDT 项目发布事务部署
我正在使用 SQLPackage.exe 实用程序和数据库项目的发布配置文件来运行对 SQL Server 数据库的更改。
据我了解,这是部署过程:
预部署脚本
主要部署
部署后脚本
我在发布配置文件高级设置中选中了“包含事务脚本”选项,但是,这似乎仅适用于主部署部分。
我的问题是:如果主部署失败,是否提交了预部署脚本?此外,如果部署后脚本失败,是否正在提交部署前更改和主要部署更改?
是否可以使发布脚本“原子” - 一切作为一个单元成功或失败?
谢谢你。
sql-server - 错误:无法解析来自名为“master.dacpac”的源对外部元素的引用
我正在 Windows 机器上使用 sqlpackage 构建数据库 dacpac。该项目包含对master.dacpac
我将 dacpac 移动到 linux 机器(dockermssql-server-linux
映像)并恢复数据库。
部署数据库.sh
错误:
没有提供文件供参考 master.dacpac;部署可能会失败。创建包时,原始引用文件位于 C:$(windows 机器路径)\MASTER.DACPAC。Initializing deployment (Failed) 部署计划生成过程中出错。部署无法继续。错误 SQL0:无法解析来自名为“master.dacpac”的源对外部元素的引用,因为没有加载此类源。警告 SQL72025:没有为参考 master.dacpac 提供文件;部署可能会失败。创建包时,原始引用文件位于 C:$(windows 机器路径)\MASTER.DACPAC。
添加引用时出错。部署无法继续。命令“/bin/sh -c sh /deploy-database.sh”返回非零代码:1
我尝试master.dacpac
直接添加到项目中并将其复制到 docker 映像中,但发生了同样的错误。
如何在引用 master.dacpac 的 linux 环境中恢复 dapac?
sql-server - Can object creation in a database project (SqlPackager) be conditional?
I have a Microsoft SQL Server database project with hundreds of objects (tables, procedures, etc). The resulting database is used in two contexts though -- some customers get a database with all the objects, but some customers' databases contain only a subset of the objects. About 75% of them.
Is there a way to mark each object in the database project in such a way I can say whether it should be deployed or not based on a toggle of some sort?
I thought of a few options:
- Use pre/post deploy scripts. I really don't want to do this, as it defeats a lot of the benefits of using a database project in the first place.
- Install ALL objects, and have a post-deploy step that deletes the objects that we don't want in the "subset" install. Seem hackish to me.
- Break the one database project into two project: one with the required objects and one with the optional.
- Have two projects, one with "all" and one with the subset. 75% of the files will appear in both projects. Then I install the appropriate project's database
I think #3 and #4 sound doable, but I'm still hoping there is a simpler, more maintainable solution.
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。
有谁知道如何做到这一点?还是我目前没有看到其他解决方案?
sql-server - 如何从 Azure DevOps DACPAC 部署中获取漂移报告?
我想在我们的 DACPAC 部署期间获得一份漂移报告(以及部署报告和 TSQL 脚本)。
我们正在使用代理任务“WinRM - SQL Server DB 部署”在 Azure DevOps 中将 DACPAC 部署运行到本地 SQL 服务器。此任务正在使用SQLPacakge.exe,并且可以将“附加参数”传递给该任务。但是如果我添加/Action:DriftReport
到参数中,我会得到这个运行时错误:
*** 重复的“操作”参数“漂移报告”。
我的假设是,这/Action:Publish
已经由 winRM 任务提供。但是有可能改变吗?
PS:我注意到 Azure DevOps 中的“Azure SQL 数据库部署”任务没有同样的问题。有一个Action
用于选择发布、漂移报告等的下拉菜单。