Я начал создавать свой сайт в WebMatrix, а затем переключился на использование VS2010, чтобы у меня было больше возможностей для Intellisense и отладки. Я загружаю WebMatrix для развертывания, и он работает нормально.
Однако загрузка WebMatrix - это PITA, и я действительно хочу большей гибкости в процессе веб-развертывания.
Итак, я начал изучать msdeploy.exe и как его использовать. Мне удалось успешно синхронизировать сайт, как я хотел, с помощью следующей командной строки:
msdeploy.exe
-verb:sync
-dest:iisApp=MySite,wmsvc=www.mysite.com,username=administrator,password=blahblahblah
-allowUntrusted
-skip:absolutePath=webdeploy.cmd
-skip:absolutePath=web.config
-skip:objectName=dirPath,absolutePath="App_Data"
-skip:objectName=dirPath,absolutePath="bin"
-skip:absolutePath=vwd.webinfo
-source:iisApp="C:\Users\charlie\Documents\Visual Studio 2010\WebSites\MySite"
Мне пришлось использовать -allowTrusted
, потому что сертификат на сервере использует другое имя хоста, чем www. Нет, важная персона. У меня есть -skips
для вещей, которые я тоже не хочу писать в Dest.
Все отлично работает.
Я использую SQL Server (Express) на своем хосте (AMI WebMatrix на AWS).
Я хочу иметь возможность передавать свою базу данных на хост. Я пытаюсь использовать следующую команду msdeploy:
msdeploy.exe
-verb:sync
-source:dbFullSql="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=C:....\MySite.mdf;User instance=true"
-dest:dbFullSql="Server=www.mysite.com\SQLEXPRESS;Initial Catalog=webmatrix_db;Uid=webmatrix_user;Pwd=<pwd>"
Это дает мне
Error: The database 'webmatrix_db' could not be created.
Error: A network-related or instance-specific error occurred while establishing aa
connection to SQL Server. The server was not found or was not accessible. ...
Я думаю, что моя проблема в строке подключения. Я скопировал Server=".\SQLEXPRESS;Initial Catalog=webmatrix_db;Uid=webmatrix_user;Pwd=<pwd>
из пользовательского интерфейса WebMatrix и добавил к нему www.mysite.com
, думая, что где-то нужно мое имя хоста.
Очевидно, что это не правильно, и я не могу найти примеры строк подключения, которые также работают.
Обратите внимание, что SQL не предоставляется непосредственно этим сервером. Я предполагаю, что вызов WebMatrix для msdeploy соединяется с использованием моих учетных данных администратора (не учетных данных SQL), а затем msdeploy вызывает команды SQL на удаленном хосте. Мне нужно что-то вроде ...wmsvc=www.mysite.com,username=administrator,password=blahblahblah
в опции -dest
первого примера, который я привел выше.
Было бы замечательно, если бы я видел журнал того, как WebMatrix вызывал msdeploy.
Какая правильная команда msdeploy делает то, что я хочу?
[ОБНОВЛЕНИЕ - ОТВЕТ]
Одна из лучших вещей в StackOverflow - это то, что публикация вопроса действительно заставляет вас задуматься о том, что вы делаете. Вскоре после того, как я опубликовал вышеизложенное, я понял, что ключом является параметр wmsvc=www.mysite.com,username=administrator,password=blahblahblah
в параметре -dest
. Возник вопрос, как правильно добавить его в мой конкретный пример.
Эта командная строка msdeploy теперь подключается правильно:
msdeploy.exe -verb:sync -source:dbFullSql="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=C:\Users\charlie\Documents\Visual Studio 2010\WebSites\Fiinom\App_Data\MySite.mdf;User instance=true" -dest:dbFullSql="Server=.\SQLEXPRESS;Initial Catalog=webmatrix_db;Uid=webmatrix_user; Pwd=rI2vP3rK6hV8nN8",wmsvc=www.mysite.com,username=administrator,password=blahblahblah -allowUntrusted
Теперь, когда msdeploy успешно подключается и выполняет команды, мне нужно выяснить, как заставить его фактически объединить базу данных. Сейчас я получаю сообщение об ошибке, что таблица уже существует и не может ее создать ...