WMI プロバイダーを使用したサービスの管理とネットワーク設定
WMI プロバイダーは、Microsoft 管理コンソール (MMC) がSQL Server サービスとネットワーク プロトコルを管理するために使用される発行済みインターフェイスです。 SMO では、ManagedComputer オブジェクトは WMI プロバイダーを表します。
オブジェクトはManagedComputer、SQL ServerのインスタンスへのオブジェクトでServer確立された接続とは無関係に動作し、Windows 資格情報を使用して WMI サービスに接続します。
例
提供されているコード例を使用するには、アプリケーションを作成するプログラミング環境、プログラミング テンプレート、およびプログラミング言語を選択する必要があります。 詳細については、SQL Server オンライン ブックの「Visual Studio .NET で Visual Basic SMO プロジェクトを作成する方法」および「Visual Studio .NET で Visual C# SMO プロジェクトを作成する方法」を参照してください。
SQL Server WMI プロバイダーを使用するプログラムの場合は、 ステートメントをImports
含めて WMI 名前空間を修飾する必要があります。 アプリケーションの宣言の前、かつ他の Imports
ステートメントの後に、次のようにステートメントを挿入します。
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports Microsoft.SqlServer.Management.Smo.Wmi
Visual Basic で SQL Server のインスタンスに対して Microsoft SQL Server サービスの停止や再起動を行う
このコード例では、SMO ManagedComputer オブジェクトを使用してサービスを停止および起動する方法を示します。 これにより、WMI Provider for Configuration Management へのインターフェイスが提供されます。
Visual Basic での URN 文字列を使用したサーバー プロトコルの有効化
このコード例は、URN オブジェクトを使用してサーバー プロトコルを識別し、そのプロトコルを有効化する方法を示しています。
'This program must run with administrator privileges.
'Declare the ManagedComputer WMI interface.
Dim mc As New ManagedComputer()
'Create a URN object that represents the TCP server protocol.
Dim u As New Urn("ManagedComputer[@Name='V-ROBMA3']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']")
'Declare the serverProtocol variable and return the ServerProtocol object.
Dim sp As ServerProtocol
sp = mc.GetSmoObject(u)
'Enable the protocol.
sp.IsEnabled = True
'propagate back to the service
sp.Alter()
PowerShell での URN 文字列を使用したサーバー プロトコルの有効化
このコード例は、URN オブジェクトを使用してサーバー プロトコルを識別し、そのプロトコルを有効化する方法を示しています。
#This example shows how to identify a server protocol using a URN object, and then enable the protocol
#This program must run with administrator privileges.
#Load the assembly containing the classes used in this example
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement")
#Get a managed computer instance
$mc = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer
#Create a URN object that represents the TCP server protocol
#Change 'MyPC' to the name of the your computer
$urn = New-Object -TypeName Microsoft.SqlServer.Management.Sdk.Sfc.Urn -argumentlist "ManagedComputer[@Name='MyPC']/ServerInstance[@Name='MSSQLSERVER']/ServerProtocol[@Name='Tcp']"
#Get the protocol object
$sp = $mc.GetSmoObject($urn)
#enable the protocol on the object
$sp.IsEnabled = $true
#propagate back to actual service
$sp.Alter()
Visual C# でのサービスの停止と開始
このコード例では、SQL Server のインスタンスを停止および起動する方法を示します。
{
//Declare and create an instance of the ManagedComputer
//object that represents the WMI Provider services.
ManagedComputer mc;
mc = new ManagedComputer();
//Iterate through each service registered with the WMI Provider.
foreach (Service svc in mc.Services)
{
Console.WriteLine(svc.Name);
}
//Reference the Microsoft SQL Server service.
Service Mysvc = mc.Services["MSSQLSERVER"];
//Stop the service if it is running and report on the status
// continuously until it has stopped.
if (Mysvc.ServiceState == ServiceState.Running) {
Mysvc.Stop();
Console.WriteLine(string.Format("{0} service state is {1}", Mysvc.Name, Mysvc.ServiceState));
while (!(string.Format("{0}", Mysvc.ServiceState) == "Stopped")) {
Console.WriteLine(string.Format("{0}", Mysvc.ServiceState));
Mysvc.Refresh();
}
Console.WriteLine(string.Format("{0} service state is {1}", Mysvc.Name, Mysvc.ServiceState));
//Start the service and report on the status continuously
//until it has started.
Mysvc.Start();
while (!(string.Format("{0}", Mysvc.ServiceState) == "Running")) {
Console.WriteLine(string.Format("{0}", Mysvc.ServiceState));
Mysvc.Refresh();
}
Console.WriteLine(string.Format("{0} service state is {1}", Mysvc.Name, Mysvc.ServiceState));
Console.ReadLine();
}
else {
Console.WriteLine("SQL Server service is not running.");
Console.ReadLine();
}
}
PowerShell でのサービスの停止と開始
このコード例では、SQL Server のインスタンスを停止および起動する方法を示します。
#Load the assembly containing the objects used in this example
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement")
#Get a managed computer instance
$mc = New-Object -TypeName Microsoft.SqlServer.Management.Smo.Wmi.ManagedComputer
#List out all sql server instnces running on this mc
foreach ($Item in $mc.Services){$Item.Name}
#Get the default sql server datbase engine service
$svc = $mc.Services["MSSQLSERVER"]
# for stopping and starting services PowerShell must run as administrator
#Stop this service
$svc.Stop()
$svc.Refresh()
while ($svc.ServiceState -ne "Stopped")
{
$svc.Refresh()
$svc.ServiceState
}
"Service" + $svc.Name + " is now stopped"
"Starting " + $svc.Name
$svc.Start()
$svc.Refresh()
while ($svc.ServiceState -ne "Running")
{
$svc.Refresh()
$svc.ServiceState
}
$svc.ServiceState
"Service" + $svc.Name + "is now started"