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/

 

 



강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

No. Subject Author Date Views
Notice SQL강좌: 챗GPT와 함께 배우는 SQL Server 무료 강좌 목차와 소개 (2023년 9월 업데이트) 코난(김대우) 2023.08.18 31526
Notice Python 무료 강좌 - 기초, 중급, 머신러닝(2023년 6월 업데이트) 코난(김대우) 2021.01.01 16319
1914 SQL Server 메모리 병목 현상 식별 jevida(강성욱) 2016.10.13 1993
1913 SQL Server 시작 옵션 사용 jevida(강성욱) 2016.10.13 1937
1912 Ring buffer를 활용한 External Memory Pressure 확인 jevida(강성욱) 2016.10.12 1373
1911 Memory Pressure jevida(강성욱) 2016.10.12 1171
1910 64비트 버전의 SQL Server 버퍼 풀 메모리 페이지 수 줄이는 방법 jevida(강성욱) 2016.10.12 2827
1909 누락된 공유 잠금 (Missing Shared Locks) jevida(강성욱) 2016.10.12 1613
1908 Ad Hoc Distributed Queries 옵션 jevida(강성욱) 2016.10.12 3398
1907 높은 MAXDOP은 쿼리를 느리게 만들 수 있는가? jevida(강성욱) 2016.10.12 1395
1906 변경된 테이블 이름 복구하기 jevida(강성욱) 2016.10.12 1375
1905 Sys,dm_exec_connections jevida(강성욱) 2016.10.12 2120
» SQL Server 시작 매개 변수 설정 jevida(강성욱) 2016.10.12 2579
1903 AFTER 트리거를 INSTEAD OF 트리거로 변경 후 효율성 향상 jevida(강성욱) 2016.10.12 2045
1902 쿼리 대기 옵션 jevida(강성욱) 2016.10.12 1633
1901 Index create memory 설정 jevida(강성욱) 2016.10.12 1338
1900 Min memory per query 옵션 jevida(강성욱) 2016.10.12 1843
1899 SQL Server 에디션 다운그레이드와 제한된 기능 확인 jevida(강성욱) 2016.10.12 2180
1898 Downgrade from SQL Server Ent to Std Edition jevida(강성욱) 2016.10.12 1396
1897 트랜잭션 로그 여유 공간 모니터링 jevida(강성욱) 2016.10.12 1464
1896 SQL Server가 서비스 격리를 처리하는 방법 jevida(강성욱) 2016.10.12 1188
1895 쿼리 매개변수화 확인하기 jevida(강성욱) 2016.10.12 1491





XE Login