问题标签 [dacpac]

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 投票
3 回答
2655 浏览

c# - SQL Server ScriptDom 解析

与我一起工作的开发人员团队正在使用 SQL 数据项目来完成我们必须针对现有数据库进行的大量工作。我们已经有几个星期了,并且遇到了一些问题,但是体验总体上还是不错的。

但是,当我们开始部署到生产环境时,dba 团队拒绝接受 DACPAC 作为部署方法。相反,他们希望看到每个 DML 或 DDL 语句的传统脚本。

目前的想法是在完成的 SQL 项目和生产环境之间创建一个差异脚本,然后将其解析为单独的脚本。不好我知道。

要解析差异脚本,似乎有两个选项:

  1. 根据批处理分隔符命令 GO 解析脚本。一个相当基本的解决方案,但显示出希望。
  2. 或者,使用 Microsoft.SqlServer.TransactSql.ScriptDom。这看起来更具未来性,但似乎要复杂得多。

我目前正在试用 ScriptDom,但无法理解它。我目前的,但不仅仅是问题,如下。

我正在尝试使用 C# 中的 ScriptDOM 解析以下 SQL:

但看不到如何访问 VARCHAR 大小,在本例中为 255。

我正在使用的代码如下:

从每个列定义中,我希望找到一个长度属性或类似属性。但是,我也有一个偷偷摸摸的怀疑,即您可以使用我遇到的访问者模式来重新解析每个列定义。有任何想法吗?

0 投票
2 回答
695 浏览

sql-server - 在数据库项目中的新表上创建 Not Null FK

我有一个表,其中有行。我正在使用 SQL 数据库项目来管理数据库,并且我想通过向该表添加一个新的 NOT NULL 列来升级架构,该列带有对新表的 FK 约束(也包含在新版本的项目)。

这可能吗?我知道我可以使用该选项为新的 FK 列生成智能默认值,但这无济于事,因为我没有机会将任何行放入 FK 引用的新表中。

我有什么选择?因为预部署脚本在进行模式比较之后执行,所以我无法在此处创建新表,因为比较首先运行并确定它需要创建表 - 当它到达脚本中的这一点时,这会爆炸并发现表已经存在(预部署时创建的)

0 投票
2 回答
262 浏览

database - MsDeploy 与 DbDacFx 提供程序和数据库参考

我们正在使用 DbDacFx 提供程序来同步我们的生产机器。我们的解决方案中有 ssdt 数据库项目,与我们的网站一起部署。A.sqlproj 引用了 master.dacpac 和另一个数据库项目的 dacpac,比如 X.dacpac。

所有 dacpac 都在同一位置进行部署。

当我们尝试部署 A.dacpac 时,我们得到如下错误:

信息:将包部署到数据库:故障。错误:无法解析来自名为“X.dacpac”的源对外部元素的引用,因为没有加载此类源。错误:无法解析来自名为“master.dacpac”的源对外部元素的引用,因为没有加载此类源。......上述错误重复多次......在远程计算机上处​​理请求时发生错误。错误:调用的目标已引发异常。---> System.Exception:找不到成员“ClassName”。在 System.Runtime.Serialization.SerializationInfo.GetElement(String name, Type&foundType) 在 System.Runtime.Serialization.SerializationInfo.GetString(String name) 在 System.Exception..ctor(SerializationInfo info,1 syncPassId) at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable1 passId) 错误:找不到成员“ClassName”。在 System.Runtime.Serialization.SerializationInfo.GetElement(String name, Type&foundType) 在 System.Runtime.Serialization.SerializationInfo.GetString(String name) 在 System.Exception..ctor(SerializationInfo info, StreamingContext context) 错误计数:1。

需要知道我们如何克服这些问题。谢谢亚丁。

0 投票
1 回答
442 浏览

c# - 如何通过 DAC api 联系 DACPAC 项目参考?

我正在尝试使用方法从引用的项目GetObject中获取表示表的实例:TSqlObject

不幸的是,这似乎不起作用。

我已经阅读了DacQueryScopes.All将获取所有对象的文档,除了那些在非系统数据库中的对象。

所以我想这就是失败的原因,但是我应该如何接触到其他项目中的元素呢?

0 投票
1 回答
754 浏览

sql-server - 如何修复 SQL Server Data Tools 项目中的“未解决的对全文目录的引用”

使用面向 Microsoft Azure SQL 数据库 V12 的 SQL Server Data Tools (12.0.50730.0),我正在尝试部署数据库并设置全文索引。

我已经按照此处的说明使用 SSMS 创建了目录:https ://technet.microsoft.com/en-us/library/ms187035(v=sql.105).aspx

当我进入 Visual Studio 2013 并在我的数据库项目中添加全文索引时,以下内容将添加到我的表定义中,并填写表名、列、键和目录:

当我这样做时,我看到全文索引包含未解析的引用的错误

这对我来说很有意义,因为我必须在数据工具之外创建目录,但是如何继续创建全文索引?

0 投票
1 回答
376 浏览

deployment - dacpac 部署所需的 Installshield 先决条件

dacpac 部署所需的 install shield 先决条件是什么?我可以单独添加 DLL,但如果有一个包含所需 SQL 服务器文件的内置 MSI 安装程序会很好。

0 投票
2 回答
637 浏览

.net - 如何从 TSqlObject 实例中获取主键列?

我正在尝试通过TSqlObject以下方式从实例中获取主键列:

当然这不起作用,因为该GetReferenced方法需要一个实例的ModelRelationshipClass实例。

那么怎么做呢?

0 投票
0 回答
766 浏览

sql-server - 使用 dacpac 升级数据库

我正在通过 dacpac 将数据库部署到客户端。首先,它检查他们是否部署了数据库并创建了 1.0 版。未来的升级检查以查看客户端版本。如果新数据库是 2.0 版本,则需要在客户端机器上将 1.0 升级到 2.0,并更新客户端机器上的版本号。我的代码如下。

我然后运行查询以验证版本。

我验证了数据库是否不存在,它创建它并且版本存在 v1.0。但是当我对数据库进行升级时,升级适用于新的更改,但它不会将版本号更改为 2.0。当我再次运行查询时,它仍然显示 v1.0。我需要做哪些选项或更改才能让客户数据库现在说 2.0,因为它在技术上进行了所有更改。

0 投票
1 回答
447 浏览

visual-studio-2013 - 在视图 sql 定义上设置构建操作

在重构数据库项目时,我通常将临时无效的 SQL 文件属性“构建操作”设置为“无”,这样它就不会破坏构建。

在此处输入图像描述

对于某些观点,我似乎对引用“WrappedObject”的属性有完全不同的看法:

在此处输入图像描述

这是什么意思?

0 投票
1 回答
1689 浏览

sql-server - 使用 SqlPackage.exe 部署 DACPAC,并引用 master 和 msdb

我们有一个 Visual Studio DB 项目,其中包含引用“master”或“msdb”数据库的 DB 对象。

现在有两种情况:

(1) 在项目设置中没有对系统数据库“master”和“msdn”的引用,可以构建项目但有很多警告,因为对“master”或“msdb”的引用不能得到解决。DACPAC 的部署没有问题。

(2) 在项目设置中引用系统数据库“master”和“msdn”,可以在没有任何警告的情况下构建项目,但只有在“master.dacpac”和“msdn.dacpac”也可以进行部署时与我们的项目 DACPAC 一起交付。

所以这两种情况都有效,但在第一种情况下,我们在开发过程中有很多警告。在第二种情况下,“master.dacpac”和“msdn.dacpac”必须交付给客户,我不知道它们是否在部署期间也更新了。

那么有没有办法解决这两种情况的缺点呢?

DB 项目的目标平台设置为 SQL Server 2012。我们希望使用 DACPAC 文件来更新 SQL Server 2012 和 SQL Server 2014。