2

我正在尝试使用 Visual Studio 2010 发布一个简单的站点。我使用 Web 部署。我收到以下错误:

错误 1 ​​Web 部署任务失败。(“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' 无法创建。)

'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无法创建“用户实例=真”。无法连接到数据库“c:\documents and settings\tavi\my documents\visual studio 2010\Projects\WebApplication3\WebApplication3\App_Data\aspnetdb.mdf”。尝试为文件 c:\documents and settings\tavi\my documents\visual studio 2010\Projects\WebApplication3\WebApplication3\App_Data\aspnetdb.mdf 附加自动命名数据库失败。存在同名数据库,或无法打开指定文件,或位于 UNC 共享上。0 0 Web应用程序3

我使用SQL Server Management Studio删除了该aspnetdb.mdf文件,但仍然出现此错误。有什么问题?

4

1 回答 1

1

我遇到了同样的问题(但使用的是 SQL Server 而不是 aspnetdb.mdf),这是一个对我有用的解决方案。我知道这个问题很老,但我将其发布以供将来参考。

请注意,使用此解决方案,您的数据库将在部署新数据库之前被删除。因此,这是一种不安全的操作,只适合开发。

首先,我认为删除数据库的选项应该可以通过项目设置中的复选框获得,但我们不得不手动编辑项目文件。条目是文章How to: Deploy a Database With a Web Application Project。在“使用自动生成的脚本重新部署”一节中,我们可以阅读到自动生成的脚本中的设置ScriptDropsFirst=TruePreSource 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" />

使用这些设置,我可以根据需要重新发布我的数据库。


旁注:此解决方案几乎无法在您无法在需要更新解决方案时立即删除数据库的生产环境中工作。相反,我会选择使用自定义脚本来帮助更新,如同一篇文章中的“使用自定义脚本部署数据库更改”部分所述。

于 2011-06-27T21:29:19.233 回答