powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запуск процедуры от имени
14 сообщений из 14, страница 1 из 1
Запуск процедуры от имени
    #39648279
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Microsoft SQL Server 2008 R2 (RTM) - 10.50.1617.0 (X64) Apr 22 2011 19:23:43 Copyright (c) Microsoft Corporation Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor)

Я написал хранимую процедуру, которая получает данные из текущего сервера и из связанного сервера, затем данные объединятся и выводятся через select. У меня достаточно прав для выполнения всех необходимых операций.. теперь мне нужно сделать так, чтобы пользователь с меньшими правами мог получить возможность запустить процедуру и получить результат, но я не могу дать ему доступ ко всем таблицам из процедуры... я хочу, чтобы он запустил процедуру а внутри она использовала права логина который создал процедуру...

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
alter procedure sp_P 
        @dtB datetime = NULL
       ,@dtE datetime = NULL    
WITH EXECUTE AS Owner        
as

begin

if @dtB is null or @dtE is null
begin 
	SET @dtB = DATEADD(DAY,-1,CAST(GETDATE() as DATE))
	SET @dtE = CAST(GETDATE() as date)
end

declare @SQL varchar(max)   
SET @SQL = '
declare @dtB datetime = '''+REPLACE(CONVERT(varchar, @dtB, 120),'-','')+'''
       ,@dtE datetime = '''+REPLACE(CONVERT(varchar, @dtE, 120),'-','')+'''
       
select *
from table
'    
create table #table (id int)
insert into #table (id)
EXEC (@SQL) at [srv-sql03] 
select *
from #table o 
left join table2 (nolock) sms on  o.id=sms.id
end


Ну вот что-то типа этого

Когда не указываю WITH EXECUTE AS Owner
ошибка:
Серверу-участнику "uuu" не удалось обратиться к базе данных "ttt" в текущем контексте безопасности.

Когда же указываю
ошибка:
Доступ к удаленному серверу запрещен, поскольку текущий контекст безопасности не является доверенным.

Когда же пишу EECUTE AS LOGIN = 'LOGIN', после получения данных из удаленного сервера
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648280
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
выходит ошибка:
Не удалось выполнить в качестве сервера-участника, поскольку участник "uuu" не существует, этот тип участника не может проходить олицетворение, или отсутствует разрешение.

Помогите пожалуйста разобраться в чем дело и как я могу достичь указанной цели?
спасибо
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648288
Фотография Дедушка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandistСерверу-участнику "uuu" не удалось обратиться к базе данных "ttt" в текущем контексте безопасности."uuu" это ваш [srv-sql03]?
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648301
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandistПомогите пожалуйста разобраться в чем дело и как я могу достичь указанной цели?
спасибо

1. Осознать, что даже если ты объявишь себя "путиным" - все прочие не обязаны тебе верить.
2. Точно так же и удаленный сервер клал на твой
Код: sql
1.
EXECUTE AS LOGIN = 'LOGIN'


3. EXECUTE AS действует только в пределах ЭТОГО сервера.
4. Другой сервер спросит: "Ваш мандат?"

Как только ты осознаешь свет этих простых истин - жисть станент легше, жисть станет веселей.
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648420
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

жаль нет тут смайла фейспалм... удаленный сервер выдает результат как надо... с ним проблем нет... как раз текущий сервер мозги делает [srv-sql03] - это удаленный сервер... после него уже начинаются проблемы...
мне кажется должен быть какой-то механизм... кто имеет знания в этих вопросах помогите пожалуйста
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648421
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дедушка,
uuu - это логин
ttt - база данных
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648436
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandistaleks222,

жаль нет тут смайла фейспалм... удаленный сервер выдает результат как надо... с ним проблем нет... как раз текущий сервер мозги делает [srv-sql03] - это удаленный сервер... после него уже начинаются проблемы...
мне кажется должен быть какой-то механизм... кто имеет знания в этих вопросах помогите пожалуйста

С таким мутным потоком сознания вам следует переквалифицироваться в управдомы.
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648441
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222,

это не относится к теме моего вопроса
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648445
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222Sandistaleks222,

жаль нет тут смайла фейспалм... удаленный сервер выдает результат как надо... с ним проблем нет... как раз текущий сервер мозги делает [srv-sql03] - это удаленный сервер... после него уже начинаются проблемы...
мне кажется должен быть какой-то механизм... кто имеет знания в этих вопросах помогите пожалуйста

С таким мутным потоком сознания вам следует переквалифицироваться в управдомы.
в точках зашифровано чот-то

Что во вкладке security linked servera?
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648450
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
я видимо неправильно сформулировал вопрос
суть в том, что я могу вообще не использовать linked server, пусть все данные лежат на одном сервере, все равно я не могу получить нужный результат, система выдает ошибку:
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648453
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SandistTaPaK,
я видимо неправильно сформулировал вопрос
суть в том, что я могу вообще не использовать linked server, пусть все данные лежат на одном сервере, все равно я не могу получить нужный результат, система выдает ошибку:
database chaining
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648454
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist,

Серверу-участнику "uuu" не удалось обратиться к базе данных "IES" в текущем контексте безопасности.
когда я логинюсь к серверу от имени uuu, то процедура отрабатывает, когда пишу внутри with execute as 'uuu', логинюсь через учетку mon и пробую запустить процедуру, получаю вышеуказанную ошибку...
насчет удаленного сервера я написал на всякий случай, вдруг это на что влияет... ну да ладно с ним, его я уберу из процедуры, как на текущем сервере получить нужны результат
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648464
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,
спасибо большое, идею я понял, попробую поменять этот параметр
...
Рейтинг: 0 / 0
Запуск процедуры от имени
    #39648879
Sandist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sandist,
По итогу решил создать пару представлений (в которых ограничил набор) и дал доступ на select этим представлениям
вдруг кому пригодится
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Запуск процедуры от имени
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]