데이터베이스 개발자 Tip & 강좌

SQLER의 개발자들이 만들어가는 데이터베이스 사용자 Tip & 강좌 게시판입니다. SQL서버, Oracle, MySQL 등 여러 클라우드/오픈소스 기반 데이터베이스 개발 및 운영 관련 팁과 쿼리 노하우를 이곳에서 가장 먼저 접하실 수 있습니다. 많은 도움 되시길 바랍니다.

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
1911 Memory Pressure jevida(강성욱) 2016.10.12 1123
1910 64비트 버전의 SQL Server 버퍼 풀 메모리 페이지 수 줄이는 방법 jevida(강성욱) 2016.10.12 2472
1909 누락된 공유 잠금 (Missing Shared Locks) jevida(강성욱) 2016.10.12 1565
1908 Ad Hoc Distributed Queries 옵션 jevida(강성욱) 2016.10.12 3104
1907 높은 MAXDOP은 쿼리를 느리게 만들 수 있는가? jevida(강성욱) 2016.10.12 1308
1906 변경된 테이블 이름 복구하기 jevida(강성욱) 2016.10.12 1308
1905 Sys,dm_exec_connections jevida(강성욱) 2016.10.12 1935
» SQL Server 시작 매개 변수 설정 jevida(강성욱) 2016.10.12 2492
1903 AFTER 트리거를 INSTEAD OF 트리거로 변경 후 효율성 향상 jevida(강성욱) 2016.10.12 1790
1902 쿼리 대기 옵션 jevida(강성욱) 2016.10.12 1575
1901 Index create memory 설정 jevida(강성욱) 2016.10.12 1236
1900 Min memory per query 옵션 jevida(강성욱) 2016.10.12 1690
1899 SQL Server 에디션 다운그레이드와 제한된 기능 확인 jevida(강성욱) 2016.10.12 2124
1898 Downgrade from SQL Server Ent to Std Edition jevida(강성욱) 2016.10.12 1344
1897 트랜잭션 로그 여유 공간 모니터링 jevida(강성욱) 2016.10.12 1356
1896 SQL Server가 서비스 격리를 처리하는 방법 jevida(강성욱) 2016.10.12 1145
1895 쿼리 매개변수화 확인하기 jevida(강성욱) 2016.10.12 1435
1894 SQL Server에서 Drop 및 Delete 사용자 찾기 jevida(강성욱) 2016.10.12 1630
1893 SQL Server 트랜잭션 로그 읽기 jevida(강성욱) 2016.10.12 2098
1892 MaxBCPThreads에 따른 BCP 병렬출력 jevida(강성욱) 2016.10.11 1090





XE Login