0

SQL Server の既定のインスタンス ( ) を持つサーバーで実行するとうまく動作する PowerShell スクリプトがありますが、名前付きインスタンス ( )MSSQLSERVERを持つサーバーでは同じスクリプトが失敗します。MSSQL$instance

デフォルトのインスタンス ( MSSQLSERVER)の場合

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$service = Get-service -name 'MSSQLSERVER'
$status = $service.status
$CreateDB = "db-Test"

if ( $status -eq "Running" )
{ 
    'Success' | Out-File -FilePath c:\sqltest.log -Encoding ASCII

    $srv = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)")
    $db = New-Object Microsoft.SqlServer.Management.Smo.Database($srv, "$CreateDB")
    $db.Create()
    $db.CreateDate
}
else
{
    'Failed' | Out-File -FilePath c:\sqltest.log -Encoding ASCII
}

上記のスクリプトは非常にうまく機能します。しかし、以下のスクリプトはエラーをスローします:

名前付きインスタンスの場合:

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo")
$service = Get-service -name 'MSSQL$instancename'
$status = $service.status
$CreateDB = "db-Test"

if ( $status -eq "Running" )
{ 
     'Success' | Out-File -FilePath c:\sqltest.log -Encoding ASCII

     $srv = new-Object Microsoft.SqlServer.Management.Smo.Server("(local)")
     $db = New-Object Microsoft.SqlServer.Management.Smo.Database($srv, "$CreateDB")
     $db.Create()
     $db.CreateDate
}
else
{
     'Failed' | Out-File -FilePath c:\sqltest.log -Encoding ASCII
}

名前付き SQL インスタンスの上記のスクリプトは、以下のエラーをスローします。

New-Object : "2" 個の引数を指定して ".ctor" を呼び出し中に例外が発生しました: "SetParent がデータベース 'Netmagic-Test' で失敗しました。"
At C:\mssql-test.ps1:11 char:7
+ $db = New -オブジェクト Microsoft.SqlServer.Management.Smo.Database($srv, "$CreateDB")
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: ( :) [新しいオブジェクト]、MethodInvocationException
+ FullyQualifiedErrorId : ConstructorInvokedThrowException、Microsoft.PowerShell.Commands.NewObjectCommand

null 値の式でメソッドを呼び出すことはできません。
C:\mssql-test.ps1:12 char:1
+ $db.Create()
+ ~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) []、RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull

エラー画面

ありがとう、

ウイルス性

4

0 に答える 0