背景
我在Visual Studio 2010中使用部署工具
我右键单击了我的项目并选择了包/发布设置。将我的所有设置都放在那里......
然后我使用“web deploy”将文件传输到运行远程代理服务的远程服务器,这很正常。我在Web.Release.config上进行的转换可以完成它们的操作,服务器可以访问我手动创建的数据库。
问题:
我的下一步是让数据库部署也能正常工作。
我进入了Package / Publish SQL选项卡并输入了目标数据库的Connection字符串。
(Data Source=MyDBServer;Initial Catalog=Database2;User ID=User;Password=pass)
此数据库已空,可以接受导入。
我还输入了源数据库的连接字符串。它位于同一台服务器上。
(Data Source=MyDBServer;Initial Catalog=Database;User ID=User;Password=pass)
数据库脚本选项设置为架构和数据(更改此选项没有区别),数据库脚本设置为[自动生成的架构和数据]
当我现在部署它时,我收到错误:
错误4 Web部署任务 失败。((09/06/2010 16:41:51)一个错误 在请求发生时发生 在远程计算机上处理。)
(09/06/2010 16:41:51)错误 在请求发生时发生 在远程计算机上处理。该 输入类型'未知'不是预期的 此时。序列化流 可能已被破坏。
其他信息:
我可以成功创建一个没有问题的包。我查看了zip中的内容,可以看到SQL生成正常(因此连接到数据库没有问题)。然后,我可以复制此SQL并将其作为新数据库的新查询运行,并且可以很好地创建表和数据。
我似乎无法解决出错的地方,我用Google搜索错误,并且整个互联网上都没有条目。有人有什么想法吗?
附录:
为了进一步了解可能发生的事情,我将包发送到服务器并使用IIS导入它。它告诉我,我需要SQL Server管理对象。所以我安装了它。
接下来尝试它告诉我我的用户没有创建数据库的权限,我认为这一定是问题。 :授予访问权限 - 重新运行。通过!
所以我删除了所有的表,然后回到VS2010点击发布,我得到了同样的错误。 :(
答案 0 :(得分:3)
对它进行排序!
谢天谢地,当我回到hanselman的视频时,我完全没有想法。他提到Web部署代理可以拥有权限。我进去看看,其中有一个标签名为log on。
我输入了具有相当级别访问权限的帐户的detials并点击了确定。
然后我按要求重新启动服务以启用更改。
然后我回到VS 2010并点击了Publish Web。
音乐到我的眼睛,我看到“发布成功”的字样,我检查数据库,表格在那里。优良!
我觉得我害怕办公室有点过于兴奋,如果你遇到这个问题并且这个解决方案为你解决了这个问题,那就试着忍住这句话“是的!是的,进去吧!”一边疯狂地笑,否则人们会认为你和我一样奇怪。