2010. 10. 26. 17:26

오늘은 SqlServerAlias 에 대해 말씀드리고자 합니다. SqlServerAlias는 클라이언트들의 connection 를 빠르고, 편리하게 해줍니다
자세하게 나온 사이트가 있네요 http://www.mssqltips.com/tip.asp?tip=1620 참고

 

그럼 WMI를 이용해서 제 서버에 등록된 SQL Alias정보를 볼까요

Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 –class SqlServerAlias

 

등록된 정보가 없으면 아무내용도 나오지 않겠지만 Sql Server Configuration Manager 를 통해 Alias를 등록한 경우에는 등록된 내용이 나옵니다.이 모습을 Sql 구성도구에서 확인하면 아래와 같습니다.





등록된 Alias oldship 를 삭제해 보도록 하겠습니다.

$strAlias="oldship"

$oldInfo=Get-WmiObject –namespace root\Microsoft\SqlServer\ComputerManagement10

-class SqlServerAlias -filter "AliasName=$oldInfo"

$oldInfo.Delete()

 


참 쉽죠~~


아쉽게도 Get-WmiObject 는 존재하는 클라이언트 Alias를 삭제하는 역할만 가능합니다.
별칭을 신규로 생성하기 위해선 별도의 .NET 클래스 Microsoft.SqlServer.Management.Smo.Wmi.ServerAlias 를 로드해서 사용해야하고 이 클래스가 포함된 어셈블리는 2008의 경우 Microsoft.SqlServer.SqlWmiManagement.dll 입니다.(2005의 경우는 Microsoft.SqlServer.Smo)


그럼 우선 클래스를 사용하기 위해 어셈블리를 로드해볼까요

[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement") | Out-Null

 


어셈블리를 로드후 SQL를 위한 WMI를 포함하고 있는 SMO 오브젝트를 생성해야 합니다.
이 오브젝트는 앞으로 우리가 생성할 SQL Alias의 부모가 됩니다.

$strComputer='.'  #localhost

$objComputer=New-Object Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer $strComputer #초기화

$newalias=New-Object ("Microsoft.SqlServer.Management.Smo.Wmi.ServerAlias")    

$newalias.Parent=$objComputer

$newalias.Name='newAlias' # name of the new alias

$newalias.ServerName='SPACESHIPS'  #연결할 원본 인스턴스

$newalias.ConnectionString=9009    #port

$newalias.ProtocolName='tcp'        #프로토콜

$newalias.Create()

 

아래와 같이 별칭이 생성되었습니다.




다음엔 ServerNetworkProtocol에 대해 알아보겠습니다.


원본: http://vstarmanv.tistory.com/entry/MSSQLWMI-for-SQL-Management3-SqlServerAlias

Posted by 알 수 없는 사용자
:
2010. 10. 5. 06:00

이번엔 ClientNetworkProtocol Class에 대해 알아보겠습니다.
ClientNetworkProtocol
Client 의 네트워크 접속 프로토콜의 정의와 우선순위를 결정하는 클래스입니다.

지난번과 같이 WMIObject ClientNetworkProtocol 클래스를 가져와 볼까요

Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 -class ClientNetworkProtocol | Select-Object ProtocolName, ProtocolDisplayName, ProtocolOrder



저 같은 경우 로컬에 SQL이 깔려있기 때문에 우선순위 첫번째가 메모리로 나오네요
원격인 경우 TCP 1 로 보입니다. 참고로 ProtocolOrder 0은 비사용중임을 나타냅니다.



 이 클래스의 메소드들은..

Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 -class ClientNetworkProtocol |
Get-Member -memberType Method | Select-Object Name



이와 같이 프로토콜의 사용여부와 우선순위를 설정하는 메소드들입니다.



위에 메소드를 이용한 아래의 간단한 스크립트는 Named Pipes 를 비사용으로 바꾸는 역할을 합니다.

$WClientNetProtol=Get-WmiObject –namespace root\Microsoft\SqlServer\ComputerManagement10 -class ClientNetworkProtocol -filter "ProtocolName='np'"
$WClientNetProtol.SetDisable()



Named Pipes가 비사용중으로 바뀌었네요



ClientNetworkProtocol의 속성 변경을 원할 경우 ClientNetworkProtocolProperty 클래스를 이용하시면 됩니다.

살짝 살펴보면 ..

Get-WmiObject -namespace root\Microsoft\SqlServer\ComputerManagement10 -class

ClientNetworkProtocolProperty | Select-Object PropertyName, PropertyNumVal, PropertyStrVal,ProtocolName


기본접속 포트가 1433으로 설정되어 있네요


 아래는 TCP/IP 프로토콜의 기본접속 포트를 1433에서 15886로 변경하는 스크립트입니다.

$WClientNetProto=Get-WmiObject –namespace root\Microsoft\SqlServer\ComputerManagement10 –class
ClientNetworkProtocolProperty -filter "PropertyName='Default Port'"

$ WClientNetProto.SetNumericalValue(15886)


참고: SQL Server Administration with Windows PowerShell

원본: http://vstarmanv.tistory.com/entry/MSSQLWMI-for-SQL-Management2

'Powershell > @우주인' 카테고리의 다른 글

플랫폼 구분(64/32bit)  (0) 2010.10.05
PowerShell Debug(Set-PSDebug)  (0) 2010.10.05
Clip을 이용한 복사  (0) 2010.09.15
Add-PSSnapin  (0) 2010.09.15
PowerShell Default Snap-Ins  (0) 2010.09.15
Posted by 알 수 없는 사용자
:
2010. 9. 15. 19:17

이번엔 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

'Powershell > @우주인' 카테고리의 다른 글

PowerShell Default Snap-Ins  (0) 2010.09.15
.NET Assembly load  (0) 2010.09.15
파워쉘을 이용한 DOM 사용  (0) 2010.09.09
파워쉘 부팅매크로(Invoke-Item)  (0) 2010.09.09
파워쉘 버전  (0) 2010.09.09
Posted by 알 수 없는 사용자
:

BLOG main image
Windows Server를 공부 하는 사람들의 팀블로그 by 마성민

카테고리

분류 전체보기 (76)
Windows (2)
Powershell (56)
AD (0)
Exchange (6)
System Center (9)
IIS (0)
SQL (3)
Sharepoint (0)

태그목록

Tistory Cumulus Flash tag cloud by BLUEnLIVE requires Flash Player 9 or better.

Total :
Today : Yesterday :