小编Gag*_*mba的帖子

IF 语句在使用 sp_MSForEachDB 循环数据库时不跳过 TempDB

[SQL Server 2012 SP2 EE]

为什么以下脚本给我一个与 tempdb 相关的错误?

    exec sp_MSForEachDB '
    IF ( (select database_id from sys.databases where name = ''?'') > 4)
    BEGIN 
    ALTER AUTHORIZATION ON DATABASE::? TO [sa];
    ALTER DATABASE [?] SET RECOVERY SIMPLE;
    END'
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

  Msg 5058, Level 16, State 1, Line 5
  Option 'RECOVERY' cannot be set in database 'tempdb'.
Run Code Online (Sandbox Code Playgroud)

它完成了它应该做的工作。但我想不出错误的原因。我知道 tempdb 的 databaseID 是 2,那么至少它不应该尝试为 tempdb 设置选项。

sql-server sql-server-2012 tempdb

8
推荐指数
1
解决办法
624
查看次数

标签 统计

sql-server ×1

sql-server-2012 ×1

tempdb ×1