为什么我不能同时在多个环境中打开相同的数据库文件(.mdbs)?

时间:2009-05-06 03:47:32

标签: sql-server-2005 linq-to-sql

这种很糟糕。如果我通过VS.Net的服务器资源管理器连接到SQL Server数据库(.mdb文件),那么我无法通过SQL Server 2008 Management Studio在同一文件中连接到同一文件。该文件已被锁定。

例如,我从SQL Server Management Studio

收到以下错误
  

CREATE FILE遇到了操作   系统错误32(过程不能   访问该文件,因为它正在   另一个进程使用。)while   试图打开或创建   物理文件'C:\ SQL Server 2000   示例数据库\ NORTHWND.MDF'。   (Microsoft SQL Server,错误:5123)

我正在玩LINQ to SQL。因此,您需要连接到VS.Net服务器资源管理器以拖动表对象并创建.dbml文件。但是,如果我想使用管理工作室的旧学校SQL查询数据库,我不能......我得到上述错误。同样,如果我尝试使用LINQPad进行连接(很棒的工具...但由于这个恼人的文件锁无用)。

那里的任何人都知道如何同时从VS.Net的服务器资源管理器,SQL Server的管理工作室和LINQPad等多个程序连接到同一个.mdb文件?

谢谢!

顺便说一句,这个网站简直太棒了,我喜欢他们在ASP.Net中创建它并使用LINQ to SQL进行数据访问的事实......好吧,关闭主题。遗憾。

2 个答案:

答案 0 :(得分:2)

一旦连接到该文件,sql引擎将锁定该文件。没有什么能阻止您将文件附加到SQL Server实例,然后从多个应用程序连接到它。

答案 1 :(得分:0)

线索的名称是“SQL 服务器” - 似乎您无法将数据库附加到两个不完全不合理的地方,因为您无法将其提供两次(鉴于此服务器负责事务,日志,锁定等事务。

因此...

您希望在SQL Server实例中“运行”数据库,然后从Visual Studio连接到该实例,然后再连接到该文件,而不是直接打开文件(该选项是因为它简化了某些部署模型),指出你应该得到你需要的东西。

顺便说一下,它完全有可能从Visual Studio中的“旧学校SQL” - 虽然我不知道相当于LinqPad