Dans la transaction de restauration SQL, à partir de laquelle il annule l'état? Je veux dire où les données sont stockées afin que l'annulation puisse le reprendre.Dans la transaction de restauration SQL, à partir de laquelle il annule l'état?
0
A
Répondre
0
Pour Oracle, il enregistre les modifications dans le journal de reprise jusqu'à la validation. Chaque RDMS a sa propre stratégie.
+0
C'est en fait l'UNDO d'Oracle, pas le refaire. –
0
vous pouvez utiliser le code sûr et facile pour l'exécution de 100% (courir toute ligne de requête) ou ne lancez pas de hors les
| requête 1 | = comme insérer dans ou sélectionner ou ... | nombre de lignes | = Nombre de requête
DECLARE @rowcount int set @rowcount = 0 ;
BEGIN TRANSACTION [Tran1]
BEGIN TRY
<Query 1> ; set @rowcount = (@rowcount + @@ROWCOUNT);
<Query 2> ; set @rowcount = (@rowcount + @@ROWCOUNT);
...
IF @rowcount = <count of lines>
COMMIT TRANSACTION[Tran1]
ELSE
ROLLBACK TRANSACTION[Tran1]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION[Tran1]
END CATCH
par exemple cette exécution de code 2, insérer dans la requête de ligne, mais ou courir tout de lui ou pas quoi que ce soit courir et ROLLBACK
DECLARE @rowcount int set @rowcount = 0 ;
BEGIN TRANSACTION [Tran1]
BEGIN TRY
insert into [database].[dbo].[tbl1] (fld1) values('1') ;
set @rowcount = (@rowcount + @@ROWCOUNT);
insert into [database].[dbo].[tbl2] (fld1) values('2') ;
set @rowcount = (@rowcount + @@ROWCOUNT);
IF @rowcount = 2
COMMIT TRANSACTION[Tran1]
ELSE
ROLLBACK TRANSACTION[Tran1]
END TRY
BEGIN CATCH
ROLLBACK TRANSACTION[Tran1]
END CATCH
Ceci est spécifique à l'implémentation. –
Le journal des transactions. SQL Lorsqu'une mise à jour se produit dans SQL Server, elle se produit d'abord dans le journal des transactions, puis les données sont écrites. Lorsqu'elle est restaurée, elle supprime les entrées du journal et l'état de la base de données est tel qu'il était avant la transaction. arrivé. modifier * SQL Server spécifique. – Jeremy