2010-05-02 7 views
1

를 작동하지 않는 나는 다음과 같은 PowerShell을 코드가 있습니다은 SQL Server SMO 연결 시간 초과

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 연결 시간 제한 설정에 경험이있는 사람이 있습니까? 미리 감사드립니다.

답변

0

내가 보는 동작을 재현하지 못하는 것 같습니다. 함수가 아닌 스크립트로 함수를 다시 작성하면 ConnectionTimeout 속성이 서버 이름 매개 변수가 가짜인지 여부에 관계없이 작동하는 것으로 보입니다.

Measure-Command {./get-smoconnection.ps1 'Z03\sq2k8' 2} 
+0

내 코드를 테스트 해 주셔서 감사합니다. 그동안 나는 C#과 동등한 시도를했다. 타임 아웃을 설정하고 기존의 서버가 아닌 서버에 연결하려고하면 작동한다. 다른 컴퓨터에서 PowerShell 스크립트를 테스트해야하지만 작동 할 것으로 판단됩니다. 테스트 컴퓨터를 엉망으로 만들 수 있었는지 전혀 알지 못합니다. –