Windows 8 上的 SQL Server Express 不会锁定 MDF 数据库文件

Aar*_*mpf 3 sql-server sql-server-2012

从历史上看,如果我要重命名 SQL Server 当前正在使用的数据库,则会出现异常。

在这个 Windows 8 桌面上,我在......我的主桌面......我能够将 SQL Server 数据库文件移动到不同的分区......而不会出现任何错误......即使文件当前“正在使用”。我不明白为什么我可以这样做,我想在移动文件时得到一个错误,它应该被列为附加在 SQL Server 中master.sys.databases

我还可以重命名当前正在使用的文件。重点是我今天和我的网络管理员交谈,他实际上试图重命名一个.MDF文件,以确定这个文件是否在使用中。

我不喜欢这个。我真正想要做的是将文件(使用 DOS 命令)从一个磁盘分区移动到另一个磁盘分区,但如果它们当前附加到默认的 SQL Server 实例,则不要尝试移动文件。

我指望这能像宣传的那样工作。我不应该能够重命名或移动当前在 SQL Server 中用作附加数据库的文件。

另外,我很抱歉......但我确实有一个非标准的硬盘驱动器配置。

Disk 0
System Reserved 350mb
D: SSD

Disk 1
C: (Primary volume, Windows 8 Enterprise, etc)
Run Code Online (Sandbox Code Playgroud)

我专门将这个 SSD 专门用于这台机器上的 SQL Server Express,我在任何时候都有六个附加的数据库,实际上我正在努力创建一百万个分离的数据库(并且偶尔会在我需要他们)。

Rem*_*anu 17

SQL Express默认使用AUTO_CLOSE ON创建数据库。只要没有会话使用数据库,自动关闭数据库就会自动关闭它们自己(从而释放文件句柄)。这就像宣传的那样,你只需要阅读小字:

使用 SQL Server 2000 桌面引擎或 SQL Server Express 时所有数据库为 True,所有其他版本为 False,无论操作系统如何。

如果您不喜欢默认行为,只需关闭数据库的自动关闭:

ALTER DATABASE [<dbname>] SET AUTO_CLOSE OFF;
Run Code Online (Sandbox Code Playgroud)