2010-11-16 15 views
0

J'écris une application qui exécute des requêtes SQL sur une base de données en temps réel. Si j'installe la mise en miroir de SQL Server et configure un FailoverPartner dans la chaîne de connexion et si la base de données primaire tombe en panne, le secondaire redémarrera-t-il automatiquement et donc je n'ai pas besoin de rouvrir une connexion ou d'effacer quoi que ce soit ?Comment SQL Server gère-t-il le basculement réseau au milieu d'une instruction d'insertion?

De même, comment gère-t-il les situations où une instruction INSERT est en cours d'exécution et la base de données tombe en panne? Est-ce que le secodaire le ramasse ou est-il perdu pour toujours? Serait-il plus sûr de faire des instructions d'insertion transactionnelles?

Répondre

3

Chaque forme de haute disponibilité (mise en miroir, mise en grappe) aura une limite de transaction: chaque transaction en vol au moment du basculement sera annulée. Ce n'est pas une limitation, est une caractéristique . Il serait impossible d'écrire des applications correctes si cela ne serait pas vrai. En cas de basculement, chaque connexion utilisant la base de données est coupée. Les clients doivent rétablir de nouvelles connexions avec le nouveau principal, relire l'état actuel de la base de données et commencer à appliquer de nouvelles opérations, sur l'état actuel. Les applications correctement écrites (par exemple transactionnel) n'auront aucun problème avec ceci. Seules les applications mal codées peuvent perdre des données.

+0

+1. Les bases de l'ACID - le cœur de la base de données est une question d'intégrité. – TomTom