Памылка пры перайменаванні базы дадзеных у SQL Server 2008 R2

Я выкарыстоўваю гэты запыт перайменаваць базу дадзеных:

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

Але гэта паказвае памылку пры excuting:

<�Р> Msg 5030, узровень 16, стан 2, радок 1
  База дадзеных не можа быць выключна заблакаваная для выканання аперацыі.

Нешта здарылася з маім запытам?

127
Калі вы робіце гэта з SSMS, пераканайцеся, што вы не маеце акно запыту адкрытае супраць гэтай БД, так як гэта асобнае злучэнне, якое ставіць блакіроўку на БД.
дададзена аўтар jleach, крыніца
Там няма нічога дрэннага ў запыце - памылка кажа вам, што іншыя злучэння падлучаныя да базы дадзеных, так што вы не дазволілі перайменаваць яго ў гэты час.
дададзена аўтар Damien_The_Unbeliever, крыніца

11 адказы

Вы можаце паспрабаваць ўсталяваць базу дадзеных у аднакарыстальніцкім рэжыме.

https://stackoverflow.com/a/11624/2408095

use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE    
ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]
ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
259
дададзена
  1. Set the database to single mode:

    ALTER DATABASE dbName
    SET SINGLE_USER WITH ROLLBACK IMMEDIATE
    
  2. Try to rename the database:

    ALTER DATABASE dbName MODIFY NAME = NewName
    
  3. Set the database to Multiuser mode:

    ALTER DATABASE NewName
    SET MULTI_USER WITH ROLLBACK IMMEDIATE
    
39
дададзена
@SamieyMehdi павінен я выкарыстоўваць З RollBack IMMEDIATE для шматкарыстальніцкіх?
дададзена аўтар BendEg, крыніца
карысныя коды, дзякуй
дададзена аўтар Jhoon Bey, крыніца

Паспрабуйце зачыніць усе падлучэння да базы дадзеных першым:

use master
ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE 

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER

Taken from here

17
дададзена

Вы таксама можаце пстрыкнуць правай кнопкай базы дадзеных у аглядальніку аб'ектаў і абярыце Ўласцівасці. Адтуль ідуць у Options. Вылучыце ўвесь шлях ўніз і ўсталяваць Абмежаванне доступу да SINGLE_USER. Зьмяніце назву базы дадзеных, а затым вярнуцца і ўсталяваць яго назад у MULTI_USER.

15
дададзена
Хутка і лёгка!
дададзена аўтар user1336087, крыніца

Гэта таму, што хтосьці атрымлівае доступ да базы дадзеных .. Змесціце базу дадзеных у аднакарыстальніцкі рэжым, а затым перайменаваць яго.

This link might Help you to solve the problem: http://msdn.microsoft.com/en-IN/library/ms345378(v=sql.105).aspx and also this link: http://msdn.microsoft.com/en-us/library/ms345378.aspx

3
дададзена

Змяненне базы дадзеных у аднакарыстальніцкім рэжыме, як паказана ў іншых адказах

Часам, нават пасля пераўтварэння ў аднакарыстальніцкім рэжыме, адзінае злучэнне дазволена да базы дадзеных можа быць у выкарыстанні.

Каб закрыць злучэнне, нават пасля пераўтварэння ў аднакарыстальніцкім рэжыме паспрабаваць:

select * from master.sys.sysprocesses
where spid>50 -- don't want system sessions
  and dbid = DB_ID('BOSEVIKRAM')

Паглядзіце на вынікі і ўбачыць ідэнтыфікатар злучэння з базай дадзеных у пытанні.

Затым выкарыстоўвайце каманду ніжэй, каб закрыць злучэнне (павінен быць толькі адзін, так як база дадзеных знаходзіцца ў рэжыме аднаго карыстача)

<�Р> забіць connection_id

Замяніць connection_id з пасведчаннем ў выніках 1-га запыту

3
дададзена

Гэта зрабіла гэта для мяне:

USE [master];
GO
ALTER DATABASE [OldDataBaseName] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
EXEC sp_renamedb N'OldDataBaseName', N'NewDataBaseName';


-- Add users again
ALTER DATABASE [NewDataBaseName] SET MULTI_USER
GO
2
дададзена

1.database усталяваны першы аднакарыстальніцкі рэжым

ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE

2.RENAME БАЗА ДАНЫХ

ALTER DATABASE BOSEVIKRAM MODIFY NAME = [BOSEVIKRAM_Deleted]

3.DATABAE SET MULIUSER РЭЖЫМ

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER WITH ROLLBACK IMMEDIATE

1
дададзена
use master

ALTER DATABASE BOSEVIKRAM SET SINGLE_USER WITH ROLLBACK IMMEDIATE  

exec sp_renamedb 'BOSEVIKRAM','BOSEVIKRAM_Deleted'

ALTER DATABASE BOSEVIKRAM_Deleted SET MULTI_USER
0
дададзена

Іншы спосаб зачыніць усе злучэнні:

Administrative Tools > View Local Services

Стоп/Запуск "SQL Server (MSSQLSERVER)" сэрвіс

0
дададзена
  1. Усталюйце базу дадзеных у аднакарыстальніцкім рэжыме:

<�Код> ALTER DATABASE DbName SET SINGLE_USER З ROLLBACK IMMEDIATE

This sql statement will modify the access control of the database from multiple users to a single user(i.e you) and makes you the sole user of the db.Now you can go ahead & change the name of your db.

2.Rename базы дадзеных:

<�Код> ALTER DATABASE имя_базы_данного MODIFY NAME = NewName

Гэта SQL заяву робіць важную працу змяніўшы імя БД з імем вы хочаце.

3.Задайте базы дадзеных у шматкарыстальніцкім рэжыме:

<�Код> ALTER DATABASE NewName SET MULTI_USER З ROLLBACK IMMEDIATE

Пасля змены нашага імя БД, мы проста змяніць кантроль доступу туды, дзе ён быў, які па змаўчанні Multi_user.

Note: If you are facing any errors still, read this article for further reference How to: Rename a Database(Sql Server Management Studio)

0
дададзена