이번엔 WMI(Windows Management Instrument) 를 이용해 SQL서버를 관리하는 방법에 대해 말씀드릴려고 합니다.
SQL를 관리를 위한 WMI Object 를 아래처럼 가져올 수 있습니다.
이 오브젝트는 클래스들의 인스턴스 집합이기 때문에 SQL를 위한 네임스페이스를 사용합니다.
Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 –list | Where-Object {-not ($_.Name -like ‘__*’)}
[2005] 의 경우 -namespace root\Microsoft\SqlServer\ComputerManagement
많은 클래스들이 있지만 우선 SQL Service 클래스를 살펴보면
Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 -class SqlService | Select-Object ServiceName, DisplayName, SQLServiceType, State, ProcessId | Format-Table -wrap
설치된 SQL 기본 인스턴스들을 확인할 수 있습니다.
여기서 Service States 가 나타내는 숫자는 아래와 같은 의미를 가집니다.
1 Stopped. The service is stopped.
2 Start Pending. The service is waiting to start.
3 Stop Pending. The service is waiting to stop.
4 Running. The service is running.
5 Continue Pending. The service is waiting to continue.
6 Pause Pending. The service is waiting to pause.
7 Paused. The service is paused.
그럼 여기서 사용할 수 있는 메소드들을 확인해 볼까요
Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 –class SqlService | Get-Member -MemberType method
여기선 주로 서비스 계정을 설정 하거나 서비스를 시작 중지 시키는 메소드들 뿐이네요.
위의 메소드를 활용해서 MSSQL Server Instance 계정을 local system에서 도메인 계정으로 변경해 볼까요
$strUser = "DOMAIN\account"
$strPass= "비밀번호"
$wSqlservice = Get-WmiObject –namespace root\Microsoft\SqlServer\ComputerManagement10 -class SqlService –filter "ServiceName='MSSQLSERVER'"
$wSqlservice.SetServiceAccount($strUser, $strPass)
$wSqlservice.StopService()
$wSqlservice.StartService()
그럼 이번엔 SQL Agent Service를 자동으로 실행되게 변경해 볼까요
$sqlservice = Get-WmiObject –namespace root\Microsoft\SqlServer\ComputerManagement10 -class SqlService –filter "ServiceName='SQLSERVERAGENT'"
$sqlservice.SetStartMode(2)
#2 Service is started automatically
#3 Service is started manually
#4 Service is disabled
변경이 잘 되었네요 ^^
참고로 –computerName 이란 프로퍼티를 이용하면 원격지의 WMI Object를 가져올 수 있습니다.
Get-WmiObject .computerName 컴퓨터이름 -namespace
root\Microsoft\SqlServer\ComputerManagement10 -class SqlService -filter
"ServiceName=’MSSQL`$Instance’"
다음편엔 ServerNetworkProtocolProperty 클래스를 확인해 볼 예정입니다.
참고: SQL Server Administration with Windows PowerShell
원본: http://vstarmanv.tistory.com/entry/MSSQLWMI-for-SQL-Management1