Oma*_*OUG 2 sql-server t-sql sql-server-2017
我有一个项目数据库,它维护来自不同环境(开发、测试、生产、predprod...)的不同数据库,我需要检查是否AUTO_CREATE_STATISTICS
并AUTO_UPDATE_STATISTICSis
设置为OFF/ON
针对每个数据库以及是否将OFF
其更改为ON
.
ALTER DATABASE DB
SET AUTO_CREATE_STATISTICS ON
ALTER DATABASE DB
SET AUTO_UPDATE_STATISTICS ON
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
小智 5
这使用动态 SQL 查询。它不包括系统数据库。检查is_auto_create_stats_on
or is_auto_update_stats_on
0OFF
并将其更改为ON
declare @sql nvarchar(max);
; with
db as
(
select name, is_auto_create_stats_on, is_auto_update_stats_on
from sys.databases
where name not in ('master', 'tempdb', 'model', 'msdb')
and (
is_auto_create_stats_on = 0
or is_auto_update_stats_on = 0
)
)
select @sql = isnull(@sql + char(13), '')
+ 'ALTER DATABASE ' + quotename(db.name) + ' '
+ 'SET ' + o.opt + ' ON;'
from db
cross apply
(
select opt = 'AUTO_CREATE_STATISTICS'
where is_auto_create_stats_on = 0
union all
select opt = 'AUTO_UPDATE_STATISTICS'
where is_auto_update_stats_on = 0
) o
-- print out for verification before execute
print @sql
exec sp_executesql @sql
Run Code Online (Sandbox Code Playgroud)
您可以在实际执行之前屏蔽sp_executesql
并验证结果
归档时间: |
|
查看次数: |
2979 次 |
最近记录: |