我运行了以下脚本
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 登录中运行了这个脚本。