Использование SqlPackage.exe на сервере без установленного SSMS

У меня есть сервер windows 2012. Сервер может получить доступ к моей базе данных SQL. У меня нет доступа к серверу базы данных SQL, и у меня нет доступа для установки SSMS на сервере Windows 2012, на котором запущен мой веб-сайт.

Я хочу использовать SqlPackage.exe, чтобы обновить мою схему базы данных с помощью файла .dacpac

Я получаю следующую ошибку:

Необработанное исключение: System.TypeInitializationException: инициализатор типа для Microsoft.SqlServer.Dac.DacPackage вызвал исключение. ---> System.TypeInitializationException: инициализатор типа для Microsoft.SqlServer.Dac.DacServices выдал исключение. ---> System.TypeInitializationException: инициализатор типа для 'SqlSchemaModelStaticState' выдал исключение. ---> System.IO.FileNotFoundException: не удалось загрузить файл или сборку Microsoft.SqlServer.TransactSql.ScriptDom, Version = 12.0.0.0, Culture = нейтральный, PublicKeyToken = 89845dcd8080cc91 или одну из его зависимостей. Система не может найти указанный файл.

Есть ли способ дать _ 2_ необходимое Microsoft.SqlServer.TransactSql.ScriptDom без установки SSMS на сервере?

Если это невозможно, существует ли существующий автономный исполняемый файл, который может выполнить эту работу?


person Squazz    schedule 01.12.2016    source источник
comment
Если у вас когда-либо возникнут вопросы такого рода, вам следует искать распространяемую версию инструмента. Это сообщение в блоге обсуждает распространение SqlPackage. Могут быть и другие способы заставить его работать, не переходя по распространяемому маршруту, но это не будет официально лицензированным использованием.   -  person Damien_The_Unbeliever    schedule 01.12.2016
comment
Сервер существует, чтобы помешать таким людям, как вы, использовать бэкдоры на сервере. Без дополнительного контекста это плохой вопрос, так как вы должны разговаривать с вашим локальным администратором баз данных / сервером.   -  person clifton_h    schedule 01.12.2016


Ответы (5)


SqlPackage поставляется с SMSS или SQL Data Tools.

Я не вижу другой альтернативы, кроме установки одного из этих двух двоичных файлов для развертывания dacpac, это также возможно с большинства компьютеров, на которых работает Visual Studio, потому что инструменты данных sql являются частью установки VS по умолчанию.

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

person freakydinde    schedule 01.12.2016
comment
Я не пытаюсь запустить его с сервера с установленным VS. В этом случае у меня будет SSDT для работы :) - person Squazz; 01.12.2016

Вы можете загрузить любой из этих пакетов nuget (в зависимости от желаемой версии и платформы). Там вы найдете все недостающие библиотеки DLL.
https://www.nuget.org/packages?q=microsoft.sqlserver.dac+microsoft.sqlserver.dacfx

(Или вы можете написать собственное приложение C # / Powershell, используя Microsoft.SqlServer.Dac.DacServices прямо из пакета.)

person MEMark    schedule 09.12.2017

С августа 2018 года лучше всего загружать ZIP-файл Windows .NET Core с сайта https://docs.microsoft.com/en-us/sql/tools/sqlpackage-download?view=sql.-server-2017#get-sqlpackage-net-core-for-windows

person CrazyPyro    schedule 03.01.2020

Это был самый маленький пакет, который я мог установить и при этом получить работающий инструмент (sqlpackage.exe).

Платформа приложений уровня данных Microsoft® SQL Server® (30 июня 2016 г.)

https://www.microsoft.com/en-us/download/confirmation.aspx?id=53013

указанное выше установило его в каталог ниже, когда я его установил (сегодня)

C: \ Program Files \ Microsoft SQL Server \ 130 \ DAC \ bin \ SqlPackage.exe

ПРИЛОЖЕНИЕ:

Обновление URL в середине 2020 г .:

Платформа приложений уровня данных Microsoft® SQL Server® (18.3.1)

https://www.microsoft.com/en-us/download/details.aspx?id=100297

person granadaCoder    schedule 17.09.2018

Обычно для этого вы устанавливаете SSDT. Я не уверен, есть ли где-нибудь портативная версия SSDT, которая не требует установки, если это то, что вам действительно нужно.

person gmn    schedule 01.12.2016
comment
Я попытался установить SSDT на сервере, но это ничего не изменило: / Он все еще жалуется на отсутствие файла - person Squazz; 01.12.2016
comment
Вы должны ссылаться на sqlpackage изнутри установки ssdt @Squazz - person gmn; 01.12.2016
comment
что-то вроде: \ Program Files (x86) \ Microsoft Visual Studio 14.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ DAC \ 130 \ ... - person gmn; 01.12.2016
comment
Ссылка на него из установки SSDT по-прежнему не работает. У меня нет директории \ 130 \ SDK. У меня есть \ 120, содержащий \ DAC. Вот и все :) - person Squazz; 01.12.2016
comment
Может быть установлена ​​старая версия SSDT, вчера я прошел через этот процесс. - person gmn; 01.12.2016
comment
Возможно, я нашел способ сделать переносную версию, но когда я пытаюсь запустить ее на сервере Windows, я получаю сообщение об ошибке «Доступ запрещен» и всплывающее окно UAC, которое сообщает мне, что это приложение не может работать на вашем компьютере. : / Я запускаю CMD как администратор - person Squazz; 01.12.2016