Как опубликовать базу данных SSDT из кода

У меня есть SQLServer01.Publish.xml когда я дважды щелкаю этот файл и публикую его, он публикует базу данных для sqlServer01.

Я хотел спросить, можем ли мы опубликовать этот профиль из кода каким-то образом?

SSDT, похоже, нравится DacPac для такого рода вещей. В DacServices служебный класс DacServices . Я думаю, для этого потребуется, чтобы 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 ); } } 

Бонус : вы можете использовать пространство имен 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

Последние SSDT

SSDT для VS 2010

  • TSQL в объекте Command
  • Обновление таблицы базы данных SQL с помощью WPF datagrid
  • Невозможно вставить значение по умолчанию в базу данных SQL из проекта Win Forms
  • Как преобразовать горизонтальную строку в вертикальный SQL Server
  • Как проверить, существует ли база данных и таблицы в sql-сервере в проекте vb .net?
  • Каков самый простой способ проверить, существует ли база данных в MSSQL с помощью VB.NET?
  • Как показать код qr в SSRS?
  • Как использовать SQL-сервер из другой сети
  • при одновременном прохождении множественного целочисленного значения
  • Как сохранить файл PDF в столбце SQL Server с помощью кода vb.net
  • Как читать текстовый файл, содержащий код SQL и выполнять его
  • Interesting Posts

    Условная вставка SQL

    Используя MSSQL CE в C #, получая ошибку, и не можем понять, почему,

    Запрос SQL Server для получения типа данных для всех столбцов в таблице?

    Почему COALESCE возвращает NULL вместо значения, которое мне нужно?

    SET NOCOUNT ON и чтение сообщений с использованием C # и ADO.NET

    Строка ввода не была корректной ошибкой формата # 2

    Почему я не могу подключить TFS к сборке проектов, которая была правильно восстановлена ​​на SQL Server (я думаю)?

    Предотвратить использование ADO.NET sp_executesql

    Недопустимое имя объекта 'dbo.trgAfterUpdate' – Ошибка триггера

    MSSQL. Определите имя столбца в инструкции SELECT, затем используйте это в предложении WHERE.

    Несколько столбцов CSV для строки SQL-запроса

    Резервное копирование базы данных с помощью SMO

    Корреляция записей журнала, например, неудачных попыток входа в систему

    Аутентификация SQL Server для файла базы данных

    ssis – файл с плоскими файлами – процесс не может получить доступ к файлу, потому что он используется другим процессом

    Давайте будем гением компьютера.