问题标签 [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 投票
2 回答
1645 浏览

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)。

关于我可以在这里做什么的任何想法?

0 投票
2 回答
9839 浏览

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?如果是,该怎么做?

从命令行以及您的经验和项目中是否有其他部署方式,部署此类项目的最佳方式是什么?

非常感谢,

0 投票
2 回答
4426 浏览

sqlcmd - 部署 DacPac 时如何在 SqlPackage.exe 中使用多个 SQLCMD 变量?

我正在使用 sqlpackage.exe 部署 dacpac,并且需要为 dacpac 中的部署后脚本传递 SqlCMD 变量。我在这里这里找到了一个相关的问题。

但我收到以下错误: 缺少以下 SqlCmd 变量的值:BuildVersion 描述。Description=$Description :术语“Description=$Description”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

请帮我。

0 投票
1 回答
2178 浏览

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 从命令行运行发布到数据库
0 投票
1 回答
277 浏览

powershell - 调用另一个可执行文件并捕获输出

我正在尝试使用 PowerShell 脚本SqlPackage.exe来更新数据库。问题是它产生了一个新的 CMD 窗口,我无法有效地捕获输出。

这是我的脚本:

哪里SqlPackage = "SQLPackage\SqlPackage.exe";

奇怪的是,当我在 Windows 2008 R2 Web 服务器上执行脚本时,输出与 PowerShell 输出是内联的,这正是我想要的。在我的 Windows 7 机器上,它会生成一个新的 CMD 窗口。

如何始终将输出路由到 PowerShell 窗口,或者至少通过管道传输到另一个文件?

编辑

等待过程完成的完整解决方案:

0 投票
1 回答
1092 浏览

sql-server - dacpac 可以用于管理具有大量数据的数据库吗?

我们当前的数据库接近 200MB,但是一旦应用程序上线,我们预计它会增长到很大的容量......可能是 20-30 GB 的数据。

我们计划使用“dacpac”(由数据库项目 - SSDT 生成)部署在生产服务器上。将使用许多表和查找表中的大量初始数据创建数据库。

但是,当我们将使用“dacpac”(由数据库项目 - SSDT 生成)来升级生产服务器上的数据库时,我们担心的是未来的部署。

由于我过去没有使用 dacpac 进行部署的经验,任何人都可以建议我关注以下内容 -

  1. 部署是否取决于数据量?或者,如果它仅取决于架构更改?例如,如果目标数据库是 20-30 GB,那么升级它大概需要多少时间?
  2. 我们如何对数据库模式进行版本控制?
  3. 如果出现任何问题,升级过程是否可以回滚?

最后,它是否比传统的手动编写 sql 脚本升级数据库的方式更好?

0 投票
1 回答
261 浏览

visual-studio-2013 - 在 Visual Studio 2013 中发布 DacPac

我在 Visual Studio 2013 中有一个 SSDT 数据库项目。在将数据库更新发布到其他环境中的数据库时,它用作“答题纸”。我最近看到了Jamie Thompson 关于 DacPac 的博客文章,他在其中写了一篇关于 DacPac 是什么以及如何使用它们的精彩总结。

现在,假设我有以下情况:

  1. VS2013中的SSDT项目,版本为1.0.33
  2. 我的开发环境中的一个数据库,版本为 1.0.32
  3. 我的 S 测试环境中的数据库,版本为 1.0.31

根据 Jamie 的说法,使用 DacPac 发布数据库更改是幂等的,即我可以将项目符号 1 中的 SSDT 项目中的 DacPac 发布到项目符号 3 中的数据库,它将在版本 1.0.32 和版本中对数据库进行所有更改1.033,因为 DacPac 包含有关整个DB 模式的信息(然后还应包括在 1.0.32 版中所做的更改)。

这是对发布 DacPac 工作原理的正确理解吗?

0 投票
1 回答
244 浏览

powershell-2.0 - PowerShell命令未执行?

在以下 PowerShell v2.0 脚本中,命令 & 未执行:

在控制台输出中,我看到:在 SqlPackage 之前,在 SqlPackage 之后

我没有错误,没有日志,没有 SqlPackage.exe。发生了什么 ?我的命令 "& "$SqlPackageExe" /Action:Publish $SqlPackageParameters" 第一次工作,第二次工作(数据库已部署),然后停止工作。如果我关闭 PowerShell 会话并打开一个新的 PowerShell 会话,该命令会运行几次,然后停止运行。

谢谢您的帮助

0 投票
1 回答
1085 浏览

sql-server - SqlPackage.exe 和 MsBuild SqlPublishTask 的区别

我正在尝试生成一个输出 dacpac 文件,然后我可以将其部署到不同的环境中。到目前为止,我一直使用目标发布直接从 msbuild 进行部署,例如:

生成的输出脚本的大小(仅供参考,因为 UpdateDatabase 设置为 true)为 2.5MB。

我的新方法是只构建项目,存储 dacpac,然后使用带有“发布”操作的 sqlpackage 进行部署。这种新方法报告了一些 msbuild SqlPublishTask 未报告的警告。
作为参考,我运行了下一个命令:

输出脚本的大小现在是 4.9MB。
报告的具体警告不是这里关心的问题,关心的是脚本不同,我的问题是有什么区别?
更重要的是,哪一种是最好/最安全的部署方法?

0 投票
1 回答
670 浏览

visual-studio-2013 - 如何以编程方式对 VS 2013 SSDT 项目执行数据比较?

Visual Studio 2013 具有允许在 SSDT 项目和目标数据库之间执行数据比较的功能。

根据 SO 上的另一篇文章,执行这种比较有一定的要求

考虑到这些要求,我想做这样的事情作为我们构建和部署过程的一部分:

  1. 将任何 DB 架构更改发布到目标数据库,以确保源和目标具有完全相同的表、列、SP 等,以符合上面链接中提到的要求
  2. 运行数据比较并生成更新脚本,或将源数据库中的任何更改直接发布到目标数据库

目前,我有一个脚本可以处理项目符号号。1 通过sqlpackage.exe使用 DACPAC 进行架构比较。不过,看起来不可能使用 sqlpackage 执行数据比较,而且我还没有找到任何其他替代方案。在 VS 2010 中,可以通过命令窗口运行数据比较,但我在 VS 2013 中没有看到任何关于此的文档...

因此,我的问题是是否存在允许数据比较通过例如 Powershell 脚本以编程方式运行的 API 和/或其他工具。