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

Откуда:
Сообщений: 92
Проблемка с использованием данных связанного сервера.
Образец кода:

--Процедура
create procedure testtest
as
begin
set nocount on
create table #test2 (n int)
insert into #test2 (n)
select n from LINKTEST.test.dbo.ttest where n > 1
--select n from test..ttest (nolock) where n > 1
select n from #test2 (nolock)
drop table #test2
set nocount off
end
go

--Код вызова процедуры
create table #test1 (n int)
insert into #test1 (n)
exec testtest
select * from #test1 (nolock)
drop table #test1

Данный код не работает т.е. уходит в никуда до обрыва конекции :(
Сам по себе вызов exec testtest успешно работает, но не в связке с insert ... exec.
Более того если заменить обращение (закоментировано в процедуре) на таблицу локального сервера, тоже все успешно. Проблема при попытке обращения к связанному серверу.

В чем проблема и как с этим бороться?
17 ноя 09, 15:49    [7940490]     Ответить | Цитировать Сообщить модератору
 Re: Проблема Linked Server :(  [new]
avk_soft
Member

Откуда:
Сообщений: 92
Коллеги заказчик "сжет".
У кого-нибудь есть мысли побороть беду.
18 ноя 09, 09:29    [7943082]     Ответить | Цитировать Сообщить модератору
 Re: Проблема Linked Server :(  [new]
Glory
Member

Откуда:
Сообщений: 104760
Вы уже запустили профайлер на втором сервере и увидели, что на нем происходит при выполнении вашего кода ?
Или мониторили состояния коннектов на втором сервере ?
Или мониторили распределенные транзакции в соответствующем менеджере ?
18 ноя 09, 10:35    [7943484]     Ответить | Цитировать Сообщить модератору
 Re: Проблема Linked Server :(  [new]
avk_soft
Member

Откуда:
Сообщений: 92
Запускал профайлер на первом (вообще ничего не выдает) и на втором link (выдает только Audit Level - успешное) серверах.
Далее тишина... Каких либо сообщений об ошибках нет.
В приведенном примере нет явного указания распределенной транзакции, да и обычной тоже.
18 ноя 09, 11:11    [7943718]     Ответить | Цитировать Сообщить модератору
 Re: Проблема Linked Server :(  [new]
Glory
Member

Откуда:
Сообщений: 104760
avk_soft

Далее тишина... Каких либо сообщений об ошибках нет.

А какие события вы вообще мониторите то ?


avk_soft

В приведенном примере нет явного указания распределенной транзакции, да и обычной тоже.

Если в локальной транзакции участвуют объекты других серверов, то локальный сервер самостоятельно позаботится о превращении транзакции в распределенную
Ну а то, что все изменения данных MSSQL выполняет в транзакциях, даже если вы эти транзакции не задаете явно, известно с момента выхода первой версии MSSQL
18 ноя 09, 11:18    [7943750]     Ответить | Цитировать Сообщить модератору
 Re: Проблема Linked Server :(  [new]
avk_soft
Member

Откуда:
Сообщений: 92
Мониторю все события, без каких либо ограничений.
О неявно открытии транзакции на связанном сервере мне известно.
Вопрос в том что вызов exec testtest сам по себе успешно работает.
Проблема начинается если результат затолкать в таблицу (не обязательно временную) т.е. при вызове insert into #test1 (n) exec testtest :(
18 ноя 09, 11:28    [7943828]     Ответить | Цитировать Сообщить модератору
 Re: Проблема Linked Server :(  [new]
Glory
Member

Откуда:
Сообщений: 104760
avk_soft
Мониторю все события, без каких либо ограничений.
О неявно открытии транзакции на связанном сервере мне известно.
Вопрос в том что вызов exec testtest сам по себе успешно работает.
Проблема начинается если результат затолкать в таблицу (не обязательно временную) т.е. при вызове insert into #test1 (n) exec testtest :(

Т.е. вы не видите на линкованном сервере выполнения запроса ?
18 ноя 09, 11:30    [7943852]     Ответить | Цитировать Сообщить модератору
 Re: Проблема Linked Server :(  [new]
avk_soft
Member

Откуда:
Сообщений: 92
Если делаю вызов insert into #test1 (n) exec testtest, то в профайлере вижу только одно сообщение Audit Level.
Если просто exec testtest, куча сообщений, в том числе о исполнении select n from LINKTEST.test.dbo.ttest where n > 1
18 ноя 09, 11:43    [7943943]     Ответить | Цитировать Сообщить модератору
 Re: Проблема Linked Server :(  [new]
Glory
Member

Откуда:
Сообщений: 104760
А как видится в профайлере следющее ?

BEGIN DISTRUBUTED TRANSACTION
select n from LINKTEST.test.dbo.ttest where n > 1
COMMIT
18 ноя 09, 12:00    [7944109]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить