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

Откуда:
Сообщений: 92
У меня небольшой практический вопросик.
Имеется следующий SQL текст

use test
go
if exists(select * from sysobjects (nolock) where name = 'testperm')
drop procedure testperm
go
create procedure testperm
as
begin
declare @ver int
set @ver = 1
if @ver = 0
select * from test2..Doc (nolock)
else
select * from Doc (nolock)
end
go
GRANT EXECUTE ON testperm TO public
GO

Дело в том, что в зависимости от версийности прикладной информационной системы, база test2 может не использоваться (пользователь test в ней не прописан).
При ее вызове обращения к test2 не произойдет т.к. @ver всегда 1.
Более того исполнение процедуры посредством SQL Query Analyzer от имени пользователя test проходит успешно.
Проблема начинается, если вызвать процедуру из клиентского приложения от имени пользователя test , например SQL Explorer (утилита из Delphi).
Выдается сообщение: "Пользователь test не найден в базе test2".
В чем может быть проблема и как с ней бороться?
16 ноя 09, 14:59    [7934410]     Ответить | Цитировать Сообщить модератору
 Re: Проблема вызова хранимой процедуры  [new]
Glory
Member

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

Проблема начинается, если вызвать процедуру из клиентского приложения от имени пользователя test , например SQL Explorer (утилита из Delphi).
Выдается сообщение: "Пользователь test не найден в базе test2".
В чем может быть проблема и как с ней бороться?

Если одно приложение работает, а второе - нет, то логично предположить, что проблема в приложении
А для версионности вообще пишут отдельные процедуры и процедуру-обертку
16 ноя 09, 15:12    [7934511]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить