2010-05-02 5 views
1

je le code PowerShell suivant:Sql Server délai de connexion SMO ne fonctionne pas

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

Il semble fonctionner, sauf pour la partie qui tente de définir le délai d'attente de connexion SMO. Si la connexion réussit, je peux vérifier que ServerConnection.ConnectTimeout est défini sur 2 (secondes), mais lorsque je fournis un nom bidon pour l'instance SQL Server, il tente toujours de s'y connecter pendant ~ 15 secondes (ce qui est je crois la valeur du délai d'expiration par défaut).

Est-ce que quelqu'un a de l'expérience avec le réglage du délai de connexion SMO? Merci d'avance.

Répondre

0

Je n'arrive pas à reproduire le comportement que vous voyez. Si recréer votre fonction en tant que script plutôt qu'une fonction la propriété ConnectionTimeout semble fonctionner indépendamment du fait que le paramètre de nom du serveur est faux ou non:

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

Merci pour tester mon code. En attendant, j'ai essayé un équivalent en C# - régler le délai et essayer de se connecter à un serveur non existant, et cela fonctionne. Je vais devoir tester le script PowerShell sur une autre machine, mais je pense que ça marchera aussi - je n'ai aucune idée de ce que j'aurais pu faire pour gâcher mon ordinateur de test et ça me rend fou. –

Questions connexes