合并复制同步控制
思韵闪耀
2012-07-06
0
/*
复制分发执行的是job,控制复制分发就是控制这些job的开关。

--启动合并复制所有同步
EXEC ReplControl @start = 1
--关闭所有同步
EXEC 合并复制ReplControl @start = 0
*/

CREATE PROCEDURE ReplControl
@start INT --是否启动:0停止,1开启
AS
BEGIN
	DECLARE @execution_status INT,@sql VARCHAR(1000)

	/*停止时,查询正在执行的job,开启时,查询停止的job
	@execution_status:
	1 正在执行。
	4 空闲。
	*/
	SET @execution_status = CASE(@start) WHEN 0 THEN 1 ELSE 4 END
	SET @sql = CASE(@start) WHEN 0 THEN 'msdb.dbo.sp_stop_job @job_id = '
							ELSE 'msdb.dbo.sp_start_job @job_id = ' END 

	CREATE TABLE #enum_job (
	Job_ID uniqueidentifier,
	Last_Run_Date int,
	Last_Run_Time int,
	Next_Run_Date int,
	Next_Run_Time int,
	Next_Run_Schedule_ID int,
	Requested_To_Run int,
	Request_Source int,
	Request_Source_ID varchar(100),
	Running int,
	Current_Step int,
	Current_Retry_Attempt int,
	State int
	)
	insert into #enum_job
	exec master.dbo.xp_sqlagent_enum_jobs 1,hello
		 /*p_sqlagent_enum_jobs <is sysadmin (0 or 1)>,
						  <job owner name>
						  [, <job id>]

	The first parameter identifies whether you want to return information about all jobs on the server, or just jobs owned by a particular job owner. If you specify "0" for this first parameter, it means you want to return job information for a particular job owner. If you specify a "1," it means you want information for all jobs. The second parameter identifies the job owner. This parameter is required on all calls to this XP but is only used when you specify "0" for the first parameter. The third and last parameter only needs to be provided if you want to return information about a particular job_id. */

	DECLARE @Job_ID uniqueidentifier
	DECLARE @item_table TABLE (Job_ID uniqueidentifier)
	INSERT INTO @item_table(Job_ID)
	SELECT A.Job_ID
	FROM #enum_job a
	JOIN msdb.dbo.sysjobs j ON a.Job_ID = j.job_id
	JOIN msdb.dbo.syscategories c ON j.category_id = c.category_id
	WHERE c.name = 'REPL-Merge' AND a.State = @execution_status

	DECLARE @tmpSql VARCHAR(1000)
	WHILE (SELECT COUNT(1) FROM @item_table) > 0
	BEGIN
		SELECT TOP 1 @Job_ID = Job_ID
		FROM @item_table
		SET @tmpSql = @Sql + QUOTENAME(@Job_ID,'''')
		EXEC ( @tmpSql )
		--PRINT @Job_ID

		DELETE FROM @item_table
		WHERE @Job_ID = Job_ID
	END
	DROP TABLE #enum_job
END 


【版权声明】
本站部分内容来源于互联网,本站不拥有所有权,不承担相关法律责任。如果发现本站有侵权的内容,欢迎发送邮件至masing@13sy.com 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

WAN

相关内容

续订Exchange Se...
每个证书都有内置的到期日期。 在Exchange Server中,...
2022-09-16
SkidMap病毒利用Re...
摘要 利用redis未授权访问漏洞入侵云主机; 下载门罗币、莱特币...
2022-04-09
如果在crontab -e...
今天登录服务器,发现之前所有的计划任务都不见了 然后尝试添加 [r...
2022-04-09
了解SQL Server中...
Terabytes of data, millions ofrow...
2022-02-24
sql数据库分离附加_使用...
sql数据库分离附加_使用分离和附加方法移动SQL数据库 sql数...
2022-01-11
免费下载 Windows ...
免费下载 Windows 8.1 Update 1 (KB2919...
2022-01-09

热门资讯

sql中int型与varcha... sql中int转varchar或nvarchar,varchar或nvarchar转int的方法: ...
SQLSERVERAGENT ... 上的 SQLSERVERAGENT 服务启动过,然后又停止了。 (ObjectExplorer) 可...
SQL Server 中4个系... SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb 系统数据库...
SQL Server中如何设置... 对于已经建好的数据库表,是不能在SQL Server Management中可视化地修改ID为自增长...
该表已为了复制而被发布,所以... 场景:从发布库上将一数据库移到另一服务器,在对表改名时提示该表已为了复制而被发布,所以无法重命名。 ...
SQL Server 2008... SQL Server 2008 R2运行越久,占用内存会越来越大。 第一种: 有了上边的分析结果,解...
SQL Server (MSS... SQL Server (MSSQLSERVER) 启动后 自动生成文件 audittrace2022...
如果使用没有提供选项值的 Sq... 如果使用没有提供选项值的 SqlDependency,必须先调用 SqlDependency.Sta...
传递给数据库 'master'... 传递给数据库 master 中的日志扫描操作的日志扫描号无效 错误:连接数据库的时候提示:SQL S...
数据仓库SSAS+SSIS+... 数据仓库SSAS+SSIS+SSRS SSAS- 1,用ssas生成多维度,然后利用excel的da...