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

Откуда:
Сообщений: 85
Доброго времени суток!
возникла такая проблема:
на Microsoft SQL Server 2000 - 8.00.2282 (Intel X86) есть ХП proc1 примерно след-го содержания:

alter procedure proc1
....
as
--- здесь идет создание и заполнение временной таблицы #ID
....
Exec(' exec ['+@ServerNameReg+'].['+@DBNameReg+'].dbo.UpdtFN2429_FN2400 1 ' )
...
...
-- конец проц

где Exec(' exec ['+@ServerNameReg+'].['+@DBNameReg+'].dbo.UpdtFN2429_FN2400 1 ' ) - вызов ХП на линкованном сервере, кот-я обновляет некую таблицу на этом же линк-сервере

содержимое этой проц примерно такое :
alter procedure dbo.UpdtFN2429_FN2400
@Act int
as
if @Act = 1
Begin
update a
set Sverka =7, Date_Sv=getdate()
from FN2429 a inner join #ID b on a.N242901=b.N242901 and IsNull(b.Error,0)=4
--здесь #ID -та самая врем табл кот-я создана в вызывающей процедуре, т.е. в proc1
End
...
-- the end of dbo.UpdtFN2429_FN2400

естественно это все не работает.
На ум приходит единственный вариант - гонять курсор в proc1 b и вызывать
UpdtFN2429_FN2400 для каждой строчки таблицы #ID

Вопрос в том - единственный ли это вариант решения проблемы , если нет - то как еще можно
выкрутиться ?
Заранее большое спасибо всем ответившим!
11 июл 11, 15:29    [10956282]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и LinkedServer  [new]
1
Guest
update a
set Sverka =7, Date_Sv=getdate()
from servername.databasename.dbo.FN2429 a
inner join #ID b on a.N242901=b.N242901 and IsNull(b.Error,0)=4
11 июл 11, 15:36    [10956332]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и LinkedServer  [new]
GeneralMotors
Member

Откуда:
Сообщений: 85
1,
нет, так не катит - дело в том что под правами, под которым пользователь запускает proc1, нельзя на линк сервере проадейтить таблицу, можно только запустить проц, которая это сделает.
11 июл 11, 15:41    [10956382]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и LinkedServer  [new]
Glory
Member

Откуда:
Сообщений: 104751
GeneralMotors
естественно это все не работает.
На ум приходит единственный вариант - гонять курсор в proc1 b и вызывать
UpdtFN2429_FN2400 для каждой строчки таблицы #ID

Вопрос в том - единственный ли это вариант решения проблемы , если нет - то как еще можно
выкрутиться ?
Заранее большое спасибо всем ответившим!

Вы хотите в одном коннекте обращаться к локальной временной таблице другого коннекта ?
11 июл 11, 15:43    [10956398]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и LinkedServer  [new]
GeneralMotors
Member

Откуда:
Сообщений: 85
Glory,

хотелось бы как-нибудь да....это невозможно, я правильно понимаю?
11 июл 11, 15:45    [10956418]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и LinkedServer  [new]
Glory
Member

Откуда:
Сообщений: 104751
GeneralMotors
Glory,

хотелось бы как-нибудь да....это невозможно, я правильно понимаю?

Иначе бы они не были _локальными_ таблицами
11 июл 11, 15:47    [10956437]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и LinkedServer  [new]
HandKot
Member

Откуда: Sergiev Posad
Сообщений: 3058
может лучше передавать все ID строкой, а на линке парсить или еще как?
тогда и надобность временной таблицы отпадет
11 июл 11, 15:50    [10956473]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и LinkedServer  [new]
GeneralMotors
Member

Откуда:
Сообщений: 85
HandKot,

идея хорошая. Только в #ID может быть дофига записей (на данный момент их 18425) - длины строки в SQL 2000 не хватит, там она вроде всего 8000.
11 июл 11, 15:58    [10956562]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и LinkedServer  [new]
Glory
Member

Откуда:
Сообщений: 104751
И зачем такая морока с кучей динамики ?
declare @x sysname
set @x  = 'myserver.master.dbo.sp_who'
exec @x
11 июл 11, 16:16    [10956757]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и LinkedServer  [new]
GeneralMotors
Member

Откуда:
Сообщений: 85
Glory,

о! sysname значит...
а когда у проц есть параметры, какой будет синтаксис?
11 июл 11, 16:28    [10956857]     Ответить | Цитировать Сообщить модератору
 Re: временные таблицы и LinkedServer  [new]
Glory
Member

Откуда:
Сообщений: 104751
GeneralMotors
Glory,

о! sysname значит...
а когда у проц есть параметры, какой будет синтаксис?

Дело не в sysname, а документированном синтаксисе команды execeute
11 июл 11, 16:31    [10956890]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить