首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从代码中发布SSDT数据库

问如何从代码中发布SSDT数据库
EN

Stack Overflow用户
提问于 2015-11-30 15:52:48
回答 1查看 2K关注 0票数 4

我们有SQLServer01.Publish.xml,当我双击这个文件并发布时,它会将一个数据库发布到sqlServer01。

我想问一下,我们能不能从代码中发布这个概要文件?

EN

回答 1

Stack Overflow用户

发布于 2015-11-30 16:02:05

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

代码语言:javascript
复制
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 );
    }
}

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

代码语言:javascript
复制
[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

最新SSDT

VS 2010 SSDT

从哪里可以得到Microsoft.SqlServer.Dac 和 DacService?

有几种方法可以获得Microsoft.SqlServer.Dac库,或者:

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34002580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档