遇到了一个非常奇怪、烦人的问题。不知何故,我们服务器上运行的 SQL Server 2008 R2 实例有些损坏。
首先,我们注意到昨天创建的数据库丢失了。所以,我们环顾四周,发现它还在那里,但已经分离了。因此,我们尝试附加 mdf,但收到一条类似于The file is currently in use
.
我觉得这很奇怪,所以重新启动了 SQL Server。同样的事情......好吧,是时候采取严厉措施了......所以,我停止了该服务,压缩了 mdf,启动了该服务,解压缩了它,然后尝试恢复它。上面的消息消失了,但后来我得到了:
无法附加与现有数据库同名的数据库
哎哟。当然它没有显示在数据库资源管理器中,所以不知道发生了什么......最后的手段:
DROP DATABASE [DatabaseName]
Run Code Online (Sandbox Code Playgroud)
当然那没有用..这告诉我数据库不存在。所以,我被卡住了……在某一时刻,SQL Server 认为数据库确实存在,而另一方面,它认为数据库不存在……显然它处于混乱状态。
有没有人见过这个?对如何修复它有任何想法吗?
我不是数据库专家,但是当在我们客户公司工作的人要求我们发送包含在如下交易中的所有查询时,我感到非常惊讶:
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
BEGIN TRANSACTION;
SELECT * FROM <table_name> WHERE ..etc
COMMIT TRANSACTION;
Run Code Online (Sandbox Code Playgroud)
在我们所做的只是读取数据(随机即席查询)之前,我从未有过这样的请求。这有什么意义吗?谁能告诉我为什么这是必要的?
非常感谢