我想构建一个脚本,将每个用户数据库的恢复模式设置为 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