【发布时间】:2013-10-30 06:27:28
【问题描述】:
我运行了以下脚本
DECLARE @name VARCHAR(50)
DECLARE @Statment VARCHAR(500)
DECLARE DB_cursor CURSOR
FOR
SELECT name
FROM sys.databases
WHERE name NOT IN ( 'master', 'tempdb', 'model', 'msdb',
'ReportServer$SQLEXPRESS',
'ReportServer$SQLEXPRESSTempDB' )
OPEN DB_cursor
FETCH NEXT FROM DB_cursor INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @name
ALTER DATABASE [@name] SET SINGLE_USER WITH ROLLBACK IMMEDIATE
SET @Statment = 'Backup database ' + @name + ' To disk =N' + ''''
+ 'C:\Mas\' + @name + '.bak' + ''''
PRINT @Statment
EXEC(@Statment)
-- ALTER DATABASE [@name] SET MULTI_USER WITH ROLLBACK IMMEDIATE
-- EXEC sp_dboption @name, N'offline', N'false'
FETCH NEXT FROM DB_cursor INTO @name
END
CLOSE DB_cursor
DEALLOCATE DB_cursor
我收到下面的错误
消息 5011,第 14 级,状态 5,第 11 行
用户无权更改数据库“@name”、数据库不存在或数据库未处于允许访问检查的状态。消息 5069,第 16 级,状态 1,第 11 行
ALTER DATABASE 语句失败。
请让我知道如何解决此问题。
注意:- 我在 sa 登录中运行了这个脚本。
【问题讨论】:
-
为什么要让数据库单用户运行备份???
标签: sql-server database tsql