Visual C# 和 SQL Server 不能正常工作 // 文件已在使用中

本文关键字:文件 工作 SQL Server 不能 常工作 Visual | 更新日期: 2023-09-27 18:36:14

在过去的几天里,我终于在研究如何使用实体框架将我的C#应用程序(我正在使用Visual Studio 2010 Express)连接到我的SQL Server 2008 R2数据库,我完全陷入了困境。

当我想在VS中添加一个新的数据源时,我只是找到我的db文件的路径,当我最终找到它并尝试选择它时,它给我抛出一个错误,显示

此文件已在使用中。输入新名称或关闭该文件,该文件由其他应用程序使用

这听起来像是胡说八道,因为我两天没有使用我的数据库文件。因此,经过一番谷歌搜索,我终于找到了一个解决方案,我进入了SQL Server配置管理器并重新启动了我唯一的SQL Server。

然后我的数据源连接终于可以工作了,我想现在我是无与伦比的,我会写我的代码直到几天结束,但几分钟后我遇到了另一个问题:O(我在这里写的原因)。

当我在我的VS应用程序中使用SQL Server的任何部分时,我的SQL Server停止工作。我无法浏览那里的数据库,我无法更改任何内容,我无法使用查询,什么都没有。它只是告诉我这个数据库已经在使用中。

当我以相反的方式做时也是如此。

我通过SQL Server Configuration Manager重新启动SQL Server(以便能够再次使用SQL Server),然后,例如,我使用我的数据库查询任务SELECT * FROM nameDatabase

然后我尝试调试我的 C# 应用程序,其中我有一个组合框,SQL Server 必须在其中填充一些名称,并且出现 SQL Server 无法访问的错误。(我现在不能告诉你确切的错误,但在谷歌搜索后,我发现这意味着无法访问SQL Server)。

如果有人想看该代码,那么它是:

using (var entities = new PropertyDatabaseEntities())
{
    var userNames = entities.Login
                .Select(login => login.Username)
                .ToArray();
    comboboxLogin.Items.Clear();
    comboboxLogin.Items.AddRange(userNames);
}

但是当我重新启动SQL Server并在使用SQL Server中的任何内容之前打开此调试时,它可以工作。

有些人告诉我我没有关闭我的连接,但这不可能是真的,因为即使我首先使用SQL Server,我仍然无法使用VS和SQL Server之间的连接。

我真的被困住了。

*连接字符串

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
  </configSections>
  <connectionStrings><add name="Final.Properties.Settings.PropertyDatabaseConnectionString" connectionString="Data Source=.'SQLEXPRESS;AttachDbFilename=&quot;C:'Microsoft SQL Server'MSSQL10_50.SQLEXPRESS'MSSQL'DATA'PropertyDatabase.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True" providerName="System.Data.SqlClient" /><add name="LoginEntities" connectionString="metadata=res://*/DataAccess.LoginModel.csdl|res://*/DataAccess.LoginModel.ssdl|res://*/DataAccess.LoginModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.'SQLEXPRESS;AttachDbFilename=&quot;C:'Microsoft SQL Server'MSSQL10_50.SQLEXPRESS'MSSQL'DATA'Login.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyEntities" connectionString="metadata=res://*/DataAccess.PropertyModel.csdl|res://*/DataAccess.PropertyModel.ssdl|res://*/DataAccess.PropertyModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.'SQLEXPRESS;AttachDbFilename=&quot;C:'Microsoft SQL Server'MSSQL10_50.SQLEXPRESS'MSSQL'DATA'Property.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /><add name="PropertyDatabaseEntities" connectionString="metadata=res://*/DataAccess.PropertyDatabaseModel.csdl|res://*/DataAccess.PropertyDatabaseModel.ssdl|res://*/DataAccess.PropertyDatabaseModel.msl;provider=System.Data.SqlClient;provider connection string='Data Source=.'SQLEXPRESS;AttachDbFilename=&quot;C:'Microsoft SQL Server'MSSQL10_50.SQLEXPRESS'MSSQL'DATA'PropertyDatabase.mdf&quot;;Integrated Security=True;Connect Timeout=30;User Instance=True;MultipleActiveResultSets=True'" providerName="System.Data.EntityClient" /></connectionStrings>
</configuration>

Visual C# 和 SQL Server 不能正常工作 // 文件已在使用中

AttachDBFilename 对于 SQL Express 是唯一的。 数据库只是要使用的数据库的名称,它没有额外的含义。 对于任何生产服务器,您很可能不会使用 AttachDBFilename。 它对于单用户模式下的开发和试验非常有用。

您必须在生产服务器上更改数据源=.''SQLEXPRESS,并从连接字符串中删除附加数据库文件名部分

希望对您有所帮助。

尝试使用逻辑名称,而不是连接字符串中的文件名/路径。 我认为"AttachDbFileName="功能适用于SQL Server EXPRESS版。但至少不建议将其用于生产,并且这不是建立连接的推荐方法。

而不是文件名和路径

Data Source=.'SQLEXPRESS;AttachDbFilename=&quot;C:'Microsoft SQL Server'MSSQL10_50.SQLEXPRESS'MSSQL'DATA'PropertyDatabase.mdf&quot

尝试逻辑名称

服务器=本地主机''SQLEXPR5;数据库=您的数据库;用户 ID = sa;密码=;

看看 www.connectionstrings.com

相关文章: