2009-11-26 4 views
0

Dans SQL Server 2005, est-il un moyen de spécifier plus d'une chaîne de connexion à partir d'une application .NET, l'une étant une connexion préférée primaire, mais si non disponible valeur par défaut d'essayer l'autre connexion (qui peut aller à un diff DB/serveur, etc)?SQL Server 2005 Connexion Question

Si rien dans ce sens exact, est-ce que nous pouvons utiliser, sans avoir recours à écrire une sorte de code round-robin pour vérifier les connexions?

Merci.

Répondre

0

Malheureusement, il n'y a pas de méthodes qui font LCM - vous devrez implémenter vous-même.

1

Nous généralement utiliser la composition de nos objets SqlConnection pour vérifier cela. Tous les accès aux données sont effectués via des classes backend, et nous spécifions plusieurs serveurs dans le web/app.config. (Pardonnez toute erreur, je suis en fait en train d'écrire ceci à la main)

Il ressemblerait à quelque chose comme ceci:

class MyComponent 
    { 
    private SqlConnection connection; 

    .... 
    public void CheckServers() 
    { 
     // Cycle through servers in configuration files, finding one that is usable 
     // When one is found assign the connection string to the SqlConnection 
     // a simple but resource intensive way of checking for connectivity, is by attempting to run 
     // a small query and checking the return value 
    } 
    public void Open() 
    { 

     connection.Open(); 

    } 

    public ConnectionState State 
    { 
     get {return connection.State;} 
     set {connection.State = value;} 
    } 
    // Use this method to return the selected connection string 
    public string SelectedConnectionString 
    { 
     get { return connection.ConnectionString; } 
    } 
    //and so on 
} 

Cet exemple comprend aucune vérification d'erreur ou l'enregistrement d'erreur, assurez-vous d'ajouter que, de sorte que le objet peut éventuellement signaler quelles connexions ont échoué et pourquoi.

1

En supposant que vous voudriez accéder au même ensemble de données, vous devriez utiliser le regroupement ou la mise en miroir pour fournir une haute disponibilité.

  • SQLNCLI provider prend en charge la base de données SQL Server en miroir

    Provider=SQLNCLI;Data Source=myServer;Failover Partner=myMirrorServer

  • Clustering utilise simplement le nom virtuel d'instance SQL.

Sinon, je ne peux pas saisir tout à fait pourquoi vous voulez faire ...