问题标签 [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.
sqlpackage - sqlpackage.exe - 我如何排除同义词>
我正在运行 sqlpackage.exe 作为自动部署脚本创建过程的公园,但是我们在数据库中有同义词,这些同义词因环境(开发/测试/实时)而异。问题是数据库项目在 Dev 环境中具有同义词,但是当我运行 sqlpackage 以与 Test 或 Live 进行比较时,同义词是不同的,因此它们被编写脚本删除并重新添加以指向 Dev .
我在http://blogs.msdn.com/b/ssdt/archive/2015/02/23/new-advanced-publish-options-to-specify-object-types-to-exclude-or-not上看到过-drop.aspx显然有一个新参数“ExcludeObjectType”,但是当我尝试使用该参数运行它时,它给了我一个错误“ExcludeObjectType”不是“脚本”操作的有效参数(我有最新版本的sqlpackage.exe)。
关于我可以在这里做什么的任何想法?
deployment - Sqlproj:在命令行中部署数据库的哪种解决方案?
我目前正在使用 Microsoft Web 部署技术(msbuild 和 msdeploy 命令)将网站部署到服务器。该网站需要部署一个数据库,并且两者都将在同一台服务器中。我正在寻找部署数据库项目(使用命令行)的最佳解决方案,并且我想更好地了解围绕数据库部署的所有技术。
解决方案的内容(Visual Studio 2013):
- 一个数据库项目(用于 SQL Server 2008),
- 一个类库(NHibernate 的数据访问层)
- 一个网络项目(ASP.NET MVC4)。
注意:我不是自愿在 VS 中使用持续集成/交付工具或发布方法。我对这个项目的第一个目标是了解 msbuild / msdeploy 是如何工作的......
我看了一下vsdbcmd命令,它似乎可以完成我想要的所有步骤......除了我需要将 Visual Studio DLL/文件导入我的远程服务器,我想知道是否没有更好的方法......我也看了在 msdeploy 提供者dbSqlPackage /dbDacFx 处,但据我了解,它使用 dacpac 来应用架构更改。同样,SqlPackage.exe 似乎也使用了 dacpac。
使用 dacpac 听起来不错,但我对以下问题感到困惑:
- 这是否意味着我在第一次创建数据库时需要一个不同的过程?如果是,哪个命令最好?
- 是否可以从我的 sqlproj 文件创建 dacpac?如果是,该怎么做?
从命令行以及您的经验和项目中是否有其他部署方式,部署此类项目的最佳方式是什么?
非常感谢,
sql-server - 如何使 SSDT Profile.xml SqlCmdVariable 为空字符串或可选
我在我们的 MSSQL 项目中使用 SSDT(和 sqlproj)。在发布到每个环境时,我们需要设置一些变量。
这在我们为所有变量分配值的大多数环境中都非常有效,但是当我们发布到我们的实时数据库时,我希望能够将 DomainPrefix 设为空白字符串。
当我尝试更改 Live.profile.xml 以将 DomainPrefix 设置为无值时,我收到错误消息:“在生成部署计划期间发生错误。部署无法继续。以下 SqlCmd 变量的值缺失:DomainPrefix。”
这就是我希望 Live.profile.xml 的样子:
有谁知道如何将 SqlCmdVariable 设置为空白值或使其成为可选变量?
使用:
- VS 2013 sqlproj
- SqlPackage.exe 从命令行运行发布到数据库
powershell - 调用另一个可执行文件并捕获输出
我正在尝试使用 PowerShell 脚本SqlPackage.exe
来更新数据库。问题是它产生了一个新的 CMD 窗口,我无法有效地捕获输出。
这是我的脚本:
哪里SqlPackage = "SQLPackage\SqlPackage.exe";
。
奇怪的是,当我在 Windows 2008 R2 Web 服务器上执行脚本时,输出与 PowerShell 输出是内联的,这正是我想要的。在我的 Windows 7 机器上,它会生成一个新的 CMD 窗口。
如何始终将输出路由到 PowerShell 窗口,或者至少通过管道传输到另一个文件?
编辑
等待过程完成的完整解决方案:
sql-server - dacpac 可以用于管理具有大量数据的数据库吗?
我们当前的数据库接近 200MB,但是一旦应用程序上线,我们预计它会增长到很大的容量......可能是 20-30 GB 的数据。
我们计划使用“dacpac”(由数据库项目 - SSDT 生成)部署在生产服务器上。将使用许多表和查找表中的大量初始数据创建数据库。
但是,当我们将使用“dacpac”(由数据库项目 - SSDT 生成)来升级生产服务器上的数据库时,我们担心的是未来的部署。
由于我过去没有使用 dacpac 进行部署的经验,任何人都可以建议我关注以下内容 -
- 部署是否取决于数据量?或者,如果它仅取决于架构更改?例如,如果目标数据库是 20-30 GB,那么升级它大概需要多少时间?
- 我们如何对数据库模式进行版本控制?
- 如果出现任何问题,升级过程是否可以回滚?
最后,它是否比传统的手动编写 sql 脚本升级数据库的方式更好?
visual-studio-2013 - 在 Visual Studio 2013 中发布 DacPac
我在 Visual Studio 2013 中有一个 SSDT 数据库项目。在将数据库更新发布到其他环境中的数据库时,它用作“答题纸”。我最近看到了Jamie Thompson 关于 DacPac 的博客文章,他在其中写了一篇关于 DacPac 是什么以及如何使用它们的精彩总结。
现在,假设我有以下情况:
- VS2013中的SSDT项目,版本为1.0.33
- 我的开发环境中的一个数据库,版本为 1.0.32
- 我的 S 测试环境中的数据库,版本为 1.0.31
根据 Jamie 的说法,使用 DacPac 发布数据库更改是幂等的,即我可以将项目符号 1 中的 SSDT 项目中的 DacPac 发布到项目符号 3 中的数据库,它将在版本 1.0.32 和版本中对数据库进行所有更改1.033,因为 DacPac 包含有关整个DB 模式的信息(然后还应包括在 1.0.32 版中所做的更改)。
这是对发布 DacPac 工作原理的正确理解吗?
powershell-2.0 - PowerShell命令未执行?
在以下 PowerShell v2.0 脚本中,命令 & 未执行:
在控制台输出中,我看到:在 SqlPackage 之前,在 SqlPackage 之后
我没有错误,没有日志,没有 SqlPackage.exe。发生了什么 ?我的命令 "& "$SqlPackageExe" /Action:Publish $SqlPackageParameters" 第一次工作,第二次工作(数据库已部署),然后停止工作。如果我关闭 PowerShell 会话并打开一个新的 PowerShell 会话,该命令会运行几次,然后停止运行。
谢谢您的帮助
sql-server - SqlPackage.exe 和 MsBuild SqlPublishTask 的区别
我正在尝试生成一个输出 dacpac 文件,然后我可以将其部署到不同的环境中。到目前为止,我一直使用目标发布直接从 msbuild 进行部署,例如:
生成的输出脚本的大小(仅供参考,因为 UpdateDatabase 设置为 true)为 2.5MB。
我的新方法是只构建项目,存储 dacpac,然后使用带有“发布”操作的 sqlpackage 进行部署。这种新方法报告了一些 msbuild SqlPublishTask 未报告的警告。
作为参考,我运行了下一个命令:
输出脚本的大小现在是 4.9MB。
报告的具体警告不是这里关心的问题,关心的是脚本不同,我的问题是有什么区别?
更重要的是,哪一种是最好/最安全的部署方法?
visual-studio-2013 - 如何以编程方式对 VS 2013 SSDT 项目执行数据比较?
Visual Studio 2013 具有允许在 SSDT 项目和目标数据库之间执行数据比较的功能。
根据 SO 上的另一篇文章,执行这种比较有一定的要求。
考虑到这些要求,我想做这样的事情作为我们构建和部署过程的一部分:
- 将任何 DB 架构更改发布到目标数据库,以确保源和目标具有完全相同的表、列、SP 等,以符合上面链接中提到的要求
- 运行数据比较并生成更新脚本,或将源数据库中的任何更改直接发布到目标数据库
目前,我有一个脚本可以处理项目符号号。1 通过sqlpackage.exe使用 DACPAC 进行架构比较。不过,看起来不可能使用 sqlpackage 执行数据比较,而且我还没有找到任何其他替代方案。在 VS 2010 中,可以通过命令窗口运行数据比较,但我在 VS 2013 中没有看到任何关于此的文档...
因此,我的问题是是否存在允许数据比较通过例如 Powershell 脚本以编程方式运行的 API 和/或其他工具。