在没有权限运行 Exec sp_updatestats 时,用这个存储过程来更新数据库中所有表的统计信息

该文章提供了一个名为mysp_updatestats的SQLServer存储过程的代码,用于更新数据库中所有表的统计信息。当没有权限运行Execsp_updatestats时,可以使用此存储过程。它遍历所有用户表,检查是否有禁用的聚簇索引,并对每个表执行UPDATESTATISTICS命令,使用FULLSCAN选项。

GO
/****** Object:  StoredProcedure [dbo].[mysp_updatestats]    Script Date: 2023/6/7 15:02:17 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- 在没有权限运行 Exec sp_updatestats 时,用这个存储过程来更新数据库中所有表的统计信息
-- 当前采用的是 UPDATE STATISTICS [dbo].[mytablename]  WITH FULLSCAN 的方式
-- 作者:huang wanjing
-- 执行方式: exec [mysp_updatestats]
create procedure [dbo].[mysp_updatestats]

as

	-- required so it can update stats on ICC/IVs
	set ansi_warnings on
	set ansi_padding on
	set arithabort on
	set concat_null_yields_null on
	set numeric_roundabort off

	declare @exec_stmt_head nvarchar(4000)	-- "UPDATE STATISTICS [sysname].[sysname] "

	declare @updated_count int
	declare @skipped_count int

	declare @sch_id int
	declare @schema_name sysname
	declare @table_name sysname
	declare @table_id int
	declare @table_type char(2)
	declare @schema_table_name nvarchar(640) -- assuming sysname is 128 chars, 5x that, so it's > 128*4+4

	--declare @compatlvl tinyint

	declare 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值