Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
gäller för: SQL Server 2022 (16.x) och senare versioner
WMI-providern är ett publicerat gränssnitt som används av Microsoft Management Console (MMC) för att hantera SQL Server-tjänster och nätverksprotokoll. I SMO representerar objektet ManagedComputer WMI-providern.
objektet ManagedComputer fungerar oberoende av anslutningen som upprättats med objektet Server till en instans av SQL Server och använder Windows autentiseringsuppgifter för att ansluta till WMI-tjänsten.
Exempel
Om du vill använda ett kodexempel som tillhandahålls väljer du den programmeringsmiljö, mall och det språk som programmet ska skapas i. Mer information finns i Skapa ett Visual C# SMO-projekt i Visual Studio .NET.
För program som använder SQL Server WMI-provider måste du inkludera instruktionen Imports för att kvalificera WMI-namnområdet. Infoga -instruktionen efter de andra Imports uttrycken före eventuella deklarationer i programmet, till exempel:
Imports Microsoft.SqlServer.Management.Smo
Imports Microsoft.SqlServer.Management.Common
Imports Microsoft.SqlServer.Management.Smo.Wmi
Stoppa och starta om SQL Server-tjänsten i Visual Basic
Det här kodexemplet visar hur du stoppar och startar tjänster med hjälp av SMO-objektet ManagedComputer . Detta ger ett gränssnitt till WMI-providern för konfigurationshantering.
'Declare and create an instance of the ManagedComputer object that represents the WMI provider services.
Dim mc As ManagedComputer
mc = New ManagedComputer()
'Iterate through each service registered with the WMI provider.
Dim svc As Service
For Each svc In mc.Services
Console.WriteLine(svc.Name)
Next
'Reference the SQL Server service.
svc = mc.Services("MSSQLSERVER")
'Stop the service if it is running and report on the status continuously until it has stopped.
If svc.ServiceState = ServiceState.Running Then
svc.Stop()
Console.WriteLine(String.Format("{0} service state is {1}", svc.Name, svc.ServiceState))
Do Until String.Format("{0}", svc.ServiceState) = "Stopped"
Console.WriteLine(String.Format("{0}", svc.ServiceState))
svc.Refresh()
Loop
Console.WriteLine(String.Format("{0} service state is {1}", svc.Name, svc.ServiceState))
'Start the service and report on the status continuously until it has started.
svc.Start()
Do Until String.Format("{0}", svc.ServiceState) = "Running"
Console.WriteLine(String.Format("{0}", svc.ServiceState))
svc.Refresh()
Loop
Console.WriteLine(String.Format("{0} service state is {1}", svc.Name, svc.ServiceState))
Else
Console.WriteLine("SQL Server service is not running.")
End If
Aktivera ett serverprotokoll med hjälp av en URN-sträng i Visual Basic
Kodexemplet visar hur du identifierar ett serverprotokoll med hjälp av ett URN-objekt och sedan aktiverar protokollet.
'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()
Aktivera ett serverprotokoll med hjälp av en URN-sträng i PowerShell
Kodexemplet visar hur du identifierar ett serverprotokoll med hjälp av ett URN-objekt och sedan aktiverar protokollet.
#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()
Starta och stoppa en tjänst i C#
Kodexemplet visar hur du stoppar och startar en instans av 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 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();
}
Starta och stoppa en tjänst i PowerShell
Kodexemplet visar hur du stoppar och startar en instans av 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 instances running on this mc
foreach ($Item in $mc.Services) { $Item.Name }
#Get the default SQL Server database 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"