-
[MSSQL] 트리거(Trigger) 스크립트 추출SQL Server/스크립트 2022. 4. 9. 15:24
SQL Server에서 [스크립트생성]을 통해 테이블, StoredProcedure등 스크립트 추출이 가능하다.
하지만 트리거는 단독으로 스크립트 추출이 불가능하다.(구글링한바로는 없는듯)
스크립트생성으로 테이블 추출할 때 옵션으로 트리거를 같이 추출할 수는 있지만
트리거를 꽤 많이 보유하고 있는 데이터베이스라면 트리거를 하나하나 스크립트로 빼는게 사실상 힘들기에.
이하, 배치파일을 콜함으로써 트리거만 추출 할 수 있다.
※배치파일명:GetTriggerScriptforSQLServer.bat으로 저장한 후,
cmd에서 변수를 넣어서 콜.
예) >call GetTriggerScriptforSQLServer.bat 서버이름 DB이름 유저 비밀번호
call GetTriggerScriptforSQLServer.bat HOSTSER Database sa password
1234567891011121314151617181920212223242526272829303132333435363738@echo offsetlocal enabledelayedexpansionif "%1" == "" goto endset SRV=%1if "%2" == "" goto endset DBNAME=%2if "%3" == "" goto endset USR=%3if "%4" == "" goto endset PWD=%4set TARGET=%5if "%5" == "" (sqlcmd -S %SRV% -d %DBNAME% -U %USR% -P %PWD% -h -1 -Q "SET NOCOUNT ON SELECT name FROM sys.objects WHERE type = 'TR';" > GetList.txt) else (echo %TARGET% > GetList.txt)SET SNAME=""for /f %%a in (GetList.txt) do (for /f "usebackq" %%b in ('sqlcmd -S %SRV% -d %DBNAME% -U %USR% -P %PWD% -h -1 -Q"SET NOCOUNT ON SELECT s.name FROM sys.objects o INNER JOIN sys.schemas s ON o.schema_id = s.schema_id WHERE o.type = 'TR' AND o.name = '%%a';"') do @set SNAME=%%becho USE [%DBNAME%]> !SNAME!.%%a.Trigger.sqlecho GO>> !SNAME!.%%a.Trigger.sqlecho SET ANSI_NULLS ON>> !SNAME!.%%a.Trigger.sqlecho GO>> !SNAME!.%%a.Trigger.sqlecho SET QUOTED_IDENTIFIER ON>> !SNAME!.%%a.Trigger.sqlecho GO>> !SNAME!.%%a.Trigger.sqlecho DROP TRIGGER !SNAME!.%%a>> !SNAME!.%%a.Trigger.sqlecho GO>> !SNAME!.%%a.Trigger.sqlsqlcmd -S %SRV% -d %DBNAME% -U %USR% -P %PWD% -y 0 -h -1 -Q "SET NOCOUNT ON SELECT m.definition FROM sys.objects o INNER JOIN sys.sql_modules m ON o.object_id = m.object_id WHERE o.name = '%%a';" >> !SNAME!.%%a.Trigger.sqlecho GO>> !SNAME!.%%a.Trigger.sql):endcs 5번째 변수는 특정 트리거만 스크립트로 추출하고 싶을 때 트리거명을 변수로 지정해서 콜하면 된다.
/이상
'SQL Server > 스크립트' 카테고리의 다른 글
[MSSQL] 에이전트잡(AgentJob) 스크립트 추출 (0) 2023.09.18 [MSSQL] 연결된서버(LinkedServer) 스크립트 추출 (0) 2023.09.18 [MSSQL] 테이블 건수 확인(Row) (0) 2022.04.09 [MSSQL] MSSQL2012 사용자계정 추출 (0) 2022.04.09 [MSSQL] MSSQL2000 사용자계정 추출 (0) 2022.04.09