Транзакциялармен басқару. SQL Server үш басқару транзакцияларымен қамтылады: анық, автоматты және ұқсас.
Анық транзакциялар қолданушылардың транзакцияның басы мен аяғын анық көрсеткенін қажет етеді. Transact SQL командасын орындау арқылы. Анық транзакцияларды басқару мына командалар түрінде қолданылады:
BEGIN TRAN[SACTION] [<транзакция аты>]
@ <ауыстыру аты>
<транзакция аты> деген жерде транзакция аты қолданылады, <ауыстыру аты> ауыстыру атын береді. Бір код қолдана отырып бірнеше транзакцияны жасауға болады.
COMMIT [WORK]
COMMIT [TRAN[SACTION] [<транзакция аты >]
@ <ауыстыру аты>
Транзакцияның аяғы, егер транзакция денесінде қате болмаса, онда ол команда барлық өзгерістерді серверге тіркейді. Транзакцияда істелінген барлық жұмыстар оның журналында сақталады.
ROLLBACK [WORK]
ROLLBACK [TRAN[SACTION] [<транзакция аты >]
@ <ауыстыру аты>
Транзакцияны жылжыту транзакцияны тоқтату үшін және бастапқы қалпына келтіру үшін қолданады.
Автоматтық транзакция SQL Serverінде үнсіз қойылымда орнатылады. Бұл режимде әр команда жеке транзакция ретінде қаралады, яғни команда дұрыс аяқталса онда оның өзгерістері тіркеледі, кері жағдайда жүйе алғашқы қалпына келеді. Транзакция тапсырмасы анық режимі бір бүтін команда бірнеше рет қолданылады. Автоматты және анық емес басталу транзакциясы негізге режимі болып табылады және сервер осы режимдердің біреуінде болады. Анық басталу транзакция режимі басқа екі режим үстімен жұмыс істейді. Автоматты басталу транзакциясының орнату үшін Transact-SQL команда тілі орындалады:
SET IMPLICIT_TRANSACTION OFF
Анық емес транзакциялар (подразумеваемые). Режимде жұмыс істеу кезінде анық емес басталу транзакцияларында сервер жаңа транзакцияны алдындағысы аяқталысымен бастайды. Транзакция аяқталды деп есептелінеді, егер ROLLBACK TRAN, COMMIT TRAN командалары кездессе. ALTER TABLE – кестенің құрылымын өзгерту, CREATE – мәліметтер базасының объектісін құру, DELETE – берілген кестеден жолдың өшірілуі, DROP – мәліметтер базасының объектілерін өшіру, FETCH – курсордың колонкаларынан алынып тастау, GRANT – объектер базасына өтуге рұқсат беру, INSERT – жолдың кестеге қосылуы, OPEN – курсордың ашылуы, SELECT – деректер таңдау, UPDATE – кестенің берілгенін өзгерту.
Анық емес режимді орнату үшін мына команда Transact-SQL орындалады:
SET IMPLICIT_TRANSACTION ON
Құлыптауларды басқару. Орнату туралы барлық жұмыстарды арнайы серверде анықталған менеджермен анықталады. Транзакциялармен автоматты режим түрінде үнсіз қойылым типі түріндегі жұмысты жасайды. Бұл жағдайда қандай құлып керек екенін анық көрсетуге болады.Транзакцияны орындаудың алдында сәйкес келетін құлыптау сұралады. Бұны менеджер шешеді. Кейде, егер керекті ресурс құлыптау менеджерімен бос болмаса, онда сұранысты тоқтатады немесе оны кезекке қояды және оны орындайды.Осыдан кейін ғана қажет етілген ресурс құлыптаудан босатылады. Ресурстың құлыптауынан босауды күту уақыты анық келесі командалармен орындалады:
SET LOCK_TIME OUT <уақыт>
Уақыт деген жерде миллисекунд саны беріледі, ол ресурстың құлыптауынан босауды күту уақытында.
Қолданушы барынша тез орындалатын доступқа ие бола алады. Кейде басқа қолданушылар кестенің берілгеніне қол жеткізе алмайды, себебі транзакция әлі аяқталып болған жоқ.
SQL Server келесі құлыптаулардың түрлерін береді:
RID – жол деңгейіндегі құлыптау;
KEY – индекс деңгейіндегі құлыптау, мәліметтер транзакциясындағы өзгерістерге сәйкес келеді;
Изоляция деңгейі:
1)READ UNCOMMITED – аяқталмай қалған оқу, төменгі деңгей изоляцияның тек мәліметтердің бүтіндігін ғана қамтамасыз етеді. Ол үшін изоляцияға анық команда беру керек:
SET TRANSACTION ISOLATION LEVEL
READ UNCOMMITED
2) READ COMMITED – аяқталған оқу еш кедергісіз болады, ол үшін сервер ұжымдық құлыптауды қолданады. Изоляцияның берілген деңгейі үнсіз қойылымда болады. Ол үшін изоляцияға анық команда беру керек:
SET TRANSACTION ISOLATION LEVEL
READ COMMITED
3) REPEATABLE READ – қайталап оқу, бұл қайталап оқымау мәселесін шешеді. Ол үшін, монопольды құлыптау қолданылады. Ол үшін изоляцияға анық команда беру керек:
SET TRANSACTION ISOLATION LEVEL
REPEATABLE READ
4) SERIALIZABLE – бөліктеу, изоляцияның ең жоғарғы деңгейі болып табылады, барлық мәселелерді шешеді. Ол үшін мына команда орындалады:
SET TRANSACTION ISOLATION LEVEL
SERIALIZABLE
SET TRANSACTION ISOLATION LEVEL орнату изоляциясы деңгейін арнайы кілттік сөздер арқылы шешуге болады.