Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
MaratSH
Member

Откуда: Moscow
Сообщений: 179
Господа, подскажите,

есть ли в MS SQL подобие анонимным транзакции в Oracle?
25 апр 12, 16:33    [12470263]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
анонимным транзакции
Guest
а что такое анонимным транзакции в Oracle?
25 апр 12, 16:44    [12470355]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
ЕвгенийВ
Member

Откуда: Москва
Сообщений: 4994
MaratSH,
все запросы исполняются внутри неявной транзакции.
25 апр 12, 17:02    [12470487]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
MaratSH,
Если нужно запустить sql-код в рамках другой транзакции, можно написать CLR процедуру.
25 апр 12, 17:06    [12470520]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
автономные транзакции
Guest
trew
MaratSH,
Если нужно запустить sql-код в рамках другой транзакции, можно написать CLR процедуру.

только в Орацле это не анонимные, а автономные транзакции.
25 апр 12, 17:07    [12470535]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
MaratSH,
нет.
Можно сделать через CLR.
Может табличные переменные сгодятся...
Все зависит от задачи.
25 апр 12, 17:08    [12470545]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
MaratSH
Member

Откуда: Moscow
Сообщений: 179
анонимным транзакции
а что такое анонимным транзакции в Oracle?


извиняюсь, быстро писал, слишком сократил выражение...
в Oracle есть АВТОНОМНЫЕ ТРАНЗАКЦИИ (Autonomous Transactions)
т.е., блок кода можно выполнить в транзакции, независящей от текущей транзакции родительского блока кода, и т.д. и т.п.
кроме того, это может быть АНОНИМНЫМ БЛОКОМ.
так вот есть ест ли такое в MS SQL
25 апр 12, 17:09    [12470548]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
denis2710
Member

Откуда: Москва
Сообщений: 3384
MaratSH,
автор
в Oracle есть АВТОНОМНЫЕ ТРАНЗАКЦИИ (Autonomous Transactions)

нет.уже сказали как можно сделать.
автор
то может быть АНОНИМНЫМ БЛОКОМ.

нет.Тут T-SQL ,а не pl\sql.
25 апр 12, 17:14    [12470593]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35381
Блог
MaratSH,

Как уже сказали, данные в табличных переменных не откатываются при откате транзакции или использовать CLR, а возможно подойдет и SAVE TRANSACTION. Зависит от того, что вы хотите сделать.
25 апр 12, 17:18    [12470619]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
MaratSH
Member

Откуда: Moscow
Сообщений: 179
denis2710
MaratSH,
Все зависит от задачи.



Задача такая:
по требованию заказчика нужно выполнять некий SQL скрипт прямо из файловой системы, без использования процедур, которые явно участвуют в бизнес-логике того, что делает скрипт. т.е. можно использовать всякие утилитные процедуры общего назначения, но все, что касается задачи скрипта, должно быть явно в нем. мы все сделали.
но, вот как логировать процесс в таблички базы, а не просто PRINT'овать?
чтобы логировать процесс работы подобного большого блока кода, в оракле бы я просто объявлял анонимные блоки c автономными транзакциями, или бы написал утилитную процедуру, работающую в автономной транзакции.
а вот CLR подключить на серверах мы не можем, этот функционал отключен намертво у заказчика.
pipe использовать - бред, кто на сервере (или пусть даже на клиенте) его слушать будет :) ?

так что будем искать путь вывода PRINT'ов , т.е. в клиентской программе, исполняющей скрипт, надо как-то читать весь вывод сервера для этого скрипта.
25 апр 12, 17:58    [12470857]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
MaratSH
denis2710
MaratSH,
Все зависит от задачи.



Задача такая:
по требованию заказчика нужно выполнять некий SQL скрипт прямо из файловой системы, без использования процедур, которые явно участвуют в бизнес-логике того, что делает скрипт. т.е. можно использовать всякие утилитные процедуры общего назначения, но все, что касается задачи скрипта, должно быть явно в нем. мы все сделали.
но, вот как логировать процесс в таблички базы, а не просто PRINT'овать?
чтобы логировать процесс работы подобного большого блока кода, в оракле бы я просто объявлял анонимные блоки c автономными транзакциями, или бы написал утилитную процедуру, работающую в автономной транзакции.
а вот CLR подключить на серверах мы не можем, этот функционал отключен намертво у заказчика.
pipe использовать - бред, кто на сервере (или пусть даже на клиенте) его слушать будет :) ?

так что будем искать путь вывода PRINT'ов , т.е. в клиентской программе, исполняющей скрипт, надо как-то читать весь вывод сервера для этого скрипта.


дак а в чем проблема то состоит?
логируйте работу скрипта в таблицу (вместо print сделать insert в некую лог-таблицу)
на клиенте открываете второй конект и читаете эту таблицу.
25 апр 12, 18:25    [12471001]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
lelix
Guest
loopback linked server в случае SQL Server 2008R2 и выше (про 2008 не помню)

но с ним тоже не всё так хорошо, с секурити помучаетесь возможно
что-то типа такого
http://blogs.msdn.com/b/sqlprogrammability/archive/2008/08/22/how-to-create-an-autonomous-transaction-in-sql-server-2008.aspx
25 апр 12, 18:36    [12471034]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
MaratSH
Member

Откуда: Moscow
Сообщений: 179
WarAnt
дак а в чем проблема то состоит?
логируйте работу скрипта в таблицу (вместо print сделать insert в некую лог-таблицу)
на клиенте открываете второй конект и читаете эту таблицу.


так это понятно, дело в том, что нам надо иногда откатывать транзакцию, но сохранять записи созданные в этой лог-таблице во время транзакции.
26 апр 12, 13:58    [12474185]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
Deff
Member

Откуда: Пермь
Сообщений: 18328
DECLARE @t TABLE (ID int)

INSERT INTO @t VALUES (10)
BEGIN TRAN
INSERT INTO @t VALUES (12)
ROLLBACK TRAN

SELECT * FROM @t
26 апр 12, 14:09    [12474269]     Ответить | Цитировать Сообщить модератору
 Re: есть ли в MS SQL подобие анонимным транзакции в Oracle?  [new]
MaratSH
Member

Откуда: Moscow
Сообщений: 179
Deff
DECLARE @t TABLE (ID int)

INSERT INTO @t VALUES (10)
BEGIN TRAN
INSERT INTO @t VALUES (12)
ROLLBACK TRAN

SELECT * FROM @t


наверное так и сделаем, сохраняя эту таблицу в реальную таблицу БД в конце скрипта

но, есть загвоздка - если скрипт оборвется как-то жестоко, то записанные логи не сохранятся...
26 апр 12, 14:48    [12474551]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить