问题标签 [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.
c# - SQL Server ScriptDom 解析
与我一起工作的开发人员团队正在使用 SQL 数据项目来完成我们必须针对现有数据库进行的大量工作。我们已经有几个星期了,并且遇到了一些问题,但是体验总体上还是不错的。
但是,当我们开始部署到生产环境时,dba 团队拒绝接受 DACPAC 作为部署方法。相反,他们希望看到每个 DML 或 DDL 语句的传统脚本。
目前的想法是在完成的 SQL 项目和生产环境之间创建一个差异脚本,然后将其解析为单独的脚本。不好我知道。
要解析差异脚本,似乎有两个选项:
- 根据批处理分隔符命令 GO 解析脚本。一个相当基本的解决方案,但显示出希望。
- 或者,使用 Microsoft.SqlServer.TransactSql.ScriptDom。这看起来更具未来性,但似乎要复杂得多。
我目前正在试用 ScriptDom,但无法理解它。我目前的,但不仅仅是问题,如下。
我正在尝试使用 C# 中的 ScriptDOM 解析以下 SQL:
但看不到如何访问 VARCHAR 大小,在本例中为 255。
我正在使用的代码如下:
从每个列定义中,我希望找到一个长度属性或类似属性。但是,我也有一个偷偷摸摸的怀疑,即您可以使用我遇到的访问者模式来重新解析每个列定义。有任何想法吗?
sql-server - 在数据库项目中的新表上创建 Not Null FK
我有一个表,其中有行。我正在使用 SQL 数据库项目来管理数据库,并且我想通过向该表添加一个新的 NOT NULL 列来升级架构,该列带有对新表的 FK 约束(也包含在新版本的项目)。
这可能吗?我知道我可以使用该选项为新的 FK 列生成智能默认值,但这无济于事,因为我没有机会将任何行放入 FK 引用的新表中。
我有什么选择?因为预部署脚本在进行模式比较之后执行,所以我无法在此处创建新表,因为比较首先运行并确定它需要创建表 - 当它到达脚本中的这一点时,这会爆炸并发现表已经存在(预部署时创建的)
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, Nullable
1 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。
需要知道我们如何克服这些问题。谢谢亚丁。
c# - 如何通过 DAC api 联系 DACPAC 项目参考?
我正在尝试使用方法从引用的项目GetObject
中获取表示表的实例:TSqlObject
不幸的是,这似乎不起作用。
我已经阅读了DacQueryScopes.All
将获取所有对象的文档,除了那些在非系统数据库中的对象。
所以我想这就是失败的原因,但是我应该如何接触到其他项目中的元素呢?
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 并在我的数据库项目中添加全文索引时,以下内容将添加到我的表定义中,并填写表名、列、键和目录:
当我这样做时,我看到全文索引包含未解析的引用的错误
这对我来说很有意义,因为我必须在数据工具之外创建目录,但是如何继续创建全文索引?
deployment - dacpac 部署所需的 Installshield 先决条件
dacpac 部署所需的 install shield 先决条件是什么?我可以单独添加 DLL,但如果有一个包含所需 SQL 服务器文件的内置 MSI 安装程序会很好。
.net - 如何从 TSqlObject 实例中获取主键列?
我正在尝试通过TSqlObject
以下方式从实例中获取主键列:
当然这不起作用,因为该GetReferenced
方法需要一个实例的ModelRelationshipClass
实例。
那么怎么做呢?
sql-server - 使用 dacpac 升级数据库
我正在通过 dacpac 将数据库部署到客户端。首先,它检查他们是否部署了数据库并创建了 1.0 版。未来的升级检查以查看客户端版本。如果新数据库是 2.0 版本,则需要在客户端机器上将 1.0 升级到 2.0,并更新客户端机器上的版本号。我的代码如下。
我然后运行查询以验证版本。
我验证了数据库是否不存在,它创建它并且版本存在 v1.0。但是当我对数据库进行升级时,升级适用于新的更改,但它不会将版本号更改为 2.0。当我再次运行查询时,它仍然显示 v1.0。我需要做哪些选项或更改才能让客户数据库现在说 2.0,因为它在技术上进行了所有更改。
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。