2012-06-13 9 views
13

Sto lavorando su SQL SERVER 2008 & 2008 R2. Come posso rinominare un database in modalità multiutente? Sto usando sp_rename ma restituisce questo errore:Come rinominare il database in modalità multiutente

Msg 15225, Level 11, State 1, Procedure sp_rename, Line 338

+2

Così la gente don' Devo memorizzare quali numeri di errore vanno con quali messaggi di errore, la prossima volta puoi includere il * testo * del messaggio di errore e la sintassi che stai usando? Sono sicuro che molte persone supponevano che 'Msg 15225' fosse' Il database non poteva essere bloccato in modo esclusivo per eseguire l'operazione. –

risposta

31

Non è possibile rinominare un database mentre è in uso. Attendere che una finestra di manutenzione, o forzare il database in modalità utente singolo (che prenderà tutti fuori):

USE [master]; 
GO 
ALTER DATABASE foo SET SINGLE_USER WITH ROLLBACK IMMEDIATE; 
GO 
--EXEC sys.sp_renamedb @dbname = N'foo', @newname = N'bar'; 
ALTER DATABASE foo MODIFY NAME = bar; -- preferred way 
GO 
ALTER DATABASE bar SET MULTI_USER; 
+0

Ho appena provato a rinominare db in modalità MULTI_USER. –

+2

@VikrantPiù potresti rinominare il database mentre è in modalità multiutente, ma * solo * se non ci sono utenti connessi. Il rename viene bloccato richiedendo l'accesso single_user, non strettamente a causa della modalità in cui si trova. Si otterrà il messaggio di errore 5030 se si tenta di rinominare un database che è in uso. –

+6

non dimenticare la barra ALTER DATABASE SET MULTI_USER; ' – Myster

6

Non è possibile utilizzare sp_rename per rinominare un database - la sp in questione sarebbe sp_renamedb. Tuttavia, che è in fila per essere rimosso in una versione futura di SQL Server e il metodo preferito è:

ALTER DATABASE dbname MODIFY NAME = newdbname; 

Ma non si può fare questo in ogni caso, senza un blocco esclusivo sul database.

+0

+1 decisamente preferito su 'sp_renamedb'. –

0

È possibile aprire il gestore di configurazione del server SQL e arrestare e avviare il servizio, questo funziona per me con SQL Server 2008 e 2012 bene.

Quindi rinominare il database direttamente nello studio di gestione del server SQL.

"lavora per me"

Non proprio un "caveat", ma dicono che si desidera ripristinare l'esatto stesso database, si va in opzioni e modificare il nome del mdf e ldf

Problemi correlati