我在SQL Server 2008 R2的數據庫,我創建了恢復數據庫此存儲過程:還原存儲過程
CREATE PROCEDURE [dbo].[usp_DBRestore]
@DBName nvarchar(60)
,@BackName nvarchar(120)
,@OutMessage nvarchar(4000) output
--,
[email protected] varchar(60),
[email protected] varchar(120),
[email protected] varchar(60),
[email protected] varchar(120)
AS
BEGIN TRY
USE [master]
ALTER DATABASE @DBName SET SINGLE_USER WITH ROLLBACK IMMEDIATE
RESTORE DATABASE @DBName FROM
DISK = @BackName WITH
FILE = 1, NOUNLOAD,
REPLACE,
PASSWORD = 'TEST'
SET @OutMessage = 'OK';
ALTER DATABASE @DBName SET MULTI_USER WITH ROLLBACK IMMEDIATE
END TRY
BEGIN CATCH
ALTER DATABASE @DBName SET MULTI_USER WITH ROLLBACK IMMEDIATE
INSERT [dbo].[ErrorLog]
(
[UserName],
[ErrorNumber],
[ErrorSeverity],
[ErrorState],
[ErrorProcedure],
[ErrorLine],
[ErrorMessage]
)
VALUES(
CONVERT(sysname, CURRENT_USER),
ERROR_NUMBER(),
ERROR_SEVERITY(),
ERROR_STATE(),
ERROR_PROCEDURE(),
ERROR_LINE(),
ERROR_MESSAGE()
)
END CATCH
當我執行的代碼,我看到這個錯誤:
一個USE數據庫聲明不允許在程序,函數或觸發器中使用。
我該如何解決這個錯誤?
**不要在您的存儲過程中擁有'USE ...'......這實際上只是**解決方案。爲什麼在存儲過程中需要這個?你不能把它作爲一個獨立的查詢嗎? (這就是我所做的) – 2012-08-06 09:38:56
即使你的數據庫中沒有'USE master',這個'ALTER DATABASE @ DBName'也不起作用,因爲你不能指定數據庫名作爲參數。 .. – 2012-08-06 09:40:13