问题标签 [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.
sql-server - 通过命令行部署 SQL Server 数据库项目 (SSDT)
我有一个针对 SQL Server 2012 RC0 数据库的 SQL Server 数据库项目。该项目是在 Visual Studio 2010 + SQL Server Data Tools CTP4 中创建的。(项目类型不同于常规的 Visual Studio 2010 数据库项目——它是 SQL Developer Tools CTP3 Juneau 的下一个版本)
它在 IDE 中部署良好。如何通过命令行部署它?
我尝试了 VSDBCMD.exe,但它需要一个不是由新项目类型创建的 .deploymanifest 文件。
arguments - 使用 TargetDatabaseName 或 tdn 参数调用 SQLPackage 'publish' 时出错
作为调用动作时的 SQLPackage 手册,我们publish
有参数TargetDatabaseName
or tdn
(in section Target Parameters
)
但是当将此参数添加到 SQLPackage 调用时,我收到错误消息,指出该参数无效。
例子:
那是一个错误吗?我们如何解决这个问题?
目前我必须使用/tcs:“连接字符串在这里”
error-handling - 调用 SSDT 的 SQLPackage.exe 时检测“数据丢失”发布操作的最佳方法
使用 publish action调用 SQLPackage.exe(此处/a:Publish
描述的语法)时,有时data loss
会发生并停止执行;这是通过设置参数 /p:BlockOnDataLoss 指定的(默认为“true”)。
我需要知道我的publish
操作是成功还是由于“数据丢失”而失败。
目前成功时,返回的退出码为0。失败时,我们只返回退出码为1。我们不能说失败是data loss
不是由该引起的。我们如何识别这一点?
在控制台输出的某处,我们看到包含“...正在删除,可能发生数据丢失”的行。所以我打算扫描打印的每一行输出,但我想应该有其他更好的方法来做到这一点。
希望听到你的想法。
synchronization - SqlPackage.exe 发布可以在目标数据库上删除不存在对象的 .dacpac 文件的正确参数是什么?
正如我们可以使用SqlPackage.exe
Visual Studio 2012 中的 Microsoft SSDT 来同步数据库,如此处所述,我正在使用它来同步目标数据库,称为TargetDb
,以与存储在 SQL Server 数据库项目中的源数据库对象匹配,称为DbProject
.
/a:Publish
command的操作SqlPackage.exe
允许我们将 DbProject 的 .dacpac 文件同步到 TargetDb,但默认参数不会删除 TargetDb 中不存在的 DbProject 对象。
打开标志/p:DropObjectsNotInSource=true
会解决这个问题,但也会产生奇怪的行为
- 该标志
/p:DropObjectsNotInSource=true
将删除 TargetDb 上的用户/登录对象,这绝对不是预期的!我能找到的最接近的是/p:DropRoleMembersNotInSource=false /p:DropPermissionsNotInSource=false
,但那些没有多大帮助。 - 该标志
/p:DropObjectsNotInSource=true
将打破标志/p:BlockOnPossibleDataLoss=true
,这意味着如果发生数据丢失,更新操作将不会被阻止;那根本不是我想要的。
目前我必须接受 TargetDb 上的“垃圾”/冗余对象 :(
有什么更好的标志可以让我到达那里?
sql-server-data-tools - SQLPackage 错误:已添加具有相同键的项
我从 SQLPackage 收到此错误:“已添加具有相同密钥的项目”是什么意思?谷歌不会帮助我..
"c:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\sqlpackage.exe" /Action:DeployReport /SourceFile:"XXX.dacpac" /Profile:"publish.xml" OutputPath:"Report.xml "
为服务器“srv”上的数据库“XXX”生成报告。
*已添加具有相同密钥的项目。
没有创建输出文件。
从 Visual Studio 工作生成脚本(我得到一个脚本)。我在同一个解决方案中测试了三个项目。只有一个人创建了一个 DeploymentReport 文件。
发表作品。
sql - SSDT - 在没有 dacpac 的情况下构建部署脚本
我有一个关于使用 SSDT 构建部署脚本的问题。谁能告诉我是否可以使用 SQLPackage.exe 构建部署脚本,其中源文件不是 dacpac 文件,而是使用 .sql 文件?
为了提供一些背景知识,我在 Visual Studio 2012 中为我的数据库架构创建了一个项目。这很好用,SSDT 可以毫无问题地构建文件夹结构(包含所有 .sql 文件的函数、存储过程等)。
这就是问题所在 - 有问题的数据库来自遗留系统,并且充满了错误。我们不再关心这些错误中的大多数,并且将它们全部修复是不切实际或安全的,因此多年来我们基本上忽略了它们。但是,这意味着我们无法构建项目,因此无法生成 dacpac 文件。现在这并不妨碍我们进行模式比较并将数据库与文件系统(本地 mercurial 存储库)同步。但是,它似乎确实阻止了我们构建部署脚本。
我正在寻找的是一种使用 SQLPackage.exe 构建部署脚本的方法,而无需生成 dacpac 文件。我需要改用文件系统中的 .sql 文件。Visual Studio 将在不构建 dacpac 的情况下生成差异脚本,所以这让我认为必须可以使用 SQLPackage.exe 使用其中一个参数来完成它。
这是一个 SQLPackage.exe 的示例,我想对其进行调整以使用 .sql 文件而不是 dacpac:
这很好用,因为它使用 dacpac 文件。但是,我需要将其指向 .sql 文件所在的文件夹结构。
任何帮助都会很棒。
sql-server-2014 - 使用 SqlPackage.exe 将 DACPAC 发布到 SQL Server 2014?
我已经使用 SqlPackage.exe 成功地将 DACPAC 发布到 SQL Server 2008-2012 实例,由 SQL Server Data Tools 安装(通常在 中找到C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin
)。但是,在尝试使用相同的 SqlPackage.exe 将面向 2014 的 DACPAC 发布到 SQL Server 2014 实例时,我得到以下信息:
我发现有关此的最少信息;我发现最接近的是发布到 Azure的问题。
我一直在更新 SSDT 补丁,但我猜我拥有的 SqlPackage.exe(显示 11.0.2902.0 版本)根本不兼容。我可以使用 Visual Studio 2012 的 Publish 命令发布到同一个实例,因此实例本身似乎不是问题。
是否有更新版本的 SqlPackage 可以支持将 2014 DACPAC 发布到 2014 服务器?或者另一种可编写脚本的方式来做到这一点?
amazon-web-services - 如何将 SQLPROJ DACPAC 部署到 Amazon RDS
我们一直使用 .sqlproj 扩展名使用 VS2012 SSDT 进行数据库设计和开发,并使用带有 DACPAC 的 SQLPackage 部署到 SQL Server ......或者从 Visual Studio 设置发布规则。
我们已将数据库迁移到 Amazon RDS SQL Server。
我们最近对数据库设计进行了一些更改,我尝试发布更改,但出现此错误。
我到处搜索如何将这种类型的数据库项目发布到亚马逊,而不是求助于为架构维护本地 SQL Server 数据库并购买 Red-Gate SQL 比较来迁移更改。我很难过。
任何建议将不胜感激。
sql-server - 在文件中记录 sqlpackage.exe 错误
我正在使用 SQlPackage.exe 来部署/发布数据库项目。我想在单独的日志文件中记录发布活动,例如创建数据库/表或任何修改。但似乎 sqlpackage.exe 中没有选项来记录此信息
其次,如果我以某种方式停止之间的 sqlpackage 部署(因为我使用的是 bat 文件并且从那里我调用 sqlpackage.exe 命令),那么它不会回滚所有更改。
请注意,我已经启用了包含跨国脚本的选项。通过启用此功能,部署后脚本不在事务块中。换句话说,如果事务后脚本中有错误但架构中没有错误,则架构部分将被正确部署,这将在部署后脚本中引发错误。因此我的数据库处于不一致状态。我的观点是,如果有任何错误,它应该回滚所有内容。