Tag: dacpac

使用Microsoft.SqlServer.Dac.DacServices在单用户模式下发布dacpac

我想在单用户模式下发布dac pac,以防止在数据库升级时不必要的数据库更改。 为此,我在Microsoft.SqlServer.Dac.DacServices中使用了Deployfunction。 该函数有一个参数DacDeployOptions选项。 我在该选项中设置了DeployDatabaseInSingleUserMode = true 。 即使它设置为true,我也可以在dacpac部署时执行db操作。 有什么我想念的吗? 或者有没有其他方法来实现这一目标。 帮助将得到赞赏!

如何在DacServices.Deploy()中禁用预部署和部署后脚本

我们有一些自动dacpac部署代码,可以使用Microsoft.SqlServer.Dac正确处理C#中的CreateNewDatabase和简单的Update数据库方案 现在,在CreateNewDatabase的情况下,我们希望能够在禁用前置和后置部署脚本的情况下运行DacServices.Deploy() 。 即它们不应该在这种情况下执行。 我试图在DacDeployOptions和DacServices对象中找到合适的位置,但找不到任何可以执行此操作的地方.Ideally 问题1 : 我想要类似于DacDeployOptions.IgnorePreDeploymentScript = true有什么方法可以在运行时实现这一点吗? 作为替代方案,前段时间我记得看过示例代码,它展示了如何遍历dacpac并在运行时创建一个新的dacpac。 我认为这种方法可以让我简单地创建一个新的dacpac,我可以将其传递给Deploy,它将排除Pre和Post Deployment脚本。 我不喜欢这个解决方案,但它可以让我实现我所需要的。 问题2 : 有人可以为我指出一些例子吗? 我的代码: var dacService = new DacServices(ConstDefaultConnectionString); using (var dacPackage = DacPackage.Load(dacPacFilePath)) { var deployOptions = new DacDeployOptions { CreateNewDatabase = true, IncludeTransactionalScripts = false }; dacService.Deploy(dacPackage, TestDatabaseName, true, deployOptions); } 问题与以下内容有关: 创建LocalDB以便从Visual Studio SQL项目进行测试

DacPac在导出或导入时排除用户和登录

我正在做一些自动化,并在将一些10-15个古老,古怪的脚本重写为一个单一且简单的单元,它可以: 在生产环境中从MsSql2012导出数据库方案 在开发环境中将数据库方案导入MsSql2012 我这样做使用Microsoft.SqlServer.Dac我可以导出/导入dac包。 它工作得很好:),但在完成所有TDD和测试之后,现在是真实的时间了,结果我完全错过了我的工作中有2个域。 这意味着当我在开发环境中导入dacpac时出现错误,因为我们的2个域没有完全双向信任,当然数据库也有来自两个域的用户。 特别是生产域用户。 我可以看到3个可行的解决方案 在环境之间获得完全信任。 但由于我的工作实施了高水平的安全性,因此不会发生这种情况。 在没有用户的情况下导入dacpac。 没有用户导出到dacpac。 我已经阅读了文档(当然这是模糊的),试图找到一组可以实现2)或3)的选项。 我测试了很多组合,但没有一个可以工作。 dac pac导入不断尝试创建用户并失败,因为生成用户无法在开发环境中进行validation。 我使用Deploy和Extract导出/导入。 可以在这里找到不同的选项: 提取: http : //technet.microsoft.com/en-us/library/microsoft.sqlserver.dac.dacextractoptions.aspx 部署: http : //technet.microsoft.com/en-us/library/microsoft.sqlserver.dac.dacdeployoptions.aspx 没有组合我找到了作品,我甚至读过post,表明它是DacPac中的一个错误。 但我不确定。 我现在正在研究的最后一个选项是使用GenerateScript方法,希望能够强制排除用户/登录,但我担心它也不会起作用。 见( http://technet.microsoft.com/en-us/library/hh753526.aspx )。 问题:如何在导出或导入中从我的dacpac中排除用户/登录? UPDATE 当前提取设置: IgnoreUserLoginMappings = true, VerifyExtraction = false, 当前部署设置: CreateNewDatabase = true, DeployDatabaseInSingleUserMode = true, DisableAndReenableDdlTriggers = true, IgnoreUserSettingsObjects = true, 更新 […]

如何穿越dacpac

我们希望将dbproj升级到sqlproj,以便我们可以将其指向新的SQL 2012数据库。 我们现在有一个程序读取.dbschema xml文件以查找所有表和列并从中检索信息。 我们使用这些数据来构建我们自己的自定义类。 新的sqlproj文件现在生成一个dacpac,我们想要进行干预以获取我们需要的数据。 我写了以下内容来尝试遍历dacpac并获取我需要的信息: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.SqlServer.Dac; using Microsoft.SqlServer.Dac.Extensions; using Microsoft.SqlServer.Dac.Model; namespace DacPacReader { class Program { static void Main(string[] args) { using (System.IO.TextWriter writter = new System.IO.StreamWriter(@”c:\temp\output.txt”)) { using (TSqlModel model = new TSqlModel(@”C:\temp\Data.dacpac”)) { var allTables = model.GetObjects(DacQueryScopes.All, ModelSchema.Table); foreach (var […]