2012-06-12 17 views
5

Sto catturando il transaction_id da sys.dm_tran_current_transaction nei miei trigger di controllo. Quello che vorrei sapere è l'unicità di transaction_id. La documentazione dice solo "ID transazione dell'istantanea corrente".sys.dm_tran_current_transaction. Quanto è unico transaction_id

Posso solo supporre che questo "ID" verrà riutilizzato in un secondo momento, ma gradirei una conferma in merito.

+1

Interessante domanda, questa pagina [wikipedia sembra pertinente] (http://en.wikipedia.org/wiki/Microsoft_SQL_Server# Logging_and_Transaction) – Andomar

+0

Non penso che sia probabile che l'ID venga riutilizzato e che tu possa mai notare. bigint che può salire a 9.223.372.036.854.775.807. Sembra anche aumentare solo. – Zhenny

+2

@Zhenny, si ricorda che l'ID verrà riutilizzato. transaction_id viene ripristinato su SQL in fase di riavvio. –

risposta

1
+2

Questo non mostra che ID di transazione siano unici o non unici. Non è correlato a questa domanda. – usr

+0

Sono d'accordo. Il fatto che il datatype sia un bigint è utile, ma non sembra esserci alcuna documentazione che affermi che l'ID della transazione sia unico per la vita del database. –

+2

Transaction_id viene riavviato a 0 dopo il riavvio del server. – Pankaj

1

@ risposta di abcdefghi è buono, ma solo per aggiungere ad essa;

  • TRANSACTION_ID è la stessa all'interno di una transazione,
  • fuori una transazione esplicita, aggiornamenti TRANSACTION_ID su ciascun lotto,
  • azzera TRANSACTION_ID quando il ripristino del server, in modo che si incontrano nello stesso transaction_id nel corso del tempo.

Ciò significa che non è possibile utilizzare transaction_id nelle tabelle di controllo, a causa di questo scenario;

record di controllo inserito con transaction_id = 42 sql server ripristinato ... 41 nuovi lotti eseguiti ... record di controllo inserito con transaction_id = 42

Inoltre, non è possibile utilizzare transaction_id come un timestamp (valori più alti non implicano modifiche successive_ e non si può dire che lo stesso ID implichi la stessa transazione