0

コードを使用して、SQL Server 2008 r2 インスタンスのログオン プロパティを変更したいと考えています。インスタンス名を右クリックして、SQLサーバー構成マネージャーで手動で実行できます->ログオン。[ビルトイン アカウント] で、[ネットワーク サービス] を [ローカル サービス] に変更します。次に、適用をクリックします。変更を有効にするために、SQL インスタンスが再起動されます。

これで、コードを使用して同じことを実行できます (ネットワーク サービスからローカル サービスへ)。WMI を使用して実行できると思います。だからこれで私を助けてください。

4

2 に答える 2

1

1 つの可能性は、PowerShell を使用することです。 この投稿には、過去に私のために働いたコードがあります。記事に記載されているように、管理者として PowerShell を実行する必要があります。そうしないと、エラーが発生します。ある時点でリンクがオフラインになった場合に備えて、関連する部分をコピーしようとしています...

#Load the assembly containing the objects used in this example
[reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.SqlWmiManagement")

#Declare Variables
$SQLServiceAccount = 'DOMAIN\username'
$SQLServiceAccountPassword = 'XXXXXXX'

#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"

#change service account credentials
$svc.SetServiceAccount($SQLServiceAccount,$SQLServiceAccountPassword)

"Starting " + $svc.Name
$svc.Start()
$svc.Refresh()
while ($svc.ServiceState -ne "Running")
{
$svc.Refresh()
$svc.ServiceState
}
$svc.ServiceState
"Service" + $svc.Name + "is now started"
于 2013-08-26T14:46:19.457 に答える
0

Network service から localSystem へのログオン プロパティの変更は、WMI を使用して行うことができます。

Win32_Service クラスの Change メソッドを使用する

change メソッドでは、最初の 6 つのパラメーターを空白に指定し、StartName を LocalSystem (必要に応じてログイン名などの他のパラメーターも指定できます) として指定し、StartPassword を空白のパスワード (localsystem の場合は空白のパスワード) として指定します。

以下は、それを行う vbscript です。

strComputer = "."
Set objWMIService = GetObject _
    ("winmgmts:\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery _
    ("Select * From Win32_Service where Name = 'MSSQL$Instancename'")
For Each objService in colServices
    errReturn = objService.Change( , , , , , , "LocalSystem","")     
Next

詳細については、このリンクも参照してください

于 2013-08-27T08:05:02.373 に答える