Автор работы: Пользователь скрыл имя, 27 Ноября 2013 в 14:01, шпаргалка
Работа содержит ответы на вопросы для экзамена по "Информатике".
«Параметр WITH MARK применяется только к первой инструкции BEGIN TRAN WITH MARK.»
«Параметр не обрабатывается.»
Разрешения
Необходимо членство в роли public.
Примеры
В следующем примере показано, как присвоить транзакции имя.
DECLARE @TranName VARCHAR(20);
SELECT @TranName = 'MyTransaction';
BEGIN TRANSACTION @TranName;
USE AdventureWorks2012;
DELETE FROM AdventureWorks2012.
WHERE JobCandidateID = 13;
COMMIT TRANSACTION @TranName;
GO
В следующем примере показано,
как пометить транзакцию. Транзакция Candida
BEGIN TRANSACTION CandidateDelete
WITH MARK N'Deleting a Job Candidate';
GO
USE AdventureWorks2012;
GO
DELETE FROM AdventureWorks2012.
WHERE JobCandidateID = 13;
GO
COMMIT TRANSACTION CandidateDelete;
GO
COMMIT TRANSACTION (Transact-SQL)
Отмечает успешное завершение явной или неявной транзакции. Если значение @@TRANCOUNT равно 1, то инструкция COMMIT TRANSACTION выполняет все изменения, сделанные с начала транзакции постоянной частью базы данных, освобождает ресурсы, удерживаемые транзакцией, и уменьшает значение параметра @@TRANCOUNT до 0. Если значение переменной @@TRANCOUNT больше 1, инструкция COMMIT TRANSACTION уменьшает значение @@TRANCOUNT только на 1 и оставляет транзакцию активной.
Синтаксические обозначения в Transact-SQL
Синтаксис
COMMIT { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] ]
[ ; ]
Аргументы
transaction_name
Игнорируется службой Компонент
SQL Server Database Engine. transaction_name указы
@tran_name_variable
Имя определенной пользователем
переменной, содержащей допустимое имя
транзакции.Переменная должна иметь тип
данных char, varchar, nchar ил
Замечания
Обязанностью программиста на языке Transact-SQL является вызов инструкции COMMIT TRANSACTION только в том случае, когда все данные, относящиеся к транзакции, логически верны.
Если зафиксированная транзакция является распределенной транзакцией Transact-SQL, инструкция COMMIT TRANSACTION вызывает координатор MS DTC для использования двухфазного протокола фиксации на всех серверах, участвующих в транзакции. Если локальная транзакция охватывает две или более базы данных одного и того же экземпляра компонента Компонент Database Engine, то экземпляр использует встроенный двухэтапный алгоритм для фиксирования всех баз данных, вызванных в транзакции.
При использовании вложенных транзакций фиксация внутренних транзакций не освобождает ресурсы и не делает их изменения постоянными. Изменения данных становятся постоянными и освобождаются ресурсы только при фиксации внешней транзакции. Вызов каждой инструкции COMMIT TRANSACTION приводит к тому, что если значение @@TRANCOUNT больше 1, то значение переменной @@TRANCOUNT просто уменьшается на 1. Когда значение @@TRANCOUNT уменьшится до нуля, вся внешняя транзакция фиксируется. Так как аргументtransaction_name не учитывается компонентом Компонент Database Engine, то вызов инструкции COMMIT TRANSACTION, содержащей ссылку на имя внешней транзакции, приводит к тому, что если существуют необработанные внутренние транзакции, то производится только уменьшение значения параметра @@TRANCOUNT на 1.
Вызов инструкции COMMIT TRANSACTION, когда значение параметра @@TRANCOUNT равно нулю, дает ошибку, так как нет соответствующей инструкции BEGIN TRANSACTION.
Нельзя произвести откат транзакции после вызова инструкции COMMIT TRANSACTION, так как измененные данные уже стали частью базы данных.
Компонент Компонент Database Engine увеличивает счетчик транзакций внутри выражения, только когда счетчик транзакций равен нулю при запуске инструкции.
Разрешения
Необходимо быть членом роли public.
Примеры
В следующем примере удаляется кандидат на вакансию.
USE AdventureWorks2012;
GO
BEGIN TRANSACTION;
GO
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = 13;
GO
COMMIT TRANSACTION;
GO
В следующем примере создается
таблица и формируется три уровня вложенных
транзакций, которые затем фиксируются. Хотя каждая инструкция COMMIT TRANSACTION имеет параметрtransaction_name, не существует связи между
инструкциями COMMIT TRANSACTION и BEGIN TRANSACTION. Параметры transac
USE AdventureWorks2012;
GO
IF OBJECT_ID(N'TestTran',N'U') IS NOT NULL
DROP TABLE TestTran;
GO
CREATE TABLE TestTran (Cola int PRIMARY KEY, Colb char(3));
GO
-- This statement sets @@TRANCOUNT to 1.
BEGIN TRANSACTION OuterTran;
GO
PRINT N'Transaction count after BEGIN OuterTran = '
+ CAST(@@TRANCOUNT AS nvarchar(10));
GO
INSERT INTO TestTran VALUES (1, 'aaa');
GO
-- This statement sets @@TRANCOUNT to 2.
BEGIN TRANSACTION Inner1;
GO
PRINT N'Transaction count after BEGIN Inner1 = '
+ CAST(@@TRANCOUNT AS nvarchar(10));
GO
INSERT INTO TestTran VALUES (2, 'bbb');
GO
-- This statement sets @@TRANCOUNT to 3.
BEGIN TRANSACTION Inner2;
GO
PRINT N'Transaction count after BEGIN Inner2 = '
+ CAST(@@TRANCOUNT AS nvarchar(10));
GO
INSERT INTO TestTran VALUES (3, 'ccc');
GO
-- This statement decrements @@TRANCOUNT to 2.
-- Nothing is committed.
COMMIT TRANSACTION Inner2;
GO
PRINT N'Transaction count after COMMIT Inner2 = '
+ CAST(@@TRANCOUNT AS nvarchar(10));
GO
-- This statement decrements @@TRANCOUNT to 1.
-- Nothing is committed.
COMMIT TRANSACTION Inner1;
GO
PRINT N'Transaction count after COMMIT Inner1 = '
+ CAST(@@TRANCOUNT AS nvarchar(10));
GO
-- This statement decrements @@TRANCOUNT to 0 and
-- commits outer transaction OuterTran.
COMMIT TRANSACTION OuterTran;
GO
PRINT N'Transaction count after COMMIT OuterTran = '
+ CAST(@@TRANCOUNT AS nvarchar(10));
GO
ROLLBACK TRANSACTION (Transact-SQL)
Откатывает явные или неявные транзакции до начала или до точки сохранения транзакции.ROLLBACK TRANSACTION можно использовать для отмены всех изменений данных, произведенных с начала транзакции или до точки сохранения. Она также освобождает ресурсы, используемые транзакцией.
Синтаксические обозначения в Transact-SQL
Синтаксис
ROLLBACK { TRAN | TRANSACTION }
[ transaction_name | @tran_name_variable
| savepoint_name | @savepoint_variable ]
[ ; ]
Аргументы
transaction_name
Имя, присвоенное транзакции
в BEGIN TRANSACTION. Имя transaction_
@ tran_name_variable
Имя пользовательской переменной,
содержащей допустимое имя транзакции. Эта переменная должна иметь
тип данных char, varchar, nchar ил
savepoint_name
savepoint_name из инструкции SAVE TRANSACTION. Имя savepoint_
@ savepoint_variable
Имя пользовательской переменной,
содержащей допустимое имя точки сохранения. Эта переменная должна иметь
тип данных char, varchar, nchar ил
Обработка ошибок
Инструкция ROLLBACK TRANSACTION не выдает никаких сообщений пользователю. Если нужны предупреждения в хранимой процедуре или триггере, используйте инструкции RAISERROR или PRINT. Инструкция RAISERROR предпочтительна для отображения ошибок.
Общие примечания
Инструкция ROLLBACK TRANSACTION без аргумента savepoint_name или t
Инструкция ROLLBACK TRANSACTION не может ссылаться на аргумент savepoint_name в распределенных транзакциях, запущенных явно с помощью инструкции BEGIN DISTRIBUTED TRANSACTION или вызванных из локальной транзакции.
Нельзя выполнить откат транзакции после выполнения инструкции COMMIT TRANSACTION, кроме случая, когда инструкция COMMIT TRANSACTION связана с вложенной транзакцией, которая содержится внутри откатываемой транзакции. В этом случае будет выполнен также откат вложенной транзакции, даже если для нее была выполнена инструкция COMMIT TRANSACTION.
Внутри транзакции допускается использование повторяющихся имен точки сохранения, но инструкция ROLLBACK TRANSACTION, использующая повторяющееся имя точки сохранения, откатывает транзакцию только к самой последней точке сохранения, установленной с помощью инструкции SAVE TRANSACTION для этого имени.
Совместимость
В хранимых процедурах инструкция
ROLLBACK TRANSACTION без аргументов savepoint_name илиt
Если инструкция ROLLBACK TRANSACTION запускается в триггере, происходит следующее:
Значение @@TRANCOUNT увеличивается на единицу при срабатывании триггера даже в режиме автоматической фиксации. (Система обрабатывает триггер как неявную вложенную транзакцию.)
Инструкция ROLLBACK TRANSACTION в хранимой процедуре не влияет на последующие инструкции в пакете, вызвавшем процедуру; последующие инструкции в пакете выполняются.Инструкции ROLLBACK TRANSACTION в триггерах уничтожают пакет, содержащий инструкцию, вызвавшую триггер; последующие инструкции в пакете не выполняются.
Эффект, оказываемый инструкцией ROLLBACK на курсоры, определяется тремя правилами:
Режим блокировки
Инструкция ROLLBACK TRANSACTION с параметром savepoint_name осво
Разрешения
Необходимо членство в роли public.
Примеры
В следующем примере демонстрируется эффект отката именованной транзакции:
USE tempdb;
GO
CREATE TABLE ValueTable ([value] int;)
GO
DECLARE @TransactionName varchar(20) = 'Transaction1';
--The following statements start a named transaction,
--insert two rows, and then roll back
--the transaction named in the variable @TransactionName.
--Another statement outside of the named transaction inserts two rows.
--The query returns the results of the previous statements.
BEGIN TRAN @TransactionName
INSERT INTO ValueTable VALUES(1), (2);
ROLLBACK TRAN @TransactionName;
INSERT INTO ValueTable VALUES(3),(4);
SELECT [value] FROM ValueTable;
DROP TABLE ValueTable;
--Results
--value
-------------
--3
--4
12)
Компонент резервного копирования и восстановления SQL Server обеспечивает необходимую защиту важных данных, которые хранятся в базах данных SQL Server. Чтобы минимизировать риск необратимой потери данных, необходимо регулярно создавать резервные копии баз данных, в которых будут сохраняться производимые изменения данных. Хорошо продуманная стратегия резервного копирования и восстановления защищает базы от потери данных при повреждениях, происходящих из-за различных сбоев. Проверьте выбранную стратегию, выполнив восстановление баз данных из набора резервных копий; это поможет эффективно среагировать на реальные проблемы.
Примечание |
Начиная с версии SQL Server 2012 с пакетом обновления 1 (SP1) и накопительным обновлением CU2, поддерживается резервное копирование данных SQL Server в службу хранилищ больших двоичных объектов Windows Azure. Дополнительные сведения см. в разделах Backup and Restore Enhancements и Резервное копирование и восстановление SQL Server с помощью службы хранилищ больших двоичных объектов Windows Azure. |
Решения для типичных проблем клиентов с базой данных SQL Windows Azure, SQL Server Data Tools и средой SQL Server Management Studio см. в разделе Управление жизненным циклом базы данных.
В этом разделе.
Преимущества