我正在尝试使用Visual Studio 2010发布一个简单的网站。 我使用Web Deploy。我收到以下错误:
错误1 Web部署任务失败。('dbFullSql'类型的对象和路径'数据源=。\ SQLEXPRESS; AttachDbFilename = c:\ documents和settings \ tavi \ my documents \ visual studio 2010 \ Projects \ WebApplication3 \ WebApplication3 \ App_Data \ aspnetdb.mdf; Integrated Security = True;无法创建User Instance = True。)
'dbFullSql'类型的对象和路径'Data Source =。\ SQLEXPRESS; AttachDbFilename = c:\ documents and settings \ tavi \ my documents \ visual studio 2010 \ Projects \ WebApplication3 \ WebApplication3 \ App_Data \ aspnetdb.mdf; Integrated Security = True;无法创建User Instance = True'。 无法连接到数据库'c:\ documents and settings \ tavi \ my documents \ visual studio 2010 \ Projects \ WebApplication3 \ WebApplication3 \ App_Data \ aspnetdb.mdf'。 尝试为文件c:\ documents和settings \ tavi \ my documents \ visual studio 2010 \ Projects \ WebApplication3 \ WebApplication3 \ App_Data \ aspnetdb.mdf附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者它位于UNC共享上。 0 0 WebApplication3
我使用SQL Server Management Studio删除了aspnetdb.mdf
文件,但我仍然收到此错误。可能有什么不对?
答案 0 :(得分:1)
我遇到了同样的问题(但是使用SQL Server而不是aspnetdb.mdf)这个解决方案对我有用。我知道这个问题已经过时了,但是我发布这个问题以供将来参考。
请注意,使用此解决方案将在部署新数据库之前删除数据库。因此,这是一种不安全的操作,只适合开发。
首先,我认为删除数据库的选项应该通过项目设置中的复选框提供,但我们不得不手动编辑项目文件。该条目是How to: Deploy a Database With a Web Application Project。在“使用自动生成的脚本重新部署”一节中,我们可以读取在自动生成的脚本的ScriptDropsFirst=True
中设置PreSource element
,在部署新数据库之前将删除目标数据库。
因此,要执行此操作:在记事本中打开.csproj
文件,找到名为PreSource
的部分(每个配置调试/发布/ ...一个)并添加ScriptDropsFirst="True"
元素,以便整个xml标记在窗体上
<PreSource Path="Data Source=LOCALHOST\SQLEXPRESS%3bInitial Catalog=myDB%3bIntegrated Security=True" ScriptSchema="True" ScriptData="False" CopyAllFullTextCatalogs="False" ScriptDropsFirst="True" />
使用这些设置,我可以按照自己的意愿重新发布数据库。
附注:此解决方案几乎不能在您需要更新解决方案时无法删除数据库的生产环境中运行。相反,我会选择使用自定义脚本来帮助更新,如同一篇文章中的“使用自定义脚本部署数据库更改”一节中所述。