Está en la página 1de 11

BATCH Y SCRIPT

BATCH (Lote)
Un batch es una secuencia de comandos de TSQL, terminada por un fin de batch
(GO), ue indica a SQL S!"#!" e$ecutar %a sentencia&
Los batch pueden ser e$ecutados interacti'amente desde un archi'o
Un batch es ana%i(ado por e% parser, optimi(ado, compi%ado ) e$ecutado como una
unidad&
Si e*iste un error de sinta*is en un batch, +ste no es procesado&
SC",-T
Un script es un .rupo de batch
Contienen una serie de batchs, si uno de %os batchs dentro de% script fa%%a, e% script
continuar/ e$ecut/ndose& !% batch ue fa%%a no ser/ procesado&
"!GLAS -A"A LOS BATCH
0& C"!AT! -"OC!1U"!, C"!AT! "UL!, C"!AT! 1!2AULT, C"!AT!
T",GG!" ) C"!AT! #,!3, deben ser separadas4 no pueden ser combinadas con
otras sentencias SQL en un mismo batch&
5& C"!AT! 1ATABAS!, C"!AT! TABL! ) C"!AT! ,61!7, pueden ser
combinadas con otras sentencias en un so%o batch&
8& "e.%as ) defau%ts no pueden ser asi.nados a una co%umna ) uti%i(ados en e% mismo
batch&
9& Sp:bindru%e ) sp:bindefau%t no pueden estar en e% mismo batch con sentencias
,6S!"T ue in'ouen a %a re.%a o defau%t&
;& Cuando se cambia %a confi.uraci<n de %a base de datos con %a sentencia US!, %os
cambios no tienen efecto hasta despu+s de ue se comp%ete e% batch&
=& !s permitido e%iminar un ob$eto en un batch, pero e% optimi(ador de consu%tas no %e
permitir/n referenciar e% ob$eto despu+s en e% batch&

!stos e$emp%os son secuencias de comandos ue uti%i(an e% Ana%i(ador de consu%tas
de SQL Ser'er ) e% comando GO para definir %os %>mites de% %ote&
!ste e$emp%o crea una 'ista& -uesto ue C"!AT! #,!3 debe ser %a ?nica instrucci<n
en un %ote (por %a re.%a 0), se necesitan instrucciones GO para ais%ar %a instrucci<n
C"!AT! #,!3 de %as instrucciones US! ) S!L!CT ue ha) a%rededor&
USE pubs
GO /* Fin del batchch */
CREATE VIEW autortitulo!ista
AS
SE"ECT *
FRO# authors
GO /* Fin del batch */
SE"ECT *
FRO# autortitulo!ista
GO /* Fin del batch */
Bases de 1atos ,n.& "osa
6a'arrete
11
TRANSACCIONES
Una transacci<n es una secuencia de operaciones rea%i(adas como una so%a unidad
%<.ica de traba$o& Una unidad %<.ica de traba$o debe e*hibir cuatro propiedades,
conocidas como propiedades de atomicidad, coherencia, ais%amiento ) durabi%idad
(AC,1 Atomicit) Consistenc) ,so%ation 1urabi%it)), para ser ca%ificada como transacci<n&
Atomicidad: Una transacci<n debe ser una unidad at<mica de traba$o, tanto si se
rea%i(an todas sus modificaciones en %os datos, como si no se rea%i(a nin.una de e%%as&
Coherencia: Cuando fina%i(a, una transacci<n debe de$ar todos %os datos en un estado
coherente& !n una base de datos re%aciona%, se deben ap%icar todas %as re.%as a %as
modificaciones de %a transacci<n para mantener %a inte.ridad de todos %os datos&
Todas %as estructuras internas de datos, como >ndices de /rbo% b o %istas dob%emente
'incu%adas, deben estar correctas a% fina% de %a transacci<n&
Aislamiento: Las modificaciones rea%i(adas por transacciones simu%t/neas se deben
ais%ar de %as modificaciones %%e'adas a cabo por otras transacciones simu%t/neas& Una
transacci<n reconoce %os datos en e% estado en ue estaban antes de ue otra
transacci<n simu%t/nea %os modificara o despu+s de ue %a se.unda transacci<n ha)a
conc%uido, pero no reconoce un estado intermedio& !sto se conoce como seriabi%idad,
)a ue deri'a en %a capacidad de 'o%'er a car.ar %os datos inicia%es ) reproducir una
serie de transacciones para fina%i(ar con %os datos en e% mismo estado en ue estaban
despu+s de rea%i(ar %as transacciones ori.ina%es&
Durabilidad: Una 'e( conc%uida una transacci<n, sus efectos son permanentes en e%
sistema& Las modificaciones persisten a?n en e% caso de producirse un error de%
sistema&
Una transacci<n es una unidad ?nica de traba$o& Si una transacci<n tiene +*ito, todas
%as modificaciones de %os datos rea%i(adas durante %a transacci<n se confirman ) se
con'ierten en una parte permanente de %a base de datos& Si una transacci<n encuentra
errores ) debe cance%arse o re'ertirse, se borran todas %as modificaciones de %os
datos&
SQL Ser'er funciona en %os si.uientes tres modos de transacci<n&
Transacciones de confirmacin automtica
Cada instrucci<n indi'idua% es una transacci<n&
Transacciones explcitas (definidas por el usuario)
Cada transacci<n se inicia e*p%>citamente con %a instrucci<n B!G,6
T"A6SACT,O6 ) se termina e*p%>citamente con una instrucci<n CO@@,T o
"OLLBACA&
Transacciones implcitas
Se inicia imp%>citamente una nue'a transacci<n cuando se ha comp%etado %a
anterior, pero cada transacci<n se comp%eta e*p%>citamente con una instrucci<n
CO@@,T o "OLLBACA&
Bases de 1atos ,n.& "osa
6a'arrete
11
Iniciar y inali!ar transacciones
Los pro.ramadores de SQL son %os responsab%es de iniciar ) fina%i(ar %as
transacciones en puntos ue e*i$an %a coherencia %<.ica de %os datos& !% pro.ramador
debe definir %a secuencia de modificaciones de datos ue %os de$an en un estado
coherente en re%aci<n con %as re.%as de ne.ocios de %a or.ani(aci<n& !% pro.ramador
inc%u)e estas instrucciones de modificaci<n en una so%a transacci<n de forma ue SQL
Ser'er 1atabase !n.ine (@otor de base de datos de SQL Ser'er) puede hacer cump%ir
%a inte.ridad f>sica de %a misma&
!s responsabi%idad de un sistema de base de datos corporati'o, como una instancia
de% @otor de base de datos, proporcionar %os mecanismos ue ase.uren %a inte.ridad
f>sica de cada transacci<n& !% @otor de base de datos proporcionaB
Ser'icios de b%oueo ue preser'an e% ais%amiento de %a transacci<n&
Ser'icios de re.istro ue ase.uran %a durabi%idad de %a transacci<n& Aunue se
produ(ca un error en e% hardCare de% ser'idor, e% sistema operati'o o %a
instancia de @otor de base de datos, %a instancia uti%i(a re.istros de
transacciones, a% reiniciar, para re'ertir autom/ticamente %as transacciones
incomp%etas a% punto en ue se produ$o e% error de% sistema&
Caracter>sticas de administraci<n de transacciones ue e*i.en %a atomicidad )
coherencia de %a transacci<n& Una 'e( iniciada una transacci<n, debe
conc%uirse correctamente4 en caso contrario, %a instancia de @otor de base de
datos deshar/ todas %as modificaciones de datos rea%i(adas desde ue se inici<
%a transacci<n&
C"#$I$T%#CIA D% DAT"$
-ara ase.urar %a consistencia de datos, SQL S!"#!" confi.ura %os mecanismos de
b%oueo reueridos& Los b%oueos (%ocDs), pre'ienen ue %as consu%tas interfieran con
otras&
LOCAS CO@-A"T,1OS
So%o %ectura, %os datos no pueden ser modificados
Si un %ocD compartido ha sido ap%icado a una p/.ina de datos, una se.unda
transacci<n so%amente puede obtener un %ocD compartido, hasta ue %a primera
transacci<n se ha)a comp%etado&
Son %iberadas cuando %as p/.inas de datos )a no son necesitadas&
LOCAS !7CLUS,#OS
Uti%i(ados para operaciones de escritura, Update, ,nsert, 1e%ete
So%amente una transacci<n puede b%ouear %a p/.ina
Una no transacci<n puede aduirir un b%oueo e*c%usi'o hasta ue todos %os
b%oueos compartidos sobre %as p/.inas de datos reueridas ha)an sido %iberados&
"!CU-!"AB,L,1A1 1! 1ATOS
Una transacci<n es una unidad de traba$o ) una unidad de recuperaci<n&
Las transacciones son .rabadas en un %o. de escritura anticipada
Cuando una petici<n para modificar %a base de datos es recibida, una copia de%
nue'o ) 'ie$o estado de %a base de datos se a%macenan en e% %o. de transacciones&
Bases de 1atos ,n.& "osa
6a'arrete
11
!stos cambios son a%macenados antes de ue sean hechos a %a base de datos
(escritura anticipada)
1urante %a recuperaci<n de una fa%%a de% sistema, SQL S!"#!" uti%i(a e% %o. de
transacciones para recuperar %a base de datos a un estado consistente, e%iminando
todas %as transacciones incomp%etas&
SQL S!"#!" uti%i(a e% %o. de transacciones para recuperar %a base de datos a un
estado consistente, e%iminando todas %as transacciones incomp%etas&
Tambi+n uti%i(a e% %o. para ase.urar ue todos %os cambios asociados con
transacciones cometidas se ref%e$an tota%mente en %a base de datos&
T&A#$ACCI"#%$ D%I#IDA$ '"& %( )$)A&I"
1an a% usuario e% contro% sobre e% mane$o de %as transacciones
@e$oran e% rendimiento )a ue %a sobrecar.a de% sistema es so%amente una 'e(
para un con$unto de transacciones ) no cada 'e( para cada sentencia indi'idua%&
Cua%uier usuario puede definir transacciones& 6o se reuieren permisos para
cua%uier sentencia de %a transacci<n&
!% nombre de %a transacci<n debe estar conforme con %as re.%as de identificadores&
A%.unos procedimientos de% sistema no pueden ser uti%i(ados dentro de %as
transacciones definidas por e% usuarioB
Todos %os C"!AT! (1ATABAS!, TABL!, ,61!7)
Todos %os 1"O-
ALT!" 1ATABAS!, ALT!" TABL!, S!L!CT ,6TO
*%+I# T&A#$ACTI"#
@arca e% punto de inicio de una transacci<n %oca% e*p%>cita& La instrucci<n B!G,6
T"A6SACT,O6 incrementa EET"A6COU6T en 0&
B!G,6 F T"A6 G T"A6SACT,O6 H
I F transaction:name G Etran:name:'ariab%e H
I 3,TH @A"A I JdescriptionJ K K
K
I 4 K
transaction:name
!s e% nombre asi.nado a %a transacci<n& !% par/metro transaction:name debe
cump%ir %as re.%as de %os identificadores, pero no se admiten identificadores de
m/s de 85 caracteres& Uti%ice nombres de transacciones so%amente en %a pare$a
m/s e*terna de instrucciones B!G,6LCO@@,T o B!G,6L"OLLBACA
anidadas&
Etran:name:'ariab%e
Se trata de% nombre de una 'ariab%e definida por e% usuario ue contiene un
nombre de transacci<n '/%ido& La 'ariab%e debe dec%ararse con un tipo de datos
char, 'archar, nchar o n'archar& Si se pasan m/s de 85 caracteres a %a
'ariab%e, so%o se uti%i(ar/n %os primeros 854 e% resto de caracteres se truncar/&
3,TH @A"A I JdescriptionJ K
Bases de 1atos ,n.& "osa
6a'arrete
11
!specifica ue %a transacci<n est/ marcada en e% re.istro& !% par/metro
description es una cadena ue describe %a marca& Un 'a%or de description
superior a 05M caracteres se trunca a 05M caracteres antes de a%macenarse en
%a tab%a msdb&dbo&%o.marDhistor)&
Si uti%i(a 3,TH @A"A, debe especificar un nombre de transacci<n& 3,TH
@A"A permite restaurar un re.istro de transacciones hasta una marca con
nombre&
B!G,6 T"A6SACT,O6 representa un punto en e% ue %os datos a %os ue hace
referencia una cone*i<n son %<.ica ) f>sicamente coherentes& Si se producen errores,
se pueden re'ertir todas %as modificaciones rea%i(adas en %os datos despu+s de B!G,6
T"A6SACT,O6 para de'o%'er %os datos a% estado conocido de coherencia& Cada
transacci<n dura hasta ue se comp%eta sin errores ) se emite CO@@,T
T"A6SACT,O6 para hacer ue %as modificaciones sean una parte permanente de %a
base de datos, o hasta ue se produ(can errores ) se borren todas %as modificaciones
con %a instrucci<n "OLLBACA T"A6SACT,O6&
B!G,6 T"A6SACT,O6 inicia una transacci<n %oca% para %a cone*i<n ue emite %a
instrucci<n& Se.?n %a confi.uraci<n de% ni'e% de ais%amiento de %a transacci<n actua%, %a
transacci<n b%ouea muchos recursos aduiridos para aceptar %as instrucciones
TransactNSQL emitidas por %a cone*i<n hasta ue %a misma fina%i(a con una instrucci<n
CO@@,T T"A6SACT,O6 o "OLLBACA T"A6SACT,O6& Las transacciones ue
uedan pendientes durante mucho tiempo pueden impedir ue otros usuarios ten.an
acceso a estos recursos b%oueados ) pueden impedir tambi+n e% truncamiento de%
re.istro&
Transacciones marcadas
La opci<n 3,TH @A"A co%oca e% nombre de %a transacci<n en e% re.istro de
transacciones& A% restaurar una base de datos a su estado anterior, se puede uti%i(ar %a
transacci<n marcada en %u.ar de %a fecha ) %a hora&
Adem/s, se necesitan %as marcas de% re.istro de transacciones si tiene %a intenci<n de
recuperar un con$unto de bases de datos re%acionadas a un estado coherente
%<.icamente&
C",,IT T&A#$ACTI"#
@arca e% fina% de una transacci<n correcta, imp%>cita o e*p%>cita& Si EET"A6COU6T
es 0, CO@@,T T"A6SACT,O6 hace ue todas %as modificaciones efectuadas sobre
%os datos desde e% inicio de %a transacci<n sean parte permanente de %a base de datos,
%ibera %os recursos mantenidos por %a transacci<n ) reduce EET"A6COU6T a O& Si
EET"A6COU6T es ma)or ue 0, CO@@,T T"A6SACT,O6 so%o reduce
EET"A6COU6T en 0 ) %a transacci<n si.ue acti'a&
CO@@,T F T"A6 G T"A6SACT,O6 H I transaction:name G Etran:name:'ariab%e K K
I 4 K
transaction:name
Bases de 1atos ,n.& "osa
6a'arrete
11
Omitido por SQL Ser'er 1atabase !n.ine (@otor de base de datos de SQL
Ser'er)& transaction:name especifica un nombre de transacci<n asi.nado a
una instrucci<n B!G,6 T"A6SACT,O6 anterior& transaction:name debe
cump%ir con %as re.%as para identificadores, pero no puede superar %os 85
caracteres& transaction:name se puede usar como una a)uda de %e.ibi%idad, )a
ue indica a %os pro.ramadores a u+ instrucci<n B!G,6 T"A6SACT,O6
anidada est/ asociada %a instrucci<n CO@@,T T"A6SACT,O6&
Etran:name:'ariab%e
Se trata de% nombre de una 'ariab%e definida por e% usuario ue contiene un
nombre de transacci<n '/%ido& La 'ariab%e debe dec%ararse con un tipo de datos
char, 'archar, nchar o n'archar& Si se pasan m/s de 85 caracteres a %a
'ariab%e, s<%o se usar/n 85 caracteres4 e% resto de %os caracteres se truncar/n&
!s responsabi%idad de% pro.ramador de TransactNSQL uti%i(ar CO@@,T
T"A6SACT,O6 s<%o en e% punto donde todos %os datos a %os ue hace referencia %a
transacci<n sean %<.icamente correctos&
Si %a transacci<n ue se ha confirmado era una transacci<n TransactNSQL distribuida,
CO@@,T T"A6SACT,O6 hace ue @S 1TC uti%ice e% protoco%o de confirmaci<n en
dos fases para confirmar %os ser'idores in'o%ucrados en %a transacci<n& Si una
transacci<n %oca% afecta a dos o m/s bases de datos de %a misma instancia de% @otor
de base de datos, %a instancia uti%i(a una confirmaci<n interna en dos fases para
confirmar todas %as bases de datos in'o%ucradas en %a transacci<n&
Cuando se uti%i(a en transacciones anidadas, %as confirmaciones de %as transacciones
anidadas no %iberan recursos ni hacen permanentes sus modificaciones& Las
modificaciones sobre %os datos s<%o uedan permanentes ) se %iberan %os recursos
cuando se confirma %a transacci<n m/s e*terna& Cada CO@@,T T"A6SACT,O6 ue
se e$ecute cuando EET"A6COU6T sea ma)or ue 0 so%o reduce EET"A6COU6T
en 0& Cuando EET"A6COU6T %%e.a a O, se confirma %a transacci<n e*terna entera&
Como @otor de base de datos omite transaction:name, %a e$ecuci<n de una instrucci<n
CO@@,T T"A6SACT,O6 ue ha.a referencia a% nombre de una transacci<n e*terna
cuando ha)a transacciones internas pendientes s<%o reduce EET"A6COU6T en 0&
No se puede revertir una transaccin despus de ejecutar una instruccin COMMIT
TRANSACTION, porque las modificaciones sore los datos !a son parte permanente
de la ase de datos"
%-emplo
!ste e$emp%o incrementa %os derechos de autor de todos %os %ibros cu)o ,1 inicia con
P-CQ, en un 0O por ciento&
1!CLA"! E6ombreTran #A"CHA"(5O) RS 1ec%ara una 'ariab%e %%amada Tran6ame
SR
S!L!CT E6ombreTran T J@iTransaJ RS Asi.na %a cadena P@iTransaQ a %a 'ariab%e SR
B!G,6 T"A6SACT,O6 E6ombreTran
GO
US! pubs
GO
U-1AT! ro)sched
S!T ro)a%t) T ro)a%t) S 0&0O
3H!"! tit%e:id L,A! J-CUJ
Bases de 1atos ,n.& "osa
6a'arrete
11
GO
CO@@,T T"A6SACT,O6 @iTransa
GO
!n e% e$emp%o si.uiente se muestra e% efecto de re'ertir una transacci<n con nombre&
USE prueba$
GO
CREATE TA%"E tab!alores &!alor int'
GO
(EC"ARE )transa* !archar&+,' - .Transaccion*.$
// Se inicia una transacci0n a la 1ue se le ha dado no2bre
// inserta dos re3istros 4 hace roll bac5 usando
// el no2bre de la transacci0n
%EGI6 TRA6 )transa*
I6SERT I6TO tab!alores VA"UES&*'
I6SERT I6TO tab!alores VA"UES&+'
RO""%AC7 TRA6 )transa*
I6SERT I6TO tab!alores VA"UES&8'
I6SERT I6TO tab!alores VA"UES&9'
SE"ECT * FRO# tab!alores
(RO: TA%"E tab!alores
!n este e$emp%o se muestran 'arios batch combinados en una transacci<n&
Las instrucciones B!G,6 T"A6SACT,O6 ) CO@@,T de%imitan %os %>mites de %a
transacci<n& Las instrucciones B!G,6 T"A6SACT,O6, US!, C"!AT! TABL!,
S!L!CT ) CO@@,T se encuentran en sus propios %otes de una ?nica instrucci<n&
Todas %as instrucciones ,6S!"T se inc%u)en en e% mismo %ote&
B!G,6 T"A6SACT,O6
US! pubs
GO
C"!AT! TABL! empresas
(
id:emp int ,1!6T,TV(0OO, ;),
empresa:nombre 'archar(0OO)
)
GO
,6S!"T empresas (empresa:nombre)
#ALU!S (JSoft%ineJ)
,6S!"T empresas (empresa:nombre)
#ALU!S (J AndeanSoft&J)
,6S!"T empresas (empresa:nombre)
#ALU!S (J-%ura% S)stemsJ)
GO
NN Hasta au> %a transacci<n
Bases de 1atos ,n.& "osa
6a'arrete
11
S!L!CT S
2"O@ empresas
O"1!" BV empresa:nombre ASC
GO
CO@@,T T"A6
GO
!ste e$emp%o incrementa e% anticipo ue se pa.a a% autor cuando %as 'entas anua%es
de un %ibro son superiores a WM&OOO&
be3in tran
USE pubs
GO
U:(ATE titles
SET ad!ance - ad!ance * *;+<
W=ERE 4tdsales > ?,,,
GO
Co22it tran
GO
&"((*AC. / $A0%'"I#T
"OLLBACA T"A6SACT,O6
Cance%a %a transacci<n ) deshace cua%uier cambio a %a base de datos (antes de
CO@@,T T"A6)
SA#!-O,6T
Un sa'epoint es una marca ue e% usuario co%oca dentro de una transacci<n para
indicar un punto hasta e% cua% una transacci<n puede ser deshecha (en adici<n a
B!G,6 T"A6)
Los sa'epoint se insertan co%ocando una sentencia SA#! T"A6SACT,O6 dentro
de %a transacci<n&
"o%%bacD a un sa'epoint no decrementa %a 'ariab%e de SQL EET"A6COU6T ,
sino ue se inicia%i(a con cero (O)&
%-emplos :
B!G,6 T"A6 cambio:nombre
U-1AT! miembro
S!T ape%%ido T X6a'arreteY
3H!"! id:miembro T 0
SA#! T"A6 punto:sa%'a
1!L!T! adu%tos
3H!"! id:miembro T 0
"OLLBACA T"A6 punto:sa%'a
Z Otras sentencias SQL [
CO@@,T T"A6
Otro e$emp%oB
use prueba
3o
Bases de 1atos ,n.& "osa
6a'arrete
11
create table e@ &cola char&9'A colb int'
3o
be3in tran$
(EC"ARE )cuentatran I6T$
SET )cuentatran - ,$
be3in tr4

insert into e@ !alues &.aaaa.A*,'
sa!e tran punto*$
set )cuentatran - *$
raiserror&.error pro!ocado.A *BA *'$

insert into e@ !alues &.bbbb.A+,'
co22it tran$
end tr4
be3in catch
iC )cuentatran - ,
be3in
rollbac5 tran$
end
else
be3in
rollbac5 tran punto*$
co22it tran$
end
end catch
select * Cro2 e@
11T&A#C")#T
1e'ue%'e e% n?mero de transacciones acti'as en %a cone*i<n actua%&
"bser2aciones
La instrucci<n B!G,6 T"A6SACT,O6 incrementa EET"A6COU6T en 0&
"OLLBACA T"A6SACT,O6 reduce EET"A6COU6T a O, e*cepto si es "OLLBACA
T"A6SACT,O6 nomreSaveTran, ue no afecta a EET"A6COU6T&
Cada instrucci<n CO@@,T T"A6SACT,O6 o CO@@,T 3O"A disminu)e
EET"A6COU6T en uno&
%-emplos
!ste e$emp%o uti%i(a EET"A6COU6T para comprobar si ha) transacciones abiertas
ue ha)a ue confirmar&
B!G,6 T"A6SACT,O6
U-1AT! authors S!T au:%name T upper(au:%name)
3H!"! au:%name T J3hiteJ
,2 EE"O3COU6T T 5
CO@@,T T"A6
,2 EET"A6COU6T [ O
B!G,6
-",6T JUna transacci<n necesita un ro%%ed bacDJ
"OLLBACA T"A6
!61
use pubs
Bases de 1atos ,n.& "osa
6a'arrete
11
.o
B!G,6 T"A6SACT,O6
U-1AT! authors S!T au:%name T upper(au:%name)
3H!"! au:%name T JCarsonJ
se%ect EEroCcount
,2 EE"O3COU6T T 0
be.in
CO@@,T T"A6
se%ect EEtrancount
end
,2 EET"A6COU6T [ O
B!G,6
-",6T JUna transacci<n necesita un ro%%ed bacDJ
"OLLBACA T"A6
!61
se%ect au:%name from authors Chere au:%name T JCarsonJ
use prueba
.o
be.in tran
dec%are Esue%doa%to tin)int
se%ect Esue%doa%toTcount(S) from emp%eados
Chere sue%do [ ;OOO
se%ect Esue%doa%to
if Esue%doa%to Z 8
be.in
de%ete emp%eados
Chere sue%do [ ;OOO
se%ect EEroCcount
end
commit tran
Confirmar una transaccin anidada3
!ste e$emp%o crea una tab%a, .enera tres ni'e%es de transacciones anidadas ) despu+s
confirma %a transacci<n anidada& Aunue %as instrucciones CO@@,T T"A6SACT,O6
tienen e% par/metro nomreTransaccin, no ha) re%aci<n entre %as instrucciones
CO@@,T T"A6SACT,O6 ) B!G,6 T"A6SACT,O6&
Los par/metros nomreTransaccin s<%o son a)udas para ue e% pro.ramador pueda
ase.urarse de ue escribe e% n?mero apropiado de confirmaciones para disminuir
EET"A6COU6T hasta O, confirmando as> %a transacci<n entera&
C"!AT! TABL! TestTran (Co%a ,6T -",@A"V A!V, Co%b CHA"(8))
GO
NN ,nicia %a transacci<n
B!G,6 T"A6SACT,O6 Tran!*terna NN EET"A6COU6T T 0&
GO
S!T 6OCOU6T O6
S!L!CT T"A6COU6T T EET"A6COU6T
S!T 6OCOU6T O22
,6S!"T ,6TO TestTran #ALU!S (0, JaaaJ)
GO
B!G,6 T"A6SACT,O6 ,nterna0 NN EET"A6COU6T T 5&
GO
Bases de 1atos ,n.& "osa
6a'arrete
11
S!T 6OCOU6T O6
S!L!CT T"A6COU6T T EET"A6COU6T
S!T 6OCOU6T O22
,6S!"T ,6TO TestTran #ALU!S (5, JbbbJ)
GO
B!G,6 T"A6SACT,O6 ,nterna5 NN EET"A6COU6T T 8&
GO
S!T 6OCOU6T O6
S!L!CT T"A6COU6T T EET"A6COU6T
S!T 6OCOU6T O22
,6S!"T ,6TO TestTran #ALU!S (8, JcccJ)
GO
CO@@,T T"A6SACT,O6 ,nterna5 NN 1ecrementa EET"A6COU6T a 5&
S!T 6OCOU6T O6
S!L!CT T"A6COU6T T EET"A6COU6T
S!T 6OCOU6T O22
NN 6o ha) commit&
GO
CO@@,T T"A6SACT,O6 ,nterna0 NN 1ecrementa EET"A6COU6T a 0&
S!T 6OCOU6T O6
S!L!CT T"A6COU6T T EET"A6COU6T
NN 6o ha) commit&
GO
CO@@,T T"A6SACT,O6 Tran!*terna NN 1ecrementa EET"A6COU6T a O&
NN Commits %a transaction Tran!*terna&
S!L!CT T"A6COU6T T EET"A6COU6T
GO
NN Hasta au> %a transacci<n
S!T 6OCOU6T O22
S!L!CT S 2"O@ TestTran
GO
1"O- TABL! T!STT"A6
GO
Bases de 1atos ,n.& "osa
6a'arrete
11