问题标签 [sqlproj]

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 回答
282 浏览

sql - 如何应对 SQL Server 2012 vs SQL (Azure) 数据库 sql 文件

我正在尝试将我的系统从 SQL Server 2012 移植到 SQL 数据库(Azure 实例)。我正在使用 Visual Studio 2013,并且我的 .sqlproj 包含我的数据库的所有定义。

鉴于 SQL 数据库中没有许多 SQL 语句(如“ON [PRIMARY]”、文件组等),我应该更改大量 *.index.sql 、 *.pkey.sql 、 *.table .sql 文件。不幸的是,我仍然需要处理 SQL Server 2012 安装(一些客户仍在该基础架构上),因此我希望有一种简单的方法在“SQLAzure”与“OLD-2012”语法之间切换。

例如,像编译符号这样的东西会很有用,或者类似的技巧。

任何人都对如何管理这样的问题有一个绝妙的主意?

非常感谢!

盖尔西

0 投票
0 回答
1083 浏览

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

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

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

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

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

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

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

这是我现在使用的参数:

0 投票
1 回答
276 浏览

database - SSDT .sqlproj 项目的多域安全性?

我正在做一个小型试点项目,试图实施 Sql Server Data Tools sqlproj 项目,以便更好地将我们的数据库置于源代码控制之下。在我的组织中,我们有单独的非信任域用于各种目的的测试环境,因此这些域当然有自己的隔离活动目录帐户。

文档仍然有些稀疏,我真的不知道从哪里获得有关此工具集的更多信息,尤其是考虑到 Visual Studio 数据库资产历史上的大量流失。

到目前为止,我真正拥有的唯一想法是专门为每个单独的域的安全对象制作单独的 sqlproj 项目,与其他模式对象分开。我希望我能以某种方式将我的实际数据库架构与部署时的数据库架构联系起来,并以某种方式切换我在构建中使用的安全项目。我不知道这是否可行。

使用 Visual Studio sqlproj 项目的任何人都必须处理这个问题吗?这种事情有最佳实践吗?

0 投票
2 回答
1244 浏览

sql-server - SQL Server 项目视图引用来自不同数据库的表

我正在将数据库模型转换为 SQLModel,以便我们可以开始使用 dacpac 进行部署。我已经用其他一些数据库完成了这项工作,但没有一个引用外部数据库。我有一个问题,即几个视图和存储过程引用来自同一服务器上不同数据库的表。对于存储过程没有错误,因为过程不需要在运行时创建表。但是对于我得到构建错误的视图

包含对对象的未解析引用。对象不存在或引用不明确

我一直在尝试找出一种方法来使其工作,而不必拥有第二个具有适当字段的项目或引用不同的 dacpac。我的同事建议尝试使用同义词,但这也没有解决问题。

任何帮助将不胜感激。

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 投票
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 投票
2 回答
979 浏览

sql-server - 使用版本控制正确管理 SSDT 项目文件 (*.sqlproj)

项目 XML 文件 (*.sqlproj) 一直存在问题。如果文件被添加/更新/更改位置,那么它会自动在一些意想不到的地方添加/删除记录。之后,当有人也更改该文件时,我们会遇到合并它的大麻烦。

我们得出的结论是,我们可以在签入前对其进行排序。我们将按字母顺序对其进行排序,在这种情况下,合并工具会更好地理解它。

所以,我的问题是:

  1. 是否可以在每次签入之前以某种方式重新排列 sqlproj 文件?也许已经有某种选项/工具可以做到这一点?
  2. 还有其他方法可以让开发人员的生活更轻松吗?

更新:

我又遇到了同样的问题。sqlproj 文件被修改了 3 次,我只想将最后一次更改合并到生产中,其他 2 个尚未测试。在合并工具中,我可以选择添加所有这 3 个新对象或保持不变。我不能只选择最后一次更改...

例子:

  1. developerA 创建了 tableA 并签入;
  2. developerB 拿到最新版本的 dev 分支,创建 tableB 并签入;
  3. developerC 获得了最新版本的 dev 分支,创建了 tableC 并签入。 DeveloperC 测试了代码并准备投入生产。他试图将他的代码合并到 QA 并得到冲突,他只能选择进行所有更改。
0 投票
1 回答
393 浏览

visual-studio - 如何使 SQL 项目从 props 文件加载版本?

我在 Visual Studio 中创建了几个 SQL 项目,我想集中管理 dacpac 的版本。为了实现这一点,我想使用这篇文章的答案重用道具文件:

在 sql 项目中,我添加以下导入语句:

如果我在 Visual Studio 中检查项目的属性,我得到了这个:

在此处输入图像描述

我构建项目并解压缩 dacpac 文件,检查 DacMetadata.xml 并得到以下信息:

如果我为 sql 项目构建 MSBuild 并解压缩 dacpac 文件,我检查 DacMetadata.xml 并得到以下信息:

我应该怎么做才能从 Visual Studio 中看到版本和描述的变化?

0 投票
2 回答
1345 浏览

sql-server - 使用最新版本的 SSDT SqlPackage.exe 部署 SQL Server dacpac 会删除列默认值

我们使用 Visual Studio 数据库项目和 SSDT 来版本化和部署我们的 SQL Server 架构。我们将项目编译为 dacpac 文件,然后根据需要使用 SqlPackage.exe 针对 SQL Server (2008 R2) 实例发布该 dacpac。

我们最近从 VS 2013 升级到 VS 2015。有一段时间我们仍在使用旧的 SqlPackage.exe(来自 VS 2013 SSDT)的副本来部署我们的 dacpacs。然而,我们刚让一些新员工开始工作,发现在他们的机器上,使用旧的 SqlPackage.exe 部署 dacpac 失败。(从未安装过 VS 2013 并且缺少 DLL。)我用新的 SqlPackage.exe(和相关文件)替换了旧的 SqlPackage.exe(和相关文件)。dacpacs 现在部署成功。

问题:使用新版本的 SqlPackage.exe 部署 dacpac 不会部署列默认值(例如 NEWSEQUENTIALID())。这显然是不可接受的,但恢复到旧版本的 SqlPackage.exe 会破坏我们一些开发人员的部署。这是 SSDT 的错误还是我不知道的重大更改?是否有一些配置可能设置不正确?

0 投票
1 回答
1346 浏览

sql-server - 始终构建 Visual Studio .sqlproj

当我在 Visual Studio 解决方案中有一个 SQL Server 数据库项目 ( .sqlproj) 时,我注意到每次构建解决方案时都会构建该特定项目,即使项目文件没有更改。

这与仅在有任何文件更改时才构建的普通C#项目 ( )不一致。.csproj

我已经尝试提高msbuild输出的详细程度,而且似乎总是在没有特殊原因的情况下构建该项目。

为什么.sqlproj总是建造有原因吗?有没有办法让它只在文件更改时构建?