SQL Server/SQL Server Tip

SQL Server 시작 매개 변수 설정

SungWookKang 2015. 7. 23. 09:33
반응형

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

 

 

반응형