gpt4 book ai didi

c# - Visual C# 和 SQL Server 无法一起正常工作//文件已在使用中

转载 作者:太空狗 更新时间:2023-10-29 23:33:19 24 4
gpt4 key购买 nike

在过去的几天里,我终于研究了如何使用 Entity Framework 将我的 C# 应用程序(我使用的是 Visual Studio 2010 Express)连接到我的 SQL Server 2008 R2 数据库,但我完全被卡住了。

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

This File is already in use. Enter new name or close that file, which is used by another application

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

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

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

反之亦然

我通过 SQL Server 配置管理器重新启动 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>

最佳答案

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

您必须更改生产服务器上的 data source=.\SQLEXPRESS 并从连接字符串中删除 attachdbfilename 部分

希望对你有所帮助。

关于c# - Visual C# 和 SQL Server 无法一起正常工作//文件已在使用中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10873919/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com