Technical Article

Synchronize all stored procedures between two servers

,

Synchronize all stored procedures between two servers by using spSynchStoredProcedure.

--Description: synchronize all stored procedures between two servers
--@ACTION = 0: Synch procedures exist in server1 but not in server2
--@ACTION = 1: Synch all procedures from server1 to server2
--WARNING: use this stored procedure VERY CAREFULLY!
CREATE PROCEDURE [dbo].[spSynchAllProcedures]
@ACTION TINYINT = 0, 
@SourceServer VARCHAR(50) = NULL,
@SourceDatabase VARCHAR(50) = NULL,
@TargetServer VARCHAR(50) = NULL,
@TargetDatabase VARCHAR(50) = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @STRSQL NVARCHAR(MAX);
DECLARE @Params NVARCHAR(MAX);
DECLARE @ProcedureName VARCHAR(50);

--Insert to temp table since some stored procedures contains over 4000 characters
CREATE TABLE #tblTmp(item VARCHAR(50));
IF @ACTION = 0
SET @STRSQL = N'INSERT INTO #tblTmp
SELECT [name]
FROM ' + @SourceServer + '.' + @SourceDatabase + '.dbo.sysobjects
WHERE xtype = ''P''
AND [name] NOT IN (SELECT [name] 
FROM ' + @TargetServer + '.' + @TargetDatabase + '.dbo.sysobjects
WHERE xtype = ''P'')';
ELSE IF @ACTION = 1
SET @STRSQL = N'INSERT INTO #tblTmp
SELECT [name]
FROM ' + @SourceServer + '.' + @SourceDatabase + '.dbo.sysobjects
WHERE xtype = ''P''';

EXECUTE(@STRSQL);

DECLARE Cur CURSOR FOR
SELECT item FROM #tblTmp
OPEN Cur
FETCH FROM Cur
INTO @ProcedureName
WHILE @@FETCH_STATUS = 0
BEGIN
--PRINT @ProcedureName;
EXEC dbo.spSynchStoredProcedure @ProcedureName, @SourceServer, @SourceDatabase, @TargetServer, @TargetDatabase;

FETCH NEXT FROM Cur
INTO @ProcedureName
END
CLOSE Cur
DEALLOCATE Cur

DROP TABLE #tblTmp;
END

Rate

2.67 (3)

You rated this post out of 5. Change rating

Share

Share

Rate

2.67 (3)

You rated this post out of 5. Change rating