小编Rya*_*anB的帖子

使用 sp_msforeachdb 设置恢复模型

我想构建一个脚本,将每个用户数据库的恢复模式设置为 SIMPLE,并将其放入我的开发服务器的代理作业中。看起来很简单(抱歉双关语):

EXEC sp_msforeachdb 'USE ?; IF DB_ID() >= 5 ALTER DATABASE ? SET RECOVERY SIMPLE;'
Run Code Online (Sandbox Code Playgroud)

它也有效。只针对正确的数据库执行,等等。但是,我收到以下错误消息:

消息 5058,级别 16,状态 1,第 1 行
无法在数据库 'tempdb' 中设置选项 'RECOVERY'。

我可以针对用户数据库的 sys.databases 视图编写动态 SQL,但我想知道为什么 sp_msforeachdb 会生成此错误。

有没有人有任何经验可以阐明这一点?

编辑:将代码设置为排除 ID < 5 的任何数据库,我很困惑为什么我会收到此错误。

sql-server

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

标签 统计

sql-server ×1