SQL Server: déclarations vs lots vs transactions vs connexions


10

Ma question est simple: quelles sont les différences / similitudes / cardinalités entre

  • Transactions
  • Lots
  • Connexions et
  • Déclarations

dans SQL Server?

Autant que je sache, une connexion est un canal de communication unique entre une instance SQL Server et un client dans lequel des collections d'instructions regroupées en lots sont exécutées. Un lot est mappé implicitement ou explicitement à une ou plusieurs transactions. Est-ce correct?


Réponses:


4

Plutôt.

Un lot est juste cela, un lot de commandes qui doivent être exécutées. Une transaction est un ensemble de commandes dont la réussite ou l'échec est garanti (c'est-à-dire qu'elle ne terminera pas la moitié des commandes, puis échouera sur le reste, si l'une échoue, elles échouent toutes).

Pour autant que je sache, SQL Server utilise le pool de connexions, donc je ne compterais pas sur la seule connexion par idée client.


1
Quelle est donc la cardinalité entre le batch et la transaction? Est-il possible d'avoir plusieurs lots par transaction? Et vice versa?

1
Pour autant que je sache, il est possible d'avoir plusieurs transactions par lot, mais il n'est pas possible d'avoir plusieurs lots par transaction.
Cromulent

5

Les transactions et les lots sont deux concepts indépendants. Les deux peuvent être utilisés dans une configuration un à plusieurs.

Les blocs de transaction sont une seule "unité de travail", un concept selon lequel le sql engagé doit fonctionner entièrement ou ne pas fonctionner du tout. Par exemple, si vous mettez à jour deux tables liées l'une à l'autre; les deux doivent réussir pour que la modification des données soit validée. [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]

Batch est un concept Microsoft. Avec les outils créés par Microsoft tels que sqlcmd et osql, le lot assure simplement un plan d'exécution unique. Par exemple, si vous créez une variable et l'utilisez en dehors du lot, l'outil générera une erreur. [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]

Ainsi, vous pouvez avoir plusieurs lots qui mettent à jour plusieurs tables dans un même bloc de transaction. Dans la mesure où ils ne violent pas les plans d'exécution par lots individuels, c'est-à-dire.

En outre, dans un lot, vous pouvez avoir plusieurs blocs de transaction, garantissant l'intégrité des données entre les entités de base de données comme les tables.

La connexion est simplement la prise de contact de communication qui approuve l'exécution de requêtes sur le serveur.

Les instructions sont des lignes individuelles formant une requête. GO (séparateur de lots T-Sql) et BEGIN TRANSACTION (ANSI SQL pour démarrer un nouveau bloc de transactions) sont les deux instructions.


1

Les lots et les transactions existent au même niveau. Un lot est une collection de commandes SQL autrement non liées. Une transaction est un ensemble de commandes SQL qui fonctionnent (pour tous les autres utilisateurs de cette base de données) comme une seule instruction.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.