2009-10-23 9 views
1

J'essaie de comprendre comment "tester la connectivité" à une base de données SQL Server à partir de DOS. Si la connexion échoue, je dois détecter la panne.Comment puis-je tester la connectivité SQL Server à partir de DOS?

sqlcmd -Q "select 'a test'" -S .\SQLEXPRESS 

Vous remarquerez que cette commande ne renvoie pas une valeur true/false. En outre, si l'instance n'existe pas, elle expire. Je veux quelque chose de ce genre qui ne dispose pas d'un « délai d'attente » problème qui rend l'utilisateur attente:

if (connectivity exists to local) (
    setup DSN for local 
) else (
    setup DSN for local\SQLEXPRESS 
) 

Étrangement, osql.exe -L ne fonctionne pas pour moi, même si j'ai une écoute exemple.

+2

BTW, ce n'est pas "DOS", mais plutôt la "ligne de commande Windows". :-) – Heinzi

Répondre

2

Délai d'expiration: Je ne pense pas que vous serez en mesure d'éviter un délai d'attente, si vous voulez vraiment "vérifier la connectivité". Mais voir ci-dessous pour une alternative.

Réponse booléenne: Il suffit que la commande renvoie un niveau d'erreur valide. Par exemple, le code suivant devrait fonctionner:

osql -E -S SERVER\INSTANCE -Q "" 
if ERRORLEVEL 1 (
    exit script 
) else (
    setup DSN 
) 

alternative sans délai d'attente: Si le SQL Server est toujours situé sur la machine locale et que vous voulez juste vérifier si une instance spécifique est installé ou non, essayez jeter un oeil dans le registre (en utilisant la commande reg). HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\InstalledInstances est ce que vous cherchez.