如何通过代码发布 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 数据库 的相关文章

  • 单个对象的 Monogame XNA 变换矩阵?

    我读过一些解释 XNA Monogame 变换矩阵的教程 问题是这些矩阵应用于 SpriteBatch Begin matrix 这意味着所有 Draw 代码都将被转换 如何将变换矩阵应用于单个可绘制对象 就我而言 我想转换滚动背景 使其自
  • 关键字“table”附近的语法不正确,无法提取结果集

    我使用 SQL Server 创建了一个项目 其中包含以下文件 UserDAO java public class UserDAO private static SessionFactory sessionFactory static se
  • 如何创建包含 IPv4 地址的文本框? [复制]

    这个问题在这里已经有答案了 如何制作一个这样的文本框 我想所有的用户都见过这个并且知道它的功能 您可以使用带有 Mask 的 MaskedTestBox000 000 000 000 欲了解更多信息 请参阅文档 http msdn micr
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • qdbusxml2cpp 未知类型

    在使用 qdbusxml2cpp 程序将以下 xml 转换为 Qt 类时 我收到此错误 qdbusxml2cpp c ObjectManager a ObjectManager ObjectManager cpp xml object ma
  • 通知设置的数据库设计

    用户可以打开或关闭 他的通知设置 帐户 用于通知 例如 更改帐户资料信息 收到新消息等 通知可以通过电子邮件或手机 推送或短信 发送 用户可以只有 1 封电子邮件和多个手机设备 有什么方法可以改进以下数据库设计或者您会采取不同的方式吗 让我
  • 在一个平台上,对于所有数据类型,所有数据指针的大小是否相同? [复制]

    这个问题在这里已经有答案了 Are char int long 甚至long long 大小相同 在给定平台上 不能保证它们的大小相同 尽管在我有使用经验的平台上它们通常是相同的 C 2011 在线草稿 http www open std
  • 如何在 Xaml 文本中添加电子邮件链接?

    我在 Windows Phone 8 应用程序中有一些大文本 我希望其中有电子邮件链接 例如 mailto 功能 这是代码的一部分
  • 如何禁用 fread() 中的缓冲?

    我正在使用 fread 和 fwrite 读取和写入套接字 我相信这些函数用于缓冲输入和输出 有什么方法可以在仍然使用这些功能的同时禁用缓冲吗 Edit 我正在构建一个远程桌面应用程序 远程客户端似乎 落后于服务器 我不知道可能是什么原因
  • 外键与独立关系 - Entity Framework 5 有改进吗?

    我读过了several http www ladislavmrnka com 2011 05 foreign key vs independent associations in ef 4 文章和问题 https stackoverflow
  • 等待进程释放文件

    我如何等待文件空闲以便ss Save 可以用新的覆盖它吗 如果我紧密地运行两次 左右 我会得到一个generic GDI error
  • 使用 C# 读取 Soap 消息

  • 调用堆栈中的“外部代码”是什么意思?

    我在 Visual Studio 中调用一个方法 并尝试通过检查调用堆栈来调试它 其中一些行标记为 外部代码 这到底是什么意思 方法来自 dll已被处决 外部代码 意味着该dll没有可用的调试信息 你能做的就是在Call Stack窗口中单
  • 如果没有抽象成员,基类是否应该标记为抽象?

    如果一个类没有抽象成员 可以将其标记为抽象吗 即使没有实际理由直接实例化它 除了单元测试 是的 将不应该实例化的基类显式标记为抽象是合理且有益的 即使在没有抽象方法的情况下也是如此 它强制执行通用准则来使非叶类抽象 它阻止其他程序员创建该类
  • 方法优化 - C#

    我开发了一种方法 允许我通过参数传入表 字符串 列数组 字符串 和值数组 对象 然后使用这些参数创建参数化查询 虽然它工作得很好 但代码的长度以及多个 for 循环散发出一种代码味道 特别是我觉得我用来在列和值之间插入逗号的方法可以用不同的
  • 我是否需要在外键上指定 ON DELETE NO ACTION?

    我有以下与 SQL Server 2012 一起使用的 DDL CREATE TABLE Subject SubjectId INT IDENTITY 1 1 NOT NULL Name NVARCHAR 50 Not NULL CONST
  • 如何部署“SQL Server Express + EF”应用程序

    这是我第一次部署使用 SQL Server Express 数据库的应用程序 我首先使用实体 框架模型来联系数据库 我使用 Install Shield 创建了一个安装向导来安装应用程序 这些是我在目标计算机中安装应用程序所执行的步骤 安装
  • C++ 条件编译

    我有以下代码片段 ifdef DO LOG define log p record p else define log p endif void record char data 现在如果我打电话log hello world 在我的代码中
  • Oracle Data Provider for .NET 不支持 Oracle 19.0.48.0.0

    我们刚刚升级到 Oracle 19c 19 3 0 所有应用程序都停止工作并出现以下错误消息 Oracle Data Provider for NET 不支持 Oracle 19 0 48 0 0 我将 Oracle ManagedData
  • 使用 .NET Process.Start 运行时挂起进程 - 出了什么问题?

    我在 svn exe 周围编写了一个快速而肮脏的包装器来检索一些内容并对其执行某些操作 但对于某些输入 它偶尔会重复挂起并且无法完成 例如 一个调用是 svn list svn list http myserver 84 svn Docum

随机推荐

  • 设置要在 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