Sauvegarde SQL Azure: que signifie la cohérence transactionnelle?

J'utilise l'outil de sauvegarde sql azuree de Redgate: http://www.red-gate.com/products/dba/sql-azuree-backup/

Il semble que si vous cochez la case "Rendre la sauvegarde transactionnelle cohérente", vous serez facturé une journée complète d'utilisation pour le server SQL. Je me request si je dois vérifier cela.

Je fais des sauvegardes quotidiennes sur le stockage BLOB et je sauvegarde la database sur ma machine locale pour travailler tous les 3 jours environ.

Si je ne coche pas la case Transactivement cohérente, est-ce que je vais rencontrer des problèmes?

En tant que personne qui a écrit SQL Azure Backup chez Red Gate, je peux dire que la seule façon de créer une sauvegarde transactionnelle garantie dans Azure est d'utiliser CREATE DATABASE … AS COPY OF. Cette copy n'existe que pendant la durée de la sauvegarde et est ensuite supprimée immédiatement après.

Si vous ne cochez pas la case, vous ne rencontrerez des problèmes que s'il y a un risque que les transactions soient dans un état incohérent lors de la lecture des données de chaque table à tour de rôle. CRÉER UNE COPIE peut prendre beaucoup de time et peut aussi coûter de l'argent pour la copy aussi.

Si vous sauvegardez vers un BLOB, vous utilisez le service Microsoft Import Export plutôt que la technologie SQL Compare et SQL Data Compare, mais datatables des tables peuvent également être incohérentes.

J'espère que cela aide Richard

AFAIK transactionally cohérente signifie que vous obtenez un instantané de la database à un moment donné (ce qui signifie probablement que SQL Azure verrouille la database alors que (rapidement nous espérons) elle fait une copy de la database entière pour seulement quelques minutes).

Ceci est mieux illustré par une sauvegarde cohérente non-transactionnelle où commence par copyr la table X. Pendant que vous faites cela, quelqu'un modifie (comme c'est une database en direct) la table Y, qui sera ensuite copiée dans la sauvegarde. Les foreign keys entre X et Y peuvent maintenant ne pas correspondre 'cos X est d'une période antérieure à Y.

J'ai utilisé Sql Azure Backup et j'ai opté pour la cohérence transactionnelle parce que les sauvegardes sont pour une urgence et la dernière chose que je veux dans ce scénario est des incohérences dans datatables.

edit: maintenant je pense à ce sujet, Redgate devrait vraiment dire que si vous sauvegardez tous les jours, vous payez effectivement deux fois le taux de votre database. J'ai attendu le cadre de synchronisation que je pense est là maintenant …

Pour répondre à la question dans le titre: une copy de database SQL Azure (la 'sauvegarde') est une database SQL Azure qui est copiée (entièrement en ligne) à partir de la database source et ne contient aucune transaction non validée. Ceci est réalisé de la même manière que les instantanés de database ou les restaurations de sauvegarde assurent la cohérence sur le produit SQL Server autonome: toutes les transactions en attente au moment de la 'séparation' sont annulées.

Quant à savoir pourquoi ou comment le produit de RedGate l'utilise, je ne sais pas. J'oserais deviner que pour réaliser une 'sauvegarde cohérente sur le plan de la transition', ils font une database CREATE DATABASE ... AS COPY OF ... (qui crée la cohérence transactionnelle désirée) et ensuite ils utilisent la technologie de SQL Compare and Data Comparer pour copyr le schéma et datatables.