2010-06-16 6 views
3

Quelle est la meilleure façon de vérifier si une instance de Microsoft SQL Server est en cours? J'ai une vue qui couvre deux instances de Microsoft SQL Server, mais avant de l'interroger dans une procédure stockée, je voudrais vérifier que la deuxième instance du serveur est en place avec une option de repli de l'interrogation des données locales.TSQL Vérifier l'instance de base de données en ligne

La deuxième instance est un serveur lié.

Actuellement, je considère une fonction SQL CLR qui peut tenter d'ouvrir une connexion avec un délai d'attente plus court, mais je me demande si c'est quelque chose qui peut être fait directement dans Transact SQL.

Répondre

0

la requête sys.sysdatabases par le serveur lié (vous avez besoin d'autorisations), voici les valeurs de la colonne d'état

1 = autoclose (ALTER DATABASE)

4 = select into/bulkcopy (ALTER DATABASE en utilisant SET RECOVERY)

8 = tronc. connecter chkpt (ALTER DATABASE utilisant RECOVERY SET)

16 = déchirure de détection de page (ALTER DATABASE)

32 = chargement

64 = pré récupération

128 = récupération

256 = non récupéré

512 = hors ligne (ALTER DATABASE)

1024 = lecture seule (ALTER DATABASE)

2048 = dbo utiliser uniquement (ALTER DATABASE utilisant SET RESTRICTED_USER)

4096 = seul utilisateur (ALTER DATABASE)

32768 = mode d'urgence

4194304 = autoshrink (ALTER DATABASE)

1073741824 = arrêt proprement

4

Comment à propos de simplement valider que la base de données que vous êtes intéressé à se connecter est en ligne?

select 
    name 
from sys.databases 
where name = 'DatabaseName' 
    and state = 0 --Database is online 

Pour la référence complète des colonnes disponibles pour l'affichage catalogue sys.databases voir la documentation en ligne: sys.databases

EDIT: Fix requête SQL

+1

Comma après le nom sera une erreur. – Fergus

Questions connexes