использование переменных SqlCmd с поставщиком dbDacFx для MsDeploy

Я пытаюсь использовать msdeploy с помощью поставщика dbDacFx для развертывания моего файла dacpac. Этот проект базы данных использует переменную с именем UserName для создания логинов, пользователей и т. д. Значение для этого необходимо передать во время развертывания.

Итак, я делаю что-то вроде...

msdeploy.exe -verb:Sync -Source:dbDacFx="c:\dev\pmwuiservices\trunk\Build\database\Database.dacpac"-dest:dbDacFx="Data Source=localhost;Integrated Security=True;Database=UIConfig", -setParam:Kind=SqlCommandVariable,scope=dbDacFx,match=UserName,value="IIS AppPool\ASP.NET V4.0"

но я получаю следующее (и, кстати, URL-адрес в сообщении об ошибке не существует)

Info: Adding MSDeploy.dbDacFx (MSDeploy.dbDacFx).
Info: Adding database (data source=localhost;integrated security=True;database=U
IConfig)
Info: Creating deployment plan: Pending.
Info: Verifying deployment plan: Pending.
Info: Deploying package to database: Pending.
Info: Creating deployment plan: Running.
Info: Initializing deployment (Start)
Info: Initializing deployment (Failed)
Info: Creating deployment plan: Faulted.
Info: Verifying deployment plan: Faulted.
Info: Deploying package to database: Faulted.
Error Code: ERROR_EXECUTING_METHOD
More Information: Could not deploy package.
Missing values for the following SqlCmd variables:UserName.
  Learn more at: http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_EXECUTING_M
ETHOD.
Error: Could not deploy package.
Error: Missing values for the following SqlCmd variables:UserName.
Error count: 1.

как можно использовать переменные SqlCmd с поставщиком DbDacFx в MSDeploy?

Благодарность


person np-hard    schedule 26.10.2012    source источник


Ответы (2)


Я подтверждаю, что я получаю ту же ошибку. Статья Ахмеда Эльсайеда http://www.iis.net/learn/publish/using-web-deploy/dbdacfx-provider-for-incremental-database-publishing, помимо вопиющих опечаток, также не обращается к переменным sqlcmd. Лично я не смог найти «настоящую» ссылку, как можно было бы ожидать, например, для dbSqlPackage. Кроме того, я обнаружил необъяснимые анекдотические и аллегорические различия между "-setParam:kind" и "-setParam:type". Опять же, без подтверждающей документации и реального работающего решения кажется, что область действия может быть имя файла (регулярное выражение). Тем не менее, я также видел частичные фрагменты, в которых авторы определяют область действия как поставщика, которому назначается параметр. Вещи Ричарда сработали для меня в прошлом, так что я спокойно продвигаюсь вперед с его предложением.

person JMiera    schedule 28.05.2013

scope параметра SqlCommandVariable должно быть именем файла, к которому вы его применяете, а не поставщиком:

msdeploy.exe -verb:sync ^
    -Source:dbDacFx="c:\dev\pmwuiservices\trunk\Build\database\Database.dacpac"
    -dest:dbDacFx="Data Source=localhost;Integrated Security=True;Database=UIConfig" 
    -setParam:kind=SqlCommandVariable,scope=Database.dacpac$,match=UserName,value="IIS AppPool\ASP.NET V4.0"
person Richard Szalay    schedule 26.10.2012
comment
Я попробовал ваше предложение, но получаю следующий код ошибки: ERROR_EXECUTING_METHOD Дополнительная информация: Не удалось развернуть пакет. Отсутствуют значения для следующих переменных SqlCmd: UserName. Дополнительные сведения см. по адресу: go.microsoft.com/fwlink/?LinkId=221672#ERROR_EXECUTING_M ЭТОД. Ошибка: не удалось развернуть пакет. Ошибка: отсутствуют значения для следующих переменных SqlCmd: UserName. Количество ошибок: 1. - person np-hard; 30.10.2012
comment
В настоящее время у меня такая же проблема после попытки исправления, упомянутого выше... вам удалось найти решение? - person misterManager; 21.11.2013