首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用WebMatrix (msdeploy)发布WebMatrix站点

使用WebMatrix (msdeploy)发布WebMatrix站点
EN

Stack Overflow用户
提问于 2011-10-23 20:18:19
回答 1查看 1.5K关注 0票数 2

我开始用WebMatrix构建我的站点,然后切换到使用VS2010,这样我就可以拥有更好的智能感知和调试。我一直在加载WebMatrix以进行部署,它一直运行良好。

但是,加载WebMatrix是一个PITA,我实际上希望在web部署过程中具有更多的灵活性。

因此,我开始学习msdeploy.exe以及如何使用它。我成功地通过以下命令行实现了站点的同步:

代码语言:javascript
复制
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的东西,我不想写的东西,以及最。

一切都很好。

我在我的主机上使用Server (Express) (AWS上的WebMatrix AMI )。

我也希望能够将我的数据库推送到主机上。我正在尝试使用以下:

代码语言:javascript
复制
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>"

这给了我

代码语言:javascript
复制
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> UI中复制了WebMatrix,并在它之前添加了www.mysite.com,认为它需要我的主机名。

显然,这是不正确的,我也找不到任何连接字符串的例子。

请注意,此服务器不直接公开SQL。我假设WebMatrix的调用是首先使用我的管理凭据(而不是SQL凭据)进行连接,然后msdeploy调用远程主机上的SQL命令。我需要类似于上面给出的第一个示例中的...wmsvc=www.mysite.com,username=administrator,password=blahblahblah选项中的-dest

如果我能看到WebMatrix如何调用msdeploy的日志,那就太棒了。

什么是正确的msdeploy命令来做我想做的事情?

更新-应答

关于StackOverflow最好的事情之一,就是发布一个问题真的会让你思考你在做什么。发布上述内容后不久,我就意识到-dest参数中的-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正在成功地连接并执行命令,我需要弄清楚如何使它真正地合并数据库。现在它给了我一个错误,一个表已经存在并且不能创建它.

EN

回答 1

Stack Overflow用户

发布于 2012-07-18 15:42:09

这与你关于合并数据库的旁注有关.

目前,Web没有任何支持数据库合并的提供程序-- dbFullSql提供程序使用对象("SMO")来编写db内容的脚本,然后我们将其应用到另一边。因此,Web部署实际上只会用源db覆盖目标db。

如果您认为这是一个“合并”,您可以使用SMO脚本选项绕过该表已经存在的错误--这就是WebMatrix为使db发布/下载工作所做的事情。对于您的源代码,只需添加:,scriptDropsFirst=true (此脚本将删除源数据库中的所有对象,以便如果它们存在于目标上,则它们将被删除,并且不会阻止您)您可能还需要:、copyAllUsers=false (如果您不是远程SQL数据库中的系统管理员,则很可能无法创建登录,这是服务器级别的操作。通常情况下,如果不使用此设置,则会出现创建登录时的错误,或者登录不存在,因为SMO将我们的数据库用户脚本为“用于登录”,而服务器上不存在该登录)

希望这能帮上忙!克里斯蒂娜

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7868902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档