问题标签 [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 回答
2963 浏览

sql-server - 在 Linux 上的 SQL Server 中找不到 SQLPackage

我正在尝试在 Linux 上使用 SQLPackage 进行 dacpac 部署。

我的环境:

服务器:Ubuntu Linux 版本 16.04

SQL Server 2017 最新发布候选版本 RC1。

SQL Server 安装成功,我可以在 Ubuntu 上的 SQL Server 数据库上创建表。现在我正在尝试在 Linux 上实现 dacpac 部署。根据本文档

https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-export-import-with-sqlpackage

SQLPackage 可执行文件必须位于 /opt/mssql/bin。但事实并非如此。知道如何在 Linux 上安装 SQLPackage 吗?

当我检查 CTP 2.1 的旧版本时,我有那个 SqlPackage 可执行文件。RC 1 中是否遗漏了这一点?

0 投票
1 回答
3567 浏览

c# - SSDT 如何从 DACPAC 文件创建新数据库?

目前使用 SqlPackage.exe 命令行工具生成脚本,通过将 DacPac 文件与目标数据库进行比较。如果数据库不存在,这将创建数据库。

我们现在想将其切换为使用 Microsoft.Data.Tools.Msbuild Nuget 包(使用 C# 进行部署),但是当数据库容器不存在时,使用 SchemaComparison 进行比较会失败。似乎没有太多与该软件包相关的文档。

这个包中是否有任何工具可以让我在比较之前创建一个空的数据库容器?

我目前正在使用以下代码(在与现有数据库进行比较时有效):

此时,ComparisonResult 出现错误消息:{Error SQL0: Cannot open database "DeployTestDB" requested by the login. 登录失败。用户“myUsername”登录失败。}

0 投票
1 回答
552 浏览

sql-server - 如何测试是否可以在没有实际部署的情况下部署 DACPAC

是否可以在不部署数据库的情况下针对数据库测试 DACPAC?如果没有发现错误,带有 Action=Deploy 的 sqlpackage.exe 将部署它,并且 Action=Report 只会生成包含更改列表的报告,但部署仍然可能失败。

0 投票
0 回答
128 浏览

sql-server - 如何重新验证所有视图、存储过程和函数

我正在尝试为 CI 执行构建自动化并允许自动部署(我可以在构建机器上访问 SQL CMD exe)。开发人员在没有正确修改所有用法的情况下编写视图、存储过程和相关函数。

我想知道如何强制重新验证所有实体,并且我正在查询可以自动化的查询。(右键单击生成脚本并重新运行不是一个选项,但欢迎使用等效的命令行选项)。

例如,假设我有一个名为dbo.findSum的函数,并假设有 2 个存储过程 Proc1 和 Proc2 正在使用它们。

开发人员可以选择为函数 dbo.findSum 和过程 Proc1 创建更改脚本。

显然,Dev 错过了提交到源代码控制的 Proc2 更改脚本。当代码移动到评估 Proc2 时,我不希望这个愚蠢的错误造成运行时意外。

我在想 sp_recompile 会有所帮助,但实际上它只会在下次运行时标记为编译。我找不到重新验证整个架构实体的准确性的方法。

任何重新验证整个实体的指针都非常感谢。我需要可以自动化的步骤。

是否有特定的查询可以创建整个数据库实体脚本并以特定顺序重新运行它们,如果发现不一致,将强制实体重建并抛出错误?

如果我的方法正确,是否有脚本向导等效的命令行工具可以用来生成脚本。

0 投票
5 回答
1852 浏览

azure-sql-database - SSDT 发布 - 未设置对象引用

我正在尝试发布一个 SSDT 项目,但它抛出错误“对象引用未设置为对象的实例”没有其他消息,有没有办法解决这个问题。

在此处输入图像描述

0 投票
1 回答
1950 浏览

sql-server - 使用命令行工具为 SSDT 项目构建和生成脚本

我正在尝试使用命令行实现以下工作流程:

  1. 使用通过命令行覆盖的特定变量构建项目(例如,我在发布配置中有 $(buildVersion) 变量具有一些值。我想通过输入的值命令行覆盖 $(buildVersion)。这一步的输出是dacpac 文件
  2. 根据生成的dacpac文件和实际数据库生成发布脚本

我尝试同时使用 SqlPackage.exe 和 MSBuild.exe 工具。但是我无法获得预期的效果:

  • 我找不到如何使用 SqlPackage 构建项目的方法
  • 我找不到如何将变量传递给 MSBuild

我现在能做的:

  • 我可以使用 MSBuild 构建项目
  • 我可以使用 SqlPackage 生成发布脚本
0 投票
1 回答
69 浏览

database - 使用 VS2012 sqlpackage.exe 解压和构建 SQL Server 2014 项目

我一直在尝试测试基于 SQL Server 2014 构建的项目(DB、SSIS、SSAS)是否与 SQL Server 2012 兼容。我已经.dproj打包成 dacpac 格式,当我尝试从 cmd 运行它时:

我收到以下错误:

*** 无法部署包。内部错误。Microsoft.Data.Tools.Schema.Sql.Sql120DatabaseSchemaProvider 类型的数据库平台服务无效。您必须确保已加载服务 e,或者您必须提供有效数据库平台服务的完整类型名称。

我在安装了 SQL Server 的 Azure 上创建了一个 VM。除此之外,我还安装了 VS 2012 的数据工具。我猜这可能是兼容性问题,但也许有一种解决方法,而不需要将 DT 更改为更高版本?有什么可以打的补丁吗?

0 投票
1 回答
595 浏览

sql-server - 通过发布管理部署 dacpac 时,我可以使用 DeployReport 选项吗

我希望能够在 MS Release Management 中设置 WinRM dacpac 部署任务,以创建架构比较报告,而不是实际部署数据库。然后,如果报告了意外更改,我可以获得环境批准并放弃部署。如果更改符合预期,则下一个环境将实际部署数据库。

有没有办法使用可用的 WinRM DB 部署任务来做到这一点?如果是这样,怎么做?

0 投票
0 回答
18 浏览

sql-server-data-tools - SqlPackage.exe 未调用 DeploymentPlanExecutor.OnExecute

我正在尝试编写一个 PowerShell 脚本来部署需要我编写的特定 DeploymentPlanExecutor 扩展的 DACPAC。该扩展实现了 OnApplyDeploymentConfiguration 和 OnExecute 的覆盖方法。

当我直接从 Visual Studio 2017 从数据库项目部署时,一切正常。但是,当我尝试使用 SqlPackage.exe 或使用 API 中的 DacServices 类部署使用扩展的 DACPAC 时,仅调用我的扩展的 OnApplyDeploymentConfiguration . 部署成功完成,无需调用 OnExecute 方法。

我安装了最新版本的 SSDT,并且正在 Visual Studio 2017 目录下的安装中运行 SqlPackage.exe。我的扩展安装在相同目录结构下的 Extensions 文件夹中。

我已经验证它是由它在 OnApplyDeploymentConfiguration 期间产生的输出消息以及通过附加调试器的断点加载的。我在 OnExecute 方法开头的断点永远不会被命中。

0 投票
0 回答
262 浏览

sql-server-data-tools - SSDT Ignore uses in sqlpackage script

I'm trying to use SSDT to update schema on a target database based on a source database.

I'm using the ExcludeObjectTypes property to prevent the script to create users on target. But my update.sql still contains this section:

Is it possible to exclude this as well?