服务器重启可能会导致SQL Server中部分数据库变为single user mode

时间:2020-12-03 15:10:57

今天检查公司生产服务器的SQL Server数据库,惊讶的发现有三个生产数据库变为了single user mode。奇怪的是没有任何人和程序执行过SQL语句将这三个数据库设置为single user mode,是自动变的。后来在网上查了查原来发现,重启windows server原来有可能导致SQL Server数据库意外变为single user mode。原文如下:

问题:

Why did SQL Server go into single user mode?

I've had an application that's been running great for several months. Thankfully I use try/catch blocks in my database calls because this morning I get an email alert from my catch block that said:

Message: Login failed for user 'NT AUTHORITY\NETWORK SERVICE'. Reason: Server is in single user mode. Only one administrator can connect at this time.
Source: .Net SqlClient Data Provider
Data: System.Collections.ListDictionaryInternal

So I go and try to access the application, and yep, verified that it doesn't work.

I was able to remote desktop over to the server and log into SQL Server which suddenly "fixed" the issue, but I don't know why this happened. ("Fixed" as in now the application does it's normal CRUD operations.)

Does anyone know why this might have spontaneously happened?

Also, if I go to database -> properties -> options -> State, I verified that Restrict Access is in "MULTI_USER".

The app is powered by the mighty SQL Server 2005 express. Is that the problem?

回答:

Did you check your Windows Event Logs to see if anything happened to the server? Did it reboot after installing any updates?

Got a crazy system admin that didn't let me know that was going on. Just checked the event viewer and saw that's exactly what was going on. Thanks for helping me verify what was going on! – Anjisan Mar 31 '09 at 14:18

@Sung Meister: According to the Event Viewer (system) on the server, he was applying updates which included stopping/starting SQL Server. Would have been nice to know ahead of time. Had no idea he was doing that. Good thing I used try/catch and error logging. – Anjisan Mar 31 '09
 
This also happened to me when Windows Update was installing a service pack. – Jorrit Schippers Mar 30 '12 at 12:18

所以我们看到有些windows server的安全补丁安装后,要求重启服务器。这有可能导致SQL Server的某些数据库变为single user mode。所以在重启服务器前要小心,最好将所有SQL Server的数据库offline之后再重启服务器,这是最安全的做法。

原文链接