单用户改多用户失败-1.1

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caishu1995/article/details/85855043

    今天我一定要记下这历史性的一幕。我~第一次~把数据库搞崩了。

    原因是什么呢?我想把测试版数据库拷贝到我本地做一些开发测试。

    不会怎么办呢?百度!查了一圈结论是:先设置单用户,然后分离,接着将文件拷贝到本地,最后附加数据库。我怕出错,于是在测试版数据库上建了一个数据库,然后用这个方法,弄到本地了。嗯这个方法一定行。于是动手弄我想要的数据库,设置成单用户,ok!分离,报错!这可吓坏本宝宝了。试了好几次分离,都不行,那么我先把单用户设置成多用户吧。数据库-右键-属性。报错!不要吓我啊。你不让我分离也就罢了,不能不让我还原成多用户啊。

尝试一:失败

    接着百度。怎么把单用户改成多用户。基本就一种方法。

USE master;
GO
DECLARE @SQL VARCHAR(MAX);
SET @SQL=''
SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID)
FROM master..sysprocesses
WHERE dbid=DB_ID('数据库名');

EXEC(@SQL);

GO 

ALTER DATABASE 数据库名 SET MULTI_USER;

    那我就这么干。代码改好,运行!报错!又错啊。而且还能提示我有一个进程发生死锁。那怎么办?接着百度,死锁怎么处理,他们说杀死进程。

kill 进程号

    然后呢?就算我杀死进程,然后呢?

    备份数据库,在还原?不行!

    总不能删了数据库吧,肯定不行!

    第一次尝试失败

尝试二:成功

    不行啊,这个搞不定啊。找大神啊。于是终于把大神拉到了我这。大神开始操作。。。

    登录远程,在远程上打开那个主机的数据库

    (这里有个插曲,我们登录远程后,打开了别的主机的数据库,因为一个是测试系统的,一个是正式系统的。于是我们成功把正式系统的数据库玩坏了。后来抢救回来了。经此一役,我深刻了解到,数据库要备份数据库要找对。。。)

    大神告诉我,之所以分离会失败,还原也会失败。是因为这个数据库虽然我把他们设置成了单用户,但因为我们的系统在跑着,还是有程序在使用着数据库,所以失败

    那我们该怎么办?首先重启数据库。这样我们所有跟这个数据有关的进程都会自动被杀死。

停止启动

    完成后,点击我们的数据库-右键-属性。

属性

    可以点了,哇,好开心。这时候直接把刚才改的状态,改回来就好了。

限制访问

    改好了,那个单个用户的标记没有啦。然后重启下我的程序的服务,然后一切都恢复正常了。我从鬼门关回来了!开心。活着真好 ლ(́◉◞౪◟◉‵ლ)

猜你喜欢

转载自blog.csdn.net/caishu1995/article/details/85855043