2012-06-12 12 views
5

Estoy capturando el transaction_id de sys.dm_tran_current_transaction en mis activadores de auditoría. Lo que me gustaría saber es la singularidad de transaction_id. La documentación solo dice "ID de transacción de la instantánea actual".sys.dm_tran_current_transaction. Qué único es transaction_id

Solo puedo suponer que esta "ID" se reutilizará más adelante, pero agradecería alguna confirmación al respecto.

+1

Interesante pregunta, esta [página wikipedia parece relevante] (http://en.wikipedia.org/wiki/Microsoft_SQL_Server# Logging_and_Transaction) – Andomar

+0

No creo que sea probable que se reutilice la identificación que usted alguna vez notaría. El transaction_id es un bigint, que puede subir hasta 9.223.372.036.854.775.807. También parece incrementarse solo. – Zhenny

+2

@Zhenny, tenga en cuenta que la identificación será reutilizada. transaction_id se restablece cuando SQL se reinicia. –

Respuesta

1
+2

Esto no muestra que los ID de transacción son únicos o no únicos. No está relacionado con esta pregunta. – usr

+0

Estoy de acuerdo. El hecho de que el tipo de datos sea un bigint es útil, pero no parece haber ninguna documentación que indique que la identificación de la transacción sea única durante la vida de la base de datos. –

+2

Transaction_id se reinicia en 0 después de reiniciar el servidor. – Pankaj

1

@ respuesta de abcdefghi es bueno, pero sólo para añadir a ella;

  • TRANSACTION_ID es el mismo dentro de una transacción,
  • fuera de una transacción explícita, actualizaciones TRANSACTION_ID en cada lote,
  • restablece cuando TRANSACTION_ID de restablecer el servidor, por lo que se encontrará la misma transaction_id lo largo del tiempo.

Lo que esto lleva a es que no se puede usar transaction_id en tablas de auditoría, debido a este escenario;

registro de auditoría insertada con transaction_id = 42 servidor SQL restablecer ... 41 nuevos lotes ejecutados ... registro de auditoría insertado con transaction_id = 42

Además, no se pueden utilizar transaction_id como una marca de tiempo (los valores más altos no implican cambios posteriores_ y no se puede decir que el mismo ID implica la misma transacción.

Cuestiones relacionadas