6

背景:
我正在使用 Visual Studio 2010 中的部署工具。
我右键单击我的项目并选择了打包/发布设置。把我所有的设置都放在那里...

然后我使用“web deploy”将文件传输到运行远程代理服务的远程服务器,这工作正常。我在 Web.Release.config 上的转换可以完成它们的工作,服务器可以访问我手动创建的数据库。

问题:
我的下一步是让数据库部署也正常工作。我进入 Package / Publish SQL 选项卡并输入目标数据库的连接字符串。

(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 并将其作为新数据库上的新查询运行,并且可以很好地创建表和数据。

我似乎无法弄清楚哪里出了问题,我用谷歌搜索了错误,整个互联网上都没有条目。有人有想法么?

附录:
为了进一步了解可能发生的情况,我将包发送到服务器并使用 IIS 将其导入。它告诉我我需要 SQL Server 管理对象。所以我安装了那个。下一次尝试它告诉我我的用户没有创建数据库的权限,我认为这一定是问题所在。:授予访问权限 - 重新运行。通过!所以我删除了所有的表并回到 VS2010 点击发布,我得到了同样的错误。:(

4

1 回答 1

3

整理好了!

谢天谢地,当我回到 hanselman 的视频时,我完全没有想法。他提到 Web 部署代理可以有权限。我进去看了看,它的属性中有一个名为登录的选项卡。

我输入了具有相当访问权限的帐户的详细信息,然后单击“确定”。

然后我按照要求重新启动服务以启用更改。

然后我回到 VS 2010 并单击 Publish Web。

音乐在我眼中,我看到“发布成功”字样,我检查了数据库和表格。优秀的!

我想我有点过度兴奋吓到了办公室,如果你遇到了这个问题并且这个解决方案为你解决了这个问题,试着忍住大喊“是的!,是的,进来!”的诱惑。一边疯狂地笑,否则人们会认为你像我一样奇怪。

于 2010-06-10T09:16:19.343 回答