引锁,重建任务

简介:

当使用数据库管理功能下的维护计划,建立索引失败的情况下,使用代理执行作业的方式,比较实用的,代码如下:
方法1:
USE [msdb]
GO

/** Object: Job [索引重建] Script Date: 2018-2-8 16:29:40 **/
BEGIN TRANSACTION
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
/** Object: JobCategory [[Uncategorized (Local)]]] Script Date: 2018-2-8 16:29:40 **/
IF NOT EXISTS (SELECT name FROM msdb.dbo.syscategories WHERE name=N'[Uncategorized (Local)]' AND category_class=1)
BEGIN
EXEC @ReturnCode = msdb.dbo.sp_add_category @class=N'JOB', @type=N'LOCAL', @name=N'[Uncategorized (Local)]'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback

END

DECLARE @jobId BINARY(16)
EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'索引重建', 
@enabled=1, 
@notify_level_eventlog=0, 
@notify_level_email=0, 
@notify_level_netsend=0, 
@notify_level_page=0, 
@delete_level=0, 
@description=N'无描述。', 
@category_name=N'[Uncategorized (Local)]', 
@owner_login_name=N'sa', @job_id = @jobId OUTPUT
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
/** Object: Step [索引] Script Date: 2018-2-8 16:29:40 **/
EXEC @ReturnCode = msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N'索引', 
@step_id=1, 
@cmdexec_success_code=0, 
@on_success_action=1, 
@on_success_step_id=0, 
@on_fail_action=2, 
@on_fail_step_id=0, 
@retry_attempts=0, 
@retry_interval=0, 
@os_run_priority=0, @subsystem=N'TSQL',@command=N'/物料表索引/
ALTER INDEX [PK_BD_MATERIAL] ON [dbo].[T_BD_MATERIAL] REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)

ALTER INDEX [IDX_BD_MTRL_FMASTERID] ON [dbo].[T_BD_MATERIAL] REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)

ALTER INDEX [IDX_BD_MTRL_COMBIN] ON [dbo].[T_BD_MATERIAL] REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)', @database_name=N'数据库名称', @flags=0
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_update_job @job_id = @jobId, @start_step_id = 1
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id=@jobId, @name=N'计划1', 
@enabled=1, 
@freq_type=4, 
@freq_interval=1, 
@freq_subday_type=1, 
@freq_subday_interval=0, 
@freq_relative_interval=0, 
@freq_recurrence_factor=0, 
@active_start_date=20180208, 
@active_end_date=99991231, 
@active_start_time=230000, 
@active_end_time=235959, @schedule_uid=N'4e5e768f-a2b5-4042-9766-ba8e5ebbd42e'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback
COMMIT TRANSACTION
GOTO EndSave
QuitWithRollback: 
IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION
EndSave:

GO
方法2:
右击索引,选择重新生成,打开数据库跟踪,找到生成语句 ,把代码粘贴到执行计划中,推荐使用这种方式













本文转自51GT51CTO博客,原文链接: http://blog.51cto.com/yataigp/2070269,如需转载请自行联系原作者

相关文章
|
6月前
|
存储
服务器数据恢复—存储中卷被删除后重建新卷的数据恢复方案
服务器存储数据恢复环境: 某品牌FlexStorage P5730服务器存储,存储中有一组由24块硬盘组建的RAID5阵列,包括1块热备硬盘。 服务器存储故障: 存储中的2个卷被删除,删除之后重建了一个新卷。需要恢复之前删除的一个卷的数据。
|
机器学习/深度学习 传感器 编解码
没有3D卷积的3D重建方法,A100上重建一帧仅需70ms
没有3D卷积的3D重建方法,A100上重建一帧仅需70ms
|
SQL 存储 监控
为什么我建议需要定期重建数据量大但是性能关键的表
为什么我建议需要定期重建数据量大但是性能关键的表
为什么我建议需要定期重建数据量大但是性能关键的表
|
SQL 缓存 自然语言处理
实践了5千万的数据表和重建索引,学到了!
实践了5千万的数据表和重建索引,学到了!
1688 0
|
索引
Confluence 5 如何重建索引
Confluence 5.4 使用的是 luence 作为全文检索引擎。 如果系统有过重大更新的时候,你可以通过下面的方式重新刷新已经索引的数据。
1060 0
|
SQL Oracle 关系型数据库