如何通过代码发布 SSDT 数据库

2024-01-14

We have SQLServer01.Publish.xml当我双击该文件并发布时,它将数据库发布到 sqlServer01。

我想问我们可以通过代码以某种方式发布此配置文件吗?


SSDT 似乎很喜欢 DacPac 来做这种事情。有一个DacServices中的实用程序类Microsoft.SqlServer.Dac。我认为这需要在您计划运行此代码的计算机上安装 SSDT。

public class DacPacUtility
{
    public void DeployDacPac( string connString, string dacpacPath, string targetDbName )
    {
        var dbServices = new DacServices( connString );

        var dbPackage = DacPackage.Load( new FileStream( dacpacPath, FileMode.Open, FileAccess.Read ), DacSchemaModelStorageType.Memory, FileAccess.Read );

        var dbDeployOptions = new DacDeployOptions()
        {
            SqlCommandVariableValues =
            {
                new KeyValuePair< string, string >( "debug", "false" )
            },
            CreateNewDatabase = true,
            BlockOnPossibleDataLoss = false,
            BlockWhenDriftDetected = false
        };

        dbServices.Deploy( dbPackage, targetDbName, upgradeExisting : true, options : dbDeployOptions );
    }
}

Bonus: 你可以使用Microsoft.Build.Evaluation.Project命名空间来新建一个Project对象并在本地构建它以使用生成的 dacpac 初始化测试来进行集成测试。

[SetUpFixture]
public class TestSetup
{
    [SetUp]
    public void SetUpTests()
    {
        var projectPath = @"C:SomeDirectory";
        var project = new Project( projectPath );
        project.Build();
        ProjectCollection.GlobalProjectCollection.UnloadProject( project );

        var dacPac = new DacPacUtility();
        var connString = "Data Source=(localdb)\ProjectsV12;Initial Catalog=Tests;Integrated Security=True";
        var dacPacPath = projectPath + "..\bin\projectName.dacpac";
        dacPac.DeployDacPac(connString, dacPacPath, "Tests");
     }
     [TearDown]
     public void TearDownTests()
     {
       // TODO: delete db or run other cleanup scripts
     }
 }

参考:

Deborah 的开发人员 MindScape:部署 DACPAC http://blogs.msmvps.com/deborahk/deploying-a-dacpac/

最新SSDT https://msdn.microsoft.com/en-us/library/mt204009.aspx

VS 2010 的 SSDT http://blogs.msdn.com/b/ssdt/archive/2012/09/14/new-ssdt-power-tools-now-for-both-visual-studio-2010-and-visual-studio-2012.aspx

到哪里去Microsoft.SqlServer.Dac and so DacService

有几种方法可以获得Microsoft.SqlServer.Dac图书馆,要么:

  • Add Nuget 包 https://www.nuget.org/packages/Microsoft.SqlServer.DacFx.x64/
  • Or 在您的开发机器上安装 SSDT 工具 https://learn.microsoft.com/en-us/sql/ssdt/download-sql-server-data-tools-ssdt?view=sql-server-2017, 进而引用DLL https://social.msdn.microsoft.com/Forums/sqlserver/en-US/be484b63-a6cc-4dac-a2c2-78a56ff5b502/where-is-the-microsoftsqlserverdacdll-that-includes-support-for-sql-server-2014?forum=ssdt.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何通过代码发布 SSDT 数据库 的相关文章

  • 嵌入资源文件的路径

    我的资源文件中有一个图标 我想引用它 这是需要图标文件路径的代码 IWshRuntimeLibrary IWshShortcut MyShortcut MyShortcut IWshRuntimeLibrary IWshShortcut W
  • 当 Generic.List.Add 是函数中的最后一个语句并且开启尾调用优化时,性能会受到影响

    我遇到了一个奇怪的性能损失 我将其归结为以下代码
  • ContentDialog 未与 UWP 中心对齐

    据我所知 ContentDialog的默认行为应该是使其在 PC 上居中并在移动设备上与顶部对齐 但就我而言 即使在 PC 上我也将其与顶部对齐 但我不明白发生了什么 我正在使用代码隐藏来创建它 这是我正在使用的代码片段 Creates t
  • Monotouch全局异常处理

    我在野外发现了一只令人讨厌的虫子 但我无法确定它的具体情况 有没有办法拥有全局 Try Catch 块 或者有办法处理 Monotouch 中未处理的任何异常 我可以包起来吗UIApplication Main args 在 try cat
  • 组合框下拉位置

    我有一个最大化的表单 其中包含 500px 的组合框控件 停靠在右上角 Width 尝试打开组合框后 列表的一半超出了屏幕 如何强制列表显示在表单中 棘手的问题 我找不到解决这个问题的好办法 只是一个解决方法 添加一个新类并粘贴如下所示的代
  • 无法加载程序集问题

    我收到以下错误 无法加载程序集 错误详细信息 System BadImageFormatException 无法加载文件或程序集 文件 或其依赖项之一 该程序集是由比当前加载的运行时更新的运行时构建的 无法加载 该程序集是使用 Net Fr
  • Visual Studio 中列表框的上移、下移按钮[重复]

    这个问题在这里已经有答案了 我正在尝试制作一个上移按钮和一个下移按钮 以移动 Microsoft Visual Studio 2012 中列表框中的选定项目 我已经在 WDF jquery winforms 和其他一些表单中看到了其他示例
  • 如何将 Q 格式整数转换为浮点数(反之亦然)?

    我四处搜寻 找不到一个很好的问题来回答这个问题 给定一个整数 使用Q Format https en wikipedia org wiki Q number format 如何将该数字转换为普通浮点类型 反之亦然 如何将浮点类型转换为Q F
  • 如何将STL容器数据转储到gdb中?

    我无法在 gdb 中转储 STL 无序映射容器值 变量类型是 std unordered map var 我的 gdb 版本 7 7 1 GDB配置 configure host x86 64 linux gnu target x86 64
  • 应用程序处于中断模式。您的应用程序已进入中断状态,

    我发现自己遇到了同样的问题here https stackoverflow com questions 36204009 disable break mode page in vs2015 我在 dll 中使用 Windows 窗体 这是针
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • 您对“大规模 C++ 软件设计”的看法 [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 正在阅读亚马逊评论 https rads stackoverflow com amzn click com 0201633620 and ACC
  • 如何构建一棵与或树?

    我需要一个支持 与 和 或 的树结构 例如 给定一个正则表达式 如ab c d e 我想把它变成一棵树 所以 一开始我们有两个 或 分支 它可以向下ab or c d e 如果你低头ab分支 你得到两个节点 a and b or a其次是b
  • 传递数组时在 C 中的函数参数中强制指定数组大小

    Context 在 C 中 我有一个以数组作为参数的函数 该参数用作该函数的输出 输出的大小始终相同 我会 让阅读代码的人清楚所需的大小 不过它已经在函数注释中了 理想情况下 编译会输出警告或错误 这样我就可以在编译时而不是运行时防止出现问
  • 如何同步nosql db(ravendb)中的更改

    我已经开始在 RavenDB 的示例上学习 NoSQL 我从一个最简单的模型开始 假设我们有由用户创建的主题 public class Topic public string Id get protected set public stri
  • SQL Union All 查询中的排序规则冲突

    有一个 Union All 查询 如下所示 当在 SQL Server 中触发时 出现错误 无法解决 SELECT 语句中第 1 列的排序规则冲突 请问 在哪里添加带有此 Union All 查询的 Collat e database de
  • 卸载程序

    我正在尝试使用此代码卸载程序 但它似乎不起作用 我尝试过其他答案 但似乎也不起作用 有人可以帮助我吗 我正在尝试按给定名称 displayName 卸载该程序 例如 我给出 displayName Appname 那么此代码应该从我的计算机
  • 实体框架:ObjectSet 及其(泛型)方差

    我使用 EntityFramework POCO 事情是这样的 public interface IBaseType int Id get set public class BaseType IBaseType public virtual
  • 实体框架代码首次日期字段创建

    我正在使用实体框架代码优先方法来创建我的数据库表 下面的代码 创建一个DATETIME数据库中的列 但我想创建一个DATE柱子 DataType DataType Date DisplayFormatAttribute ApplyForma
  • 如何使用 C# 为 azure devops 变量赋值

    我有 selenium C 测试脚本 可以从浏览器获取令牌 我有两个 azure devops 任务 一个用于执行 selenium 测试 另一个用于执行 API 测试 我想将 selenium 测试获取的令牌传递给 API 测试执行任务

随机推荐

  • 设置要在 PowerShell 导出 csv 中使用的日期格式?

    我正在尝试将数据库表导出为文本 CSV ish 以供以后批量插入 采用 ISO 格式 yyyy mm dd 的日期会少很多麻烦 我相信 我最终说服了 SQL Server Express 在导入时采用英式格式 尽管无论我做什么 灰色的服务器
  • GitHub Copilot 命令不起作用并显示错误

    我安装 GitHub Copilot 只是为了测试 但是 这些命令都不起作用 例如 如果我尝试按 CTRL Enter 则会收到以下错误消息 未找到命令 github copilot generate 我正在尝试使用 JS 文件 我安装了最
  • c# HttpWebRequest 不向代理服务器发送默认凭据

    我正在使用鱿鱼代理服务器在将请求传递到公共网络之前对客户端进行身份验证 我还没设置HttpWebRequest Proxy对象 因此我假设 Web 请求将采用默认窗口凭据并传递到代理服务器 我也已将用户条目添加到鱿鱼代理 但在发出请求时出现
  • 使用 UCWA API 进行聊天机器人?

    UCWA 能否用于 Skype For Business 本地服务器上的企业聊天机器人应用程序 我找不到太多与此相关的文档 使用 UCWA 实现聊天机器人绝对是可能的 但您必须经历一些挑战 这主要是为了让 UCWA 模拟的 App 始终在线
  • jQuery 手风琴展开所有 div

    当页面加载或事件发生时是否可以展开所有组件 谢谢 只需使用这个 accordion ui accordion content show
  • Base 64 编码有何用途?

    我时常听到人们谈论 base 64 编码 它是干什么用的 当您想要通过网络传输一些二进制数据时 通常不会仅通过以原始格式在网络上传输位和字节来实现 为什么 因为有些媒体是为流文本而设计的 你永远不知道 某些协议可能会将你的二进制数据解释为控
  • Vue 组件和 AJAX 加载 HTML 内容

    我有一个 Vue 组件 它基本上是复杂 HTML 标记的简写 初始加载时 一切正常 我正在使用 AJAX 将更多这些组件加载到页面上 问题是该组件在使用 AJAX 加载后 不想编译成 HTML 我只得到未渲染的 Vue 组件 如下所示
  • 在 asp.net webform 应用程序中选择启用 ajax 的 WCF 服务时有哪些优点和缺点?

    我刚刚经历了我的第一次ajax enabled WCF service在样本中asp net webform应用程序 如果我的网络应用程序中有 10 15 个页面 其中涉及add edit view and delete操作 是否有可能使它
  • UIPickerView 导致崩溃

    每当我尝试在应用程序中选择 UIPickerView 时 它就会崩溃 我已经实现了所有委托方法 但收到此错误 2013 01 15 13 57 56 176 tracker 16142 c07 Assertion failure in UI
  • 我应该如何编辑查询以提高性能,同时保留现有结构?

    我想提高查询的性能 如下所示 里面有一个索引isl ref and isl date字段 但由于我使用 gt 运算符并且使用 因此无法使用索引 1 1440 增加一分钟isl date场地 我应该如何编辑查询以提高性能 同时保留现有结构 S
  • 如何在 Eclipse LogCat 查看器中过滤掉标记名

    我有一个 Android 应用程序会 发送垃圾邮件 LogCat 我想删除它的 logcat 条目以使输出更具可读性 是否可以有一个过滤器来删除特定标记名称的 LogCat 条目 或者一种有效的搜索模式 是的 创建一个过滤器 其中 按日志标
  • Terraform /AWS aws_servicecatalog_portfolio

    我正在尝试通过 Terraform 部署服务目录 当我尝试通过代码部署服务目录产品时 Service catalog product resource aws servicecatalog product linuxDesktop name
  • ExtJS 7.3 中没有可用的 ext-locale 包

    由于某些奇怪的原因 我收到此错误 无法满足 ext locale 的要求 错误 以下内容 版本无法满足 ERR 应用程序 ext locale 否 匹配 ERR 无法解决包要求 根据官方说明 我将需求添加到了 app json classi
  • 如何通过 printf 打印二进制数[重复]

    这个问题在这里已经有答案了 可能的重复 有 printf 转换器可以以二进制格式打印吗 https stackoverflow com questions 111928 is there a printf converter to prin
  • 使用 Robospice 和 Retrofit 将图像上传到 Google appengine

    我正在尝试使用 Robospice 和 Retrofit 将图像上传到我的 Google appengine blobstore 我可以获取 GAE 提供的上传 URL 但是当我尝试将带有图像的 URL 作为 Multipart POST
  • 在 Uvicorn 中与多个工作线程一起使用多重处理(线程锁)

    我正在使用通过 uvicorn 提供的 FastAPI 构建一个 API 该 API 具有使用 python 多处理库的端点 端点为 CPU 密集型任务生成多个进程以并行执行它们 以下是高级代码逻辑概述 import multiproces
  • 我们如何以恒定复杂度或 O(1) 交换 2 个数组?

    我们如何以恒定的复杂度交换 2 个数组或O 1 我们有办法做到这一点吗 我尝试过使用指针 但出现错误 此外 这不会有帮助 因为它只是交换指针而不是数组 include
  • 将 PEM 转换为 PPK 文件格式

    有没有办法将 PEM 文件转换为 PPK 文件 您可能会猜到 Amazon EC2 为我提供了一个 PEM 文件 我需要使用 PPK 格式进行 SSH 连接 Use PuTTYGen http www chiark greenend org
  • Flask-Admin 自定义日期时间视图

    使用flask admin时 日期时间字段的列表视图如下所示 2014 02 22 13 30 43 我想知道是否可以更改此默认视图 如下所示 2014 02 22 或 2014 02 22 13 30 thanks 是的 您可以设置col
  • 如何通过代码发布 SSDT 数据库

    We have SQLServer01 Publish xml当我双击该文件并发布时 它将数据库发布到 sqlServer01 我想问我们可以通过代码以某种方式发布此配置文件吗 SSDT 似乎很喜欢 DacPac 来做这种事情 有一个Dac