2015-08-26 4 views
2

Мы используем проекты базы данных Visual Studio и SSDT для версии и развертывания нашей схемы SQL Server. Мы скомпилируем проект в файл dacpac, а затем с помощью SqlPackage.exe опубликуем этот dacpac в случае экземпляра SQL Server (2008 R2) по мере необходимости.Развертывание dacpac SQL Server с новейшей версией SSDT SqlPackage.exe отменяет значения столбцов по умолчанию

Недавно мы обновили VS 2013 до VS 2015. Некоторое время мы все еще использовали копию старого SqlPackage.exe (от SS 2013 SSDT) ​​для развертывания наших dacpac. Однако у нас просто появились новые сотрудники и обнаружили, что на их машинах развертывание dacpac со старым SqlPackage.exe терпит неудачу. (VS 2013 никогда не был установлен, а библиотеки DLL отсутствуют.) Я заменил старый SqlPackage.exe (и связанные файлы) новым SqlPackage.exe (и связанными файлами). Дакпаки теперь успешно развертываются.

Проблема: Развертывание dacpac с новой версией SqlPackage.exe не устанавливает значения по умолчанию для столбцов (например, NEWSEQUENTIALID()). Это явно неприемлемо, но возврат к старой версии SqlPackage.exe прерывает развертывание для некоторых наших разработчиков. Является ли это ошибкой с SSDT или изменением, которое я не знаю? Есть ли какая-то конфигурация, которая может быть установлена ​​неправильно?

ответ

3

Я предлагаю создать Microsoft Connect issue под «Developer Tools (SSDT, СТАВКИ, и т.д.)»

Что касается как получить старую версию SqlPackage.exe работает, обратите внимание, что Visual Studio 2013 поставляется с версией SqlPackage.exe, который зависит от зависимостей SQL Server 2012. Visual Studio 2015, с другой стороны, поставляется с версией SqlPackage.exe, которая зависит от зависимостей SQL Server 2014. Я предполагаю, что «старая версия SqlPackage.exe», на которую вы ссылаетесь, имеет номер версии, начинающийся с 11. Если это так, разработчикам VS2015 необходимо будет установить эти зависимости для старшего SqlPackage.exe:

SqlDom.msi

SQLSysClrTypes.msi

Они доступны в http://www.microsoft.com/en-us/download/details.aspx?id=39301

1

Это, как представляется, быть исправлена. Я тестировал с версией 13.0.3336.1 из sqlpackage.exe из https://www.nuget.org/packages/Microsoft.Data.Tools.Msbuild/ 10.0.60809 путем добавления таблицы:

CREATE TABLE myTable (ColumnA uniqueidentifier DEFAULT NEWSEQUENTIALID()); 

затем генерации файла .dacpac с /Action:Extract, затем опуская таблицу, а затем генерировать SQL скрипт с /Action:Script. Сценарий содержал, в частности:

CREATE TABLE [dbo].[myTable] (
    [ColumnA] UNIQUEIDENTIFIER NULL 
); 

ALTER TABLE [dbo].[myTable] 
    ADD DEFAULT (newsequentialid()) FOR [ColumnA]; 
Смежные вопросы