프로그래밍/TSQL
[MSSQL]현재 DB의 SP를 다른 DB로 복사하는 SP(Stored Procedure)
정리 습관(★arranging★)
2021. 9. 30. 12:56
728x90

현재 사용중인 동일 서버에서 다른 DB 인스턴스로 SP를 복사해야 할 때, 아래 SP를 참고하여 사용해 보세요.
열심히 만들었고, 테스트 결과 잘동작합니다.
INPUT : 복사할 대상 db 인스턴스 명
제약 : 복사할 원본 db 에서 실행
동작 : 복사할 대상 db의 기존 SP 삭제, 복사할 원본 db SP 생성 구문을 수행
CREATE PROC [dbo].[COPY_SP]
@DB_NAME VARCHAR(100)
AS
BEGIN
DECLARE @SQL VARCHAR(MAX)
--SP 삭제
SET @SQL =' DECLARE @SQL VARCHAR(MAX)
DECLARE b CURSOR FOR
SELECT ''DROP PROC DBO.'' + P.NAME
FROM '+@DB_NAME+'.[sys].[procedures] p
INNER JOIN '+@DB_NAME+'.sys.sql_modules m ON p.object_id = m.object_id
OPEN b
FETCH NEXT FROM b INTO @sql
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = REPLACE(@sql,'''''''','''''''''''')
SET @sql = ''USE '+@DB_NAME+'; EXEC(''''''+@sql+'''''')''
EXEC (@sql)
FETCH NEXT FROM b INTO @sql
END
CLOSE b
DEALLOCATE b
'
--PRINT @SQL
EXEC(@SQL)
--SP INS
DECLARE @NAME VARCHAR(1000)
DECLARE c CURSOR FOR
SELECT Definition,NAME
FROM [sys].[procedures] p
INNER JOIN sys.sql_modules m ON p.object_id = m.object_id
OPEN c
FETCH NEXT FROM c INTO @sql,@NAME
WHILE @@FETCH_STATUS = 0
BEGIN
SET @sql = REPLACE(@sql,'''','''''')
SET @sql = 'USE '+@DB_NAME+'; EXEC(''' + @sql + ''')'
EXEC (@sql)
FETCH NEXT FROM c INTO @sql,@NAME
END
CLOSE c
DEALLOCATE c
END
프로세스 자동화 개발이나, 편의성향상에 사용하면 좋습니다.