次の 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 接続タイムアウトを設定した経験のある人はいますか? 前もって感謝します。