如何在SQL Server中进入和使用单用户模式进行超级用户权限操作?

哎哟,你这说的我有点懵,听不懂啊兄弟。
啥叫超级用户?啥叫单用户模式?我跟你讲,我干这行十年了,真没怎么见过这玩意儿。
我只知道,以前在那种老掉牙的服务器上,有时候系统卡得跟死狗似的,你搞不定,就得重启。
但重启前,你得赶紧把重要的数据弄出来,不然就没了。
我记得有回在某个厂家的机器上,他们搞了个什么“紧急模式”,你按个特殊键,就能直接进入系统,把文件拷走。
但那玩意儿跟你说的是不是一个东西,我真不敢乱讲。
你说的这些参数啊,引导菜单啊,我都没碰过,这块我没碰过。
算了,你找懂这个的聊吧,我这老骨头,就别瞎掺和了。

如何操作将数据库处于单用户模式

说白了,SQL Server 2 000里数据库不能既单用户又只给dbo用,得选个折中方案。
有两种常用模式:一是用ALTER DATABASE db SET SINGLE_USER,这会先踢走所有用户,只有dbo能连进来,适合快速修复;二是ALTER DATABASE db SET RESTRICTED_USER,这会锁死数据库,但dbo、db_owner、dbcreator或sysadmin的成员还能进,适合临时管理。
要注意的是,单用户模式下如果dbo挂了,你就得等半天才能恢复。
我一开始也以为单用户就是完全隔离,后来发现它还会保留dbo的连接权。

建议你根据需求选:要绝对隔离就选SINGLE_USER,要保留特定管理员权限就用RESTRICTED_USER。
但记得单用户模式后得用ALTER DATABASE db SET MULTI_USER才能恢复正常访问,别把生产环境锁死忘了。

SQLSERVER数据库置疑、可疑、脱机、单用户、紧急模式等的修复

有一次,我在公司服务器上遇到了一个数据库紧急情况。
那是一个下午,我在查看服务器日志时发现“eisdoc”数据库突然变成了只读、置疑和脱机状态。
当时,我立刻想起曾经遇到过的类似问题,知道这需要紧急修复。

首先,我登录到SQL Server Enterprise Manager,选中数据库服务器,右键点击“属性”,在“服务器设置”页面中找到了“允许对系统目录直接修改”这一项,然后将其勾选。
接着,我执行了紧急修复模式的命令:updatesysdatabasessetstatus=-3 2 7 6 8 wheredbid=DB_ID('eisdoc')。

关闭并重新打开企业管理器,我发现数据库状态确实变成了紧急模式。
虽然能看到系统表,但只能访问系统表,用户表是无法访问的。

接下来,我尝试重建数据库日志文件,执行了dbccrebuild_log('eisdoc', 'E:\MicrosoftSQLServer\Data\eisdoc_log.ldf')。
在执行过程中,遇到了一个错误提示,告诉我其他程序正在使用该数据库。
我退出SQL Server Enterprise Manager,解决了这个问题。

重建日志文件成功后,我收到了一个警告信息,建议我运行DBCCCHECKDB来验证物理一致性。
这让我放心了不少。

然后,我验证了数据库一致性,执行了dbcccheckdb('eisdoc'),结果显示没有分配错误和一致性错误。

最后,我通过sp_dboption 'eisdoc', 'dbouseonly', 'false'设置了数据库为正常状态。
但是,我注意到平时直接操作系统表确实挺危险的。

我好奇的是,如果这个过程发生在不同的服务器或数据库上,会是怎样的情况呢?有没有更快的方法可以解决这个问题?

sql server单用户模式下怎么修改为多用户模式

哎呦,这SQL Server的原理啊,得说说。
咱们先得弄清楚,这玩意儿其实是个客户机/服务器系统。
这可不是一般的意思,而是说它的工作方式有点像两个人在打电话,一个在说,一个在听。

你看,当初Sybase DataServer,这可是个老前辈了,它就是第一个把这个客户机/服务器模式用到商用数据库上的。
这就意味着,客户机和服务器不是在一个机器上,一个发信息,一个收信息。

那我们再来说说这个SQL语句,它其实是个很实用的招数。
比如说,你有个数据库被一个进程占着,你不想让它再占着,怎么办?先用KILL命令把那个进程干掉,然后再把数据库设置为多用户模式,这样别人就能用上了。

具体操作是这样的:先写个字符串,里面加上杀进程的命令,然后执行这个命令,最后把数据库设置成多用户模式。
这代码有点长,但基本思路就是这样。

说到SQL Server,它这客户机/服务器结构,其实是个双层系统。
双层系统啊,就是客户端和服务器端是分开的。
客户端在台式机上,处理业务逻辑,直接和数据库打交道。

不过,现在三层系统也流行起来了。
三层系统就像个中间人,客户端和数据库都通过它来交互。
这中间层可以处理一些复杂的逻辑,让客户端和数据库的交互更简单。

SQL Server呢,它也适应了这趋势,三层解决方案里,它就在中间层。
这样,客户端和数据库的交互就更加高效了。

说实话,我当时也没想明白这中间层到底是个啥,后来查了查资料,原来是这么回事。
不过,这东西得慢慢学,一下子也说不清楚。
总之,SQL Server这个客户机/服务器系统,还是挺有意思的。