powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Service broker procedure. Access to the remote server is denied
12 сообщений из 12, страница 1 из 1
Service broker procedure. Access to the remote server is denied
    #39837979
IlyamI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго дня.

Пытаюсь заставить работать процедуру с линкованным сервером.

Имеется: полностью настроенный service broker под конкретную задачу (тип сообщения, очередь, сервис, контракт и т.д.) Создана и вызывается при получении сообщения процедура.

Одна беда - вызываемая процедура (пр.1) в зависимости от сообщения вызывает другую процедуру (пр.2). В пр.2 имеется запрос на другой сервер через линк. Пр.2 даже не начинает выполняться. В момент ее вызова падает с ошибкой "Access to the remote server is denied because the current security context is not trusted".

Небольшое расследование показало, что пр.1 вызывается в следующем контексте безопасности, соответственно, контекст выполнения пр.2 тот же:
Код: sql
1.
select CURRENT_USER, SESSION_USER, SUSER_NAME(), SUSER_SNAME(), SYSTEM_USER, USER, USER_ID(), USER_NAME()


dbo dbo sa sa sa dbo 1 dbo

Линк создан с параметром "Be made using this security context":
Код: sql
1.
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'сервер name',@useself=N'False',@locallogin=NULL,@rmtuser=N'remote user',@rmtpassword='user password'



Подскажите, почему не работает линк?
...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39837990
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придется включить у БД trustworthy.
...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39838000
IlyamI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

проставил у обеих БД это свойство в ТРУ, не помогло
...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39838011
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IlyamI,

у вас процедура 1 это процедура активации очереди?
...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39838020
IlyamI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
felix_ff,

Да, это процедура, которая вызывается при появлении сообщения в очереди.
...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39838027
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IlyamI,

судя по сообщения, связанный сервер должен быть подключен через доверительное соединение, т.е. Win авторизация.
...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39838030
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IlyamIпроставил у обеих БД это свойство в ТРУ, не помоглоНе надо у обоих. Надо у вызывающей.
Владелец БД кто?
...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39838033
IlyamI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invm,

Владелец базы - SA

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
  alter proc test_link
  with execute as 'dbo'
  as

  begin
  select * from [remote server].[remote db].[dbo].[LOGS]
	
  end

  exec test_link


вызов процедуры заканчивается ошибкой.

Если закомментировать "with execute as 'dbo'", то из-под моей учетки работает.
...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39838045
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IlyamI,

Вам предстоит изрядный гемморой.
Процедуры активации работают в контексте execute as user выражения, в связи с этим моментом вы заперты в песочнице, а поскольку к линкованным серверам доступ имеют логины а не пользователи, вам необходимо олицетворение контекста логина который будет сопоставляться с удаленным логином (аля прокси)

в ближайшем рассмотрении это должно выглядеть как то так:
Код: sql
1.
2.
3.
4.
create login proxy_for_remotesrv with password = 'strong_password';
deny connect to proxy_for_remotesrv;
go
sp_addlinkedsrvlogin N'remote server', N'false', N'proxy_for_remotesrv', N'remote_login', N'remote_login_password';



после чего в процедуре активации вам необходимо будет применить олицетворение логина
Код: sql
1.
2.
3.
execute as login = 'proxy_for_remotesrv';
select * from [remote server].[db].[dbo].[table];
revert;



trustworthy можно не включать если озаботитесь безопасностью и подпишите процедуру сертификатом с нужными правами
...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39838048
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IlyamI,

Вы делаете что-то не то или не там.
Изучайте
Код: 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.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
use master;
create login TestLogin with password = '', check_policy = off;
exec sys.sp_addlinkedserver @server = N'loopback', @srvproduct = N'', @provider = N'SQLNCLI', @datasrc = @@servername;
exec sys.sp_serveroption @server = N'loopback', @optname = N'data access', @optvalue = N'true';
exec sys.sp_addlinkedsrvlogin @rmtsrvname = N'loopback', @useself = N'false', @locallogin = null, @rmtuser = N'TestLogin', @rmtpassword = N'';
go

create database Test001;
alter authorization on database::Test001 to sa;
go

use Test001;
go

create procedure dbo.spTest
as
begin
 select top (1) system_user, * from loopback.master.dbo.spt_values;
end;
go

exec dbo.spTest;
go

alter procedure dbo.spTest
with execute as 'dbo'
as
begin
 select top (1) system_user, * from loopback.master.dbo.spt_values;
end;
go

exec dbo.spTest;
go

alter database Test001 set trustworthy on;
go

exec dbo.spTest;
go

use master;
exec sys.sp_dropserver @server = N'loopback', @droplogins = N'droplogins';
drop login TestLogin;
go

drop database Test001;
go

...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39838049
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой не про trustworthy я глупость сморозил мы ж из базы вылазим за логинами.
...
Рейтинг: 0 / 0
Service broker procedure. Access to the remote server is denied
    #39838305
IlyamI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем спасибо за помощь.

Сегодня все заработало, хотя я ничего не настраивал. Админы божаться, что тоже ничего не делали.

Вопрос закрыт. Все работает.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Service broker procedure. Access to the remote server is denied
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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