2

次の PowerShell コードがあります。

function Get-SmoConnection
{
    param 
        ([string] $serverName = "", [int] $connectionTimeout = 0)

    if($serverName.Length -eq 0)
    {
        $serverConnection = New-Object `
            Microsoft.SqlServer.Management.Common.ServerConnection
    }
    else
    {
        $serverConnection = New-Object `
            Microsoft.SqlServer.Management.Common.ServerConnection($serverName)
    }

    if($connectionTimeout -ne 0)
    {
        $serverConnection.ConnectTimeout = $connectionTimeout
    }

    try
    {
        $serverConnection.Connect()
        $serverConnection
    }
    catch [system.Management.Automation.MethodInvocationException]
    {
        $null
    }


}

$connection = get-smoconnection "ServerName"  2

if($connection -ne $null)
{
    Write-Host $connection.ServerInstance
    Write-Host $connection.ConnectTimeout
}
else
{
    Write-Host "Connection could not be established"
}

SMO接続タイムアウトを設定しようとする部分を除いて、うまくいくようです。接続が成功した場合、ServerConnection.ConnectTimeout が 2 (秒) に設定されていることを確認できますが、SQL Server インスタンスに偽の名前を指定すると、まだ ~ 15 秒間接続を試みます (これは私が信じていることです)。デフォルトのタイムアウト値)。

SMO 接続タイムアウトを設定した経験のある人はいますか? 前もって感謝します。

4

1 に答える 1

0

あなたが見ている動作を再現できないようです。関数ではなくスクリプトとして関数を再作成すると、サーバー名パラメーターが偽物であるかどうかに関係なく、 ConnectionTimeout プロパティが機能するように見えます。

Measure-Command {./get-smoconnection.ps1 'Z03\sq2k8' 2}
于 2010-05-04T02:33:19.950 に答える