调试我的visual studio 2010网站时出现以下错误:
尝试为文件C:\ Users ... \ Desktop \ Dpp2012New \ App_Data \ dppdatabase.mdf附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者它位于UNC共享上。
描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Data.SqlClient.SqlException:尝试为文件C:\ Users ... \ Desktop \ Dpp2012New \ App_Data \ dppdatabase.mdf附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者它位于UNC共享上。
这是我的web.config
的连接字符串:
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true"
providerName="System.Data.SqlClient"/>
<add name="ConnectionString"
connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\dppdatabase.mdf;Integrated Security=SSPI"
providerName="System.Data.SqlClient"/>
</connectionStrings>
我从我的网站访问它:
Dim connectionString As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
stacktrace将错误行显示为:
Dim conn As New SqlConnection(connectionString)
Dim dr As SqlDataReader
conn.Open() 'This is the error line as per stacktrace
我已经给上述文件夹所需的权限,因此它不能是“或指定的文件无法打开”的问题。如果我们查看与此论坛中相同错误相关的所有帖子,显然可以找到此错误的深刻性。但是,没有一个解决方案可以解决我的问题。我尝试过的一些资源是:
我急切地等待解决方案。
我也有这个问题,这是一个痛苦。我配置了连接字符串并设法解决问题。在连接字符串中,我将AttachDbFilename属性的值| DataDirectory | \ dbfilename.mdf替换为文件的路径。 | DataDirectory目录|只有在数据库文件位于同一项目内的App_Data文件夹中时才能使用。
因此,将AttachDbFilename属性更改为mdf文件的直接路径,修复了我的问题。
AttachDbFilename = C:\ MyApp的\应用\ DAL \ db.mdf
我希望这适合你。
我认为原因是在您的数据库目录中,包含一个具有相同名称的.mdf文件。所以最好的方法是提供完整的路径,你可以替换AttachDbFilename。只需获取数据库文件的完整路径并将其分配到app.config文件中的AttachDbFilename即可。
在大多数情况下,单元测试项目与主项目分开。如果您的数据库是解决方案的本地数据库,则会导致生成的连接字符串无效,因为它无法找到app_data文件夹。
您只需替换| DataDirectory |即可如果需要从单元测试项目连接到数据库,请使用主项目中数据库的相对路径。
请检查连接字符串上数据库的路径。我有相同的错误消息,后来我发现问题是拼写错误的路径。
我一直在我的应用程序中尝试mdf可移植性,所以我一直在使用
public DbContext IoDatabase()
{
var directory = System.IO.Directory.GetCurrentDirectory();
var connectionString = @"Data Source=(localdb)\mssqllocaldb;AttachDbFilename=" + directory + "\\App_Data\\ITIS.mdf;Integrated Security=True;Connect Timeout=30;";
return new NerdDinners(connectionString);
}
有了nerdDinners,我不记得我发现它的位置了
public class NerdDinners : DbContext
{
public NerdDinners(string connString)
{
Database.Connection.ConnectionString = connString;
}
}
然后我可以使用返回类型作为DbContext。
我遇到的主要问题是GetCurrentDirectory()获取编译的文件路径,而不是项目文件路径,因此部署应该设置为GetCurrentDirectory,mdf应该在编译时复制,而不是引用实际的App_Data。在项目中包含你的mdf并在其上输入属性。将副本设置为输出目录。
我和EF有同样的问题。绝对路径解决方案有效。但如果您想将程序移动到新位置,这不是一个好的解决方案。对我来说这就是问题所在。
.mdf
文件,有时VS同步这两个文件.mdf
文件未同步到Debug我的解决方法:
.mdf
和.ldf
文件复制到临时文件夹.mdf
文件复制到项目文件夹中,接受它.mdf
文件也将出现在调试文件夹中到目前为止我发现了解决问题的方法,如果你用下面的方式创建mdf文件,它对于visual studio来说效果会很好。
右键单击服务器中的数据连接Explorar-> add connection->选择Microsoft SQL Server数据库文件,然后选择数据库名称并选择okay。然后这个概率不会出现。关注视频:youtube link
看起来有很多原因......这是我的。
线索在错误信息的最后一行......
System.Data.SqlClient.SqlException:'尝试为文件Q:\ Folder \ FileName.mdf附加自动命名的数据库失败。存在具有相同名称的数据库,或者无法打开指定的文件,或者它位于UNC共享上。
...or it is located on UNC share.
在尝试复制生产环境时...我原本有物理驱动Q:。在我的开发机器停止后......我重建并刚刚创建了一个映射驱动器。开始得到这个错误......然后又回去创建另一个Q:分区,问题解决了。
我有同样的问题,我想我想出来了。在连接字符串中确保连接字符串如下所示:
<connectionStrings>
<add name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;
Integrated Security=SSPI;
AttachDBFilename=|DataDirectory|\aspnetdb.mdf;
User Instance=true"
providerName="System.Data.SqlClient" />
<add
name="NorthwindConnectionString1"
connectionString="Data Source=localhost;
Initial Catalog=Northwind;
Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
现在,第一个
<add
name="ApplicationServices"
connectionString="data source=.\SQLEXPRESS;
Integrated Security=SSPI;
AttachDBFilename=|DataDirectory|\aspnetdb.mdf;
User Instance=true"
providerName="System.Data.SqlClient" />
是默认情况下出现在web.config中的内容。保持不变,并添加另一个连接字符串
<add
name="NorthwindConnectionString1"
connectionString="Data Source=localhost;
Initial Catalog=Northwind;
Integrated Security=True"
providerName="System.Data.SqlClient" />
与您的参数。这对我有用。希望能帮助到你。
尝试创建连接字符串,如下所示:
<add name="ECommerce" connectionString="Data Source=(localdb)\v11.0;Initial Catalog=C:\USERS\dL\DESKTOP\DATABASE\MYSHOP.MDF;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False" providerName="System.Data.SqlClient"/>
它对我有用。
我有一个类似的错误,但使用在代码中配置的连接,而不是配置文件。对我来说,解决方案只是添加“初始目录= MyDatabase”部分。我的代码现在看起来像......
DbConnection connection = new SqlConnection(String.Format(@"Data Source=.\SQLEXPRESS; Integrated Security=SSPI; AttachDbFilename={0}; User Instance=True; Initial Catalog=IPDatabase;", Location));
位置是mdb文件的完整路径,不一定存在。
<add name="Connections" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database.mdf;Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient"/>
在.Net中开发Web应用程序时最烦人的错误之一。我在一年前的一个项目中遇到过这个问题。这对我有用:我已经使用sa帐户登录到SQL Management Studio并将数据库附加到对象资源管理器(数据库 - >右键单击 - >附加)。然后我打开了Security-> Logins - > [myWindowsUsername]并编辑了User Mappings选项卡,为附加数据库提供了dbowner权限。
我确信你可以在没有Management Studio的情况下使用控制台命令来做这些事情,但我对T-SQL并不是那么好,并且无法就此提供建议。
检查您的web-config文件,可能有多个具有相同名称的连接字符串
我是一个EF代码优先项目,它在文件被删除时出现。从包管理器控制台运行Update-Database
使数据库和它的正常。
更改后,错误修复了我
ConfigurationManager.ConnectionStrings[0].ConnectionString
对此
ConfigurationManager.ConnectionStrings["myconnection"].ConnectionString
我在安装应用程序时已将安装文件夹从程序文件更改为C目录。那我的问题就解决了