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

sql - 为什么我的数据库项目升级脚本包括从引用的数据库项目中重构?

希望这会有意义..

我们有一堆用于维护模式和生成升级脚本的数据库项目。为了生成升级脚本,我们使用自动构建引擎,该引擎使用 SqlPackage.exe 将数据库项目与“模式模板”进行比较,“模式模板”是实时数据库的副本,但没有数据。

其中一个数据库引用了其他三个数据库项目。

最近,我们发现,在为这个数据库项目生成升级脚本时,它包括重构参考项目之一中的表的 SQL,而不是相关项目中的表。

所以升级脚本包含两段 SQL:

  1. 在开始时打印语句说模式对象不会被重命名。
  2. 一堆插入语句到 __RefactorLog。

问题是双重的:

  1. 这些重构不应包含在此升级脚本中;它们属于引用的数据库项目之一——它们与这个无关。
  2. 因为这个数据库不需要重构,所以它没有名为 __RefactorLog 的表,因为升级脚本不需要创建它。这会导致构建失败。

我查看了数据库项目设置,看不出引用数据库项目中的重构将包含在引用项目中的任何原因。

有任何想法吗?

更新 -丢失的 __RefactorLog 表是一个红鲱鱼。由于某种原因,它包含在模式模板中,但不在实时数据库中,因此 SqlPackage 假设它不需要创建它。但是,我仍然很想知道为什么引用数据库项目的所有重构都包含在有问题的项目中。

0 投票
0 回答
1832 浏览

sql-server - SQL Server,我可以使用受信任的连接执行 sqlcmd,但不能执行 sqlpackage

我们有一些部署脚本通过 sqlpackage 结合使用 dacpacs 和使用 sqlcmd 的直接脚本。

当我执行 sqlpackagedac\sqlpackage.exe /p:BlockOnPossibleDataLoss=False /p:BackupDatabaseBeforeChanges=True /a:Publish /sf:.\somedeploy.dacpac /tcs:"Data Source=MyDB;Initial Catalog=MyCatalog;Trusted_Connection=True;"

我收到一条错误消息*** Could not deploy package. Unable to connect to target server. ,我在 sql 中打开了登录审核,我收到的消息是Login failed. The login is from an untrusted domain and cannot be used with Windows authentication. [CLIENT: 111.222.223.224]

但是,我可以使用 -E 参数通过 sqlcmd 运行我们的 sql 脚本没有问题。 sqlcmd -i Permissions\CreateSqlUser.sql -S MyDB -E

我正在从设置为“以管理员身份运行”的命令行运行,并且当前以管理员身份登录。这是在 Windows Server 2012 VM 上运行的。我正在使用 sql 2014。我们有其他安装没有问题,但这是我们的第一个 2014 安装,所以我们正在尝试确定是否发生了某些变化,或者我们是否缺少某些东西,如果是什么。

如果我从探查器运行,我看不到任何审计日志错误消息。我检查了过滤器和我正在监听的事件,它们看起来都不错。当我运行时,在 sql 内部,exec sys.sp_readerrorlog 0, 1, 'Login Failed'我确实会显示消息。(我可能在探查器中做错了什么)。它们也出现在系统事件日志中。我没有看到任何地方告诉我有关用户尝试登录的任何信息。

如果不为 sqlpackage 使用受信任的连接,而是使用用户名和密码,它可以正常工作。但是,我们的部署脚本所做的部分工作是创建用户,因此我们的偏好是不这样做。

0 投票
1 回答
2163 浏览

azure-sql-database - 如何使用 sqlpackage.exe 通过覆盖 azure 数据库上传(导入)

这应该是一件简单的事情,我想用覆盖选项上传/导入我的数据库,但我在文档中找不到它

我必须手动删除它并使用 Import 上传。

0 投票
0 回答
1083 浏览

sql-server - SQLPackage - 两个 dacpacs 之间的比较总是包含与链接服务器相关的对象

首先,我为我蹩脚的英语感到抱歉。

我在两个不同的 SQL 实例中有两个不同的数据库,并且两个实例都通过链接服务器相互引用。我在数据库解决方案中添加了这个引用并使用变量来调用链接。这工作正常并且构建良好。

使用 sqlpackage 自动部署数据库时遇到问题。在每个内部版本生成 DACPAC 文件之后。在下一个 sprint 中,当需要部署时,使用 SQLPackage.exe 进行比较。这会生成一个脚本,其中包含上一个 sprint 中生成的新对象,并且除了一件事外,它工作正常。

当我比较最新的 .DACPAC 和上一个版本中构建的 .DACPAC 时,每个引用链接服务器的对象都会出现在生成的脚本文件中。这本身并不是一个大问题,但是在交付给客户时,有些对象不需要更改。

是否有指定包含链接服务器变量的选项?有没有办法选择要包含的对象(我害怕这个,因为可能存在修改此对象并应包含在包中的情况)?

编辑:此对象仅在使用 sqlpackage 时出现。它们不会出现在 Visual Studio 2012 架构比较中。

这是我现在使用的参数:

0 投票
1 回答
5186 浏览

sql-server - 使用 SQL Management Studio 在适用时生成智能默认值

我目前正在开展一个项目,将我们的数据库作为数据层应用程序发布。该数据库相当复杂,在使用 SQLPackage.exe 或通过 Visual Studio 发布时需要修改几个参数。

目前阻止我将项目设置为完成的场景之一是:

我们有一个不可为空的列被添加到表中,我们在发布 dacpac 以允许 dacpac 完成时应用“SmartDefaults,如果适用”为真,这很好用。

什么不工作是:

在 SQL Management Studio 中使用升级数据层应用程序时。它不允许我指定相同的选项,这会阻止数据库正确升级。

有没有人能够做到这一点?

0 投票
1 回答
1108 浏览

dacpac - 无效的对象名称错误:DACPAC 部署使用 SQLPackage.EXE

将 DACPAC 部署到 SQL 服务器 (SQL 2014 – 12.0.2430) 时遇到问题。这是我得到的错误:无效的对象名称 dbo.usp_SomeStoredProcedure_Update。

如果我正在更改存储过程,就会发生这种情况。不过,数据库项目已成功构建。我正在使用 VS 2013 Update 4 来构建数据库解决方案。

这是我正在触发的命令:

“C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\SQLPackage.exe” /TargetDatabaseName:DBName /TargetServerName:ServerName /Action:Publish /SourceFile:DBName.dacpac /p:IncludeTransactionalScripts=true /p :BlockOnPossibleDataLoss=false /p:DropIndexesNotInSource=false /p:GenerateSmartDefaults=true

知道会发生什么吗?

0 投票
1 回答
1572 浏览

visual-studio - 运行 SQLPackage.exe /a:script 时出错

我正在尝试自动化我正在使用的数据库部署过程SqlPackage.exe。我有一些与之相关的数据库部署过程,exe但最近我遇到了一个新数据库的问题。

当我尝试运行时:

"C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\sqlpackage.exe" /a:Script /op:p_dbprm003.sql /sf:c:\p_dbprm003.dacpac /TargetServerName:servernamexyzw /TargetDatabaseName: p_dbprm003 /Profile:c:\p_dbprm003.publish.xml

我收到消息:

无法解析对名为“[xxx_user]”的元素的引用。存在多个具有此名称的元素。要解决该错误,您必须添加一个或多个消歧器。

我真的不知道这是什么意思。

我有一个用户[xxx_user]和一个[xxx_user]同名的模式。您认为这可能是导致错误的可能原因吗?

0 投票
2 回答
1468 浏览

sql - SqlPackage.exe 导出/导入数据库

使用 SqlPackage.exe 将 Azure 迁移到数据库到 V12 预览版导出并将数据库导入本地计算机后,我收到错误:

事实上,在 Management Studio 中有一个用户定义的表类型,它不能被删除。

怎么解决?

我尝试使用此脚本导出所有选项。

0 投票
1 回答
3029 浏览

dacpac - 使用 SqlPackage 发布 dacpac 时覆盖 DefaultDataPath 和 DefaultLogPath 变量

环境:

  1. 使用 Visual Studio 2013 Update 4 中的 SQL Server 数据库工具创建用于发布数据库的 DacPac。
  2. 使用 TFS 构建来构建和删除数据库项目。
  3. 使用 SqlPackage 版本将 dacpac 发布到 SQL Server 2012。

使用 SqlPackage 操作“发布”,部署脚本是根据目标数据库的默认值使用以下变量生成的:

:setvar DefaultDataPath "H:\YourServerDefault"
:setvar DefaultLogPath "H:\YourServerDefault"

我想覆盖这些位置以登陆我们配置了一些外部加密的特定目录对。

我试图以几种方式覆盖这些 SQLCMD 值:

  1. 在命令行上覆盖:

    SQLPackage /Action:Publish /SourceFile:./Db.dacpac /Profile:./MyProfile.publish.xml /Variables:DefaultDataPath=H:\MyNewLocation

  2. 在发布配置文件中添加覆盖(下面的代码段):

    <ItemGroup>
      <SqlCmdVariable Include="DefaultDataPath ">
        <Value>H:\YourServerDefault</Value>
      </SqlCmdVariable>
    </ItemGroup>

虽然我可以使用任何一种技术来覆盖我自己定义的 SQLCMD 变量,但是像 Def​​aultDataPath 和 DefaultLogPath 这样的内置变量会被忽略。

使用 SqlPackage 发布时有没有办法覆盖这些值?

0 投票
1 回答
1586 浏览

sqlpackage - How can sqlpackage.exe perform schema compare only on stored procedures?

In VS 2012, the schema compare tool let's users compare only "stored procedures" by selecting the option "stored procedures" as the application scoped object.

Is there a way to perform schema compare only on the selected schema object using SqlPackage.exe?