【发布时间】:2016-06-03 16:07:36
【问题描述】:
我正在尝试创建恢复数据库过程。我遇到了一个问题,因为我无法使用命令'use master'。我尝试使用动态 SQL,但没有结果: 我的代码:
alter proc dbo.RestoreDB
(
@location as varchar(4000)
)
as
begin
declare @setMasterDb as varchar(400) = 'use master'
exec (@setMasterDb);
ALTER DATABASE [testDb] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
RESTORE DATABASE [testDb] FROM DISK = @location WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 5
ALTER DATABASE [testDb] SET MULTI_USER
end
GO
有解决办法吗?
【问题讨论】:
-
我认为您不需要切换到 master 来运行恢复...
-
另外,我不认为在 SQL 中允许在存储过程中间切换数据库上下文,但我没有这方面的来源,只是让我脑后发痒。
-
试试 addimg go like "'use master; go ;"
-
正如@Kalmino 所说,您不能在存储过程中切换数据库上下文。您的存储过程可以驻留在您要恢复的数据库以外的数据库中。您可能希望为此过程或您创建的任何其他数据库创建自己的数据库。即
DevMetrics、DbaMetrics等
标签: sql sql-server sql-server-2014