SQL Server: dichiarazioni vs. batch vs. transazioni vs. connessioni


10

La mia domanda è semplice: quali sono le differenze / somiglianze / cardinalità tra

  • Le transazioni
  • lotti
  • Collegamenti e
  • dichiarazioni

in SQL Server?

Per quanto ho capito, una connessione è un singolo canale di comunicazione tra un'istanza di SQL Server e un client in cui vengono eseguite raccolte di istruzioni raggruppate come batch. Un batch è implicitamente o esplicitamente associato a una o più transazioni. È corretto?


Risposte:


4

Abbastanza.

Un batch è proprio questo, un batch di comandi che devono essere eseguiti. Una transazione è un insieme di comandi garantiti per avere successo o fallire totalmente (cioè non completerà la metà dei comandi e poi fallirà nel resto, se uno fallisce tutti falliscono).

Per quanto ne so, SQL Server utilizza il pool di connessioni in modo da non fare affidamento su una connessione per idea client.


1
Quindi qual è la cardinalità tra batch e transazione? È possibile avere più batch per transazione? Che ne dici di viceversa?

1
Per quanto ne so, è possibile avere più transazioni per lotto, ma non è possibile avere più lotti per transazione.
Cromulent,

5

Transazioni e lotti sono due concetti indipendenti. Entrambi possono essere utilizzati in una o più configurazioni.

I blocchi di transazione sono una singola "unità di lavoro", un concetto secondo cui il commit sql deve funzionare completamente o non funzionare affatto. Ad esempio, se si aggiornano due tabelle collegate tra loro; entrambi devono riuscire affinché la modifica dei dati venga eseguita. [ https://msdn.microsoft.com/en-us/library/ms174377.aspx]

Il batch è un concetto Microsoft. Con gli strumenti creati da Microsoft come sqlcmd e osql, il batch garantisce semplicemente un unico piano di esecuzione. Ad esempio, se si crea una variabile e la si utilizza al di fuori del batch, lo strumento genererà un errore. [ https://msdn.microsoft.com/en-us/library/ms188037.aspx]

Pertanto, è possibile disporre di più batch che aggiornano più tabelle all'interno di un blocco di transazione. Nella misura in cui non violano i singoli piani di esecuzione batch.

Inoltre, all'interno di un batch, è possibile disporre di più blocchi di transazione, garantendo l'integrità dei dati tra entità di database come le tabelle.

La connessione è semplicemente l'handshake di comunicazione che approva l'esecuzione di query sul server.

Le istruzioni sono singole righe che formano una query. GO (separatore batch T-Sql) e BEGIN TRANSACTION (ANSI SQL per l'avvio di un nuovo blocco di transazione) sono entrambi istruzioni.


1

I batch e le transazioni esistono allo stesso livello. Un batch è una raccolta di comandi SQL altrimenti non correlati. Una transazione è una raccolta di comandi SQL che operano (per quanto riguarda tutti gli altri utenti di quel database) come un'unica istruzione.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.