Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поставщик WMI — это опубликованный интерфейс, используемый консолью управления Майкрософт (MMC) для управления службами и сетевыми протоколами SQL Server. В SMO ManagedComputer объект представляет поставщика WMI.
Объект ManagedComputer работает независимо от соединения, установленного с Server объектом к экземпляру SQL Server, и использует учетные данные Windows для подключения к службе WMI.
Пример
Чтобы использовать любой приведенный пример кода, необходимо выбрать среду программирования, шаблон программирования и язык программирования, в котором будет создано приложение. Дополнительные сведения см. в статье "Практическое руководство. Создание проекта SMO Visual Basic в Visual Studio .NET" или "Практическое руководство. Создание проекта SMO Visual C# в Visual Studio .NET" в документации по SQL Server.
Для программ, использующих поставщик WMI SQL Server, необходимо включить Imports
инструкцию для квалификации пространства имен WMI. Вставьте инструкцию после других Imports
инструкций перед любыми объявлениями в приложении, например:
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports Microsoft.SqlServer.Management.Smo.Wmi
Остановка и перезапуск службы Microsoft SQL Server на экземпляр SQL Server в Visual Basic
В этом примере кода показано, как остановить и запустить службы с помощью объекта SMO ManagedComputer . Это обеспечивает интерфейс для поставщика WMI для управления конфигурацией.
Включение протокола сервера с помощью строки URN в Visual Basic
В примере кода показано, как определить протокол сервера с помощью объекта 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()
Включение протокола сервера с помощью строки URN в PowerShell
В примере кода показано, как определить протокол сервера с помощью объекта 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"