SQL Server 시작 매개 변수 설정
- Version : SQL Server 2012
SQL Server의 상태를 확인하기 위해서 트레이스 플래그를 설정하는 경우가 있다. 하지만 SQL Server가 재시작 될 때마다 모든 트레이스를 설정을 하는 것은 매우 불편할 수 있다. 해당 서비스가 시작 될 때 자동으로 트레이스 플래그가 적용될 수 있도록 시작 매개 변수를 서비스에 등록 할 수 있다.
다음 예시는 SQL Server 2012 서비스에서 시작 매개 변수를 추가할 수 있다/
시작 매개 변수는 레지스트리에 저장 된다. SQL Server 구성 관리자를 사용하여 매개 변수를 변경한 경우 직접 레지스트리에 반영된다. 레지스트리를 확인해 보면 각 시작 매개 변수는 별도의 항목(문자열 값)으로 저장되어 있다. 또한 각 매개변수가 SQLArg0, SQLArg1, SQLArg2 등 이름으로 각 추가 매개변수가 추가된다.
다음은 –T1222 트레이스 플래그를 시작 매개 변수에 등록하였다. SQL Server 구성관리자에서 등록 할 수 있다.
시작 매개 변수 등록이 완료 되면 레지스트리에도 다음과 같이 추가 된 것을 확인 할 수 있다.
DMV를 통해서도 레지스트리에 등록된 것을 확인 할 수 있다.
select * from sys.dm_server_registry where value_name like 'SQLArg%' |
시작 매개 변수의 삭제는 구성관리자 또는 레지스트리에서 직접 삭제 할 수 있으며 다음 스크립트로 레지스트리의 시작 매개 변수 삭제가 가능하다.
declare @Parameters varchar(max) = '-T1222', @Argument_Number int, @Argument varchar(max), @Reg_Hive varchar(max), @CMD varchar(max)
if exists (select * from sys.dm_server_registry where value_name like 'SQLArg%' and convert(varchar(max), value_data) = @Parameters) begin select @Argument = value_name, @Reg_Hive = substring(registry_key,len('HKLM\') + 1,len(registry_key)) from sys.dm_server_registry where value_name like 'SQLArg%' and convert(varchar(max), value_data) = @Parameters
set @CMD = 'master..xp_regdeletevalue "HKEY_LOCAL_MACHINE", "' + @Reg_Hive + '","' + @Argument +'"'
select(@CMD) --exec(@CMD) end |
다음 스크립트를 사용하여 레지스트리에 시작 매개 변수를 등록 할 수 있다. 동일한 매개 변수를 여러 서버에 등록 할 때 스크립트를 생성하여 사용하면 매우 편리하다
declare @Parameters varchar(max) = '-T1222', @Argument_Number int, @Argument varchar(max), @Reg_Hive varchar(max), @CMD varchar(max)
select @Reg_Hive = substring(registry_key, len('HKLM') + 1, len(registry_key)), @Argument_Number = max(convert(int, right(value_name,1))) + 1 from sys.dm_server_registry where value_name like 'SQLArg%' group by substring(registry_key, len('HKLM') + 1, len(registry_key))
set @Argument = 'SQLArg' + convert(varchar(1), @Argument_Number) select @Argument, @Reg_Hive
set @CMD = 'master..xp_regwrite "HKEY_LOCAL_MACHINE", "' + @Reg_Hive + '", "' + @Argument + '", "REG_SZ", "' + @Parameters + '"'
select(@CMD) --exec(@CMD) |
[참고자료]
http://www.sqlservercentral.com/articles/Automation/105511/
2013-12-23 / 강성욱 / http://sqlmvp.kr
'SQL Server > SQL Server Tip' 카테고리의 다른 글
변경된 테이블 이름 복구하기 (0) | 2015.07.23 |
---|---|
Sys,dm_exec_connections (0) | 2015.07.23 |
AFTER 트리거를 INSTEAD OF 트리거로 변경 후 효율성 향상 (0) | 2015.07.23 |
쿼리 대기 옵션 (0) | 2015.07.23 |
Index create memory 설정 (0) | 2015.07.23 |