powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимая процедура не видит прилинкованный сервер
12 сообщений из 12, страница 1 из 1
Хранимая процедура не видит прилинкованный сервер
    #39797650
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, коллеги.
Подскажите плиз, кто знает...
Пытаюсь сделать, чтобы из хранимой процедуры можно было работать с прилинкованным сервером НЕ под правами администратора.
В идеале ещё чтобы напрямую к таблицам линкованного сервера обратиться было нельзя (также, как и с обычными таблицами), а только через хранимку.
Давно копаюсь, на данном этапе дилемма такая... если ставлю учётке права сисадмина и убираю с прилинкованного сервера олицетворение для учётки, то таблицы сервера все видны, можно читать, удалять... чего хочешь... но это не нужно
А если убираю права сисадмина, то получается следующее:

Код: sql
1.
select * from [inform]...[Дилеры]


ответ сервера :
Доступ к удаленному серверу запрещен из-за отсутствия сопоставления с именем входа.

добавляю олицетворение для учётки, после чего:
Код: sql
1.
select * from [inform]...[Дилеры]

ответ сервера :
----------------------------------------
Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "inform" вернул сообщение "Не удается запустить приложение. Системная база данных отсутствует или открыта с монопольным доступом другим пользователем.".
Сообщение 7399, уровень 16, состояние 1, строка 1
Поставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "inform" сообщил об ошибке. Ошибка проверки подлинности.
Сообщение 7303, уровень 16, состояние 1, строка 1
Не удалось проинициализировать объект источника данных поставщика OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "inform".
----------------------------------------

Не на прилинкованном сервере для этой гостевой учётной записи хранимые процедуры видны и запускаются. Таблицы не видны, но работать с ними можно из хранимой процедуры.

Собственно вопрос: можно ли сделать так, чтобы таблицы прилинкованного сервера с гостевой учётки если даже и были бы видны, то нельзя было их прочитать, но чтобы можно было с ними работать из хранимых процедур на основном сервере.
Прилинкованный сервер - это акцессовский файл mdb.

И как побороть эту авторизацию, которая не даёт прочитать таблицы?
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39797657
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитайте про EXECUTE AS
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39797671
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DeffПочитайте про EXECUTE AS спасибо... копаю в этом направлении...
а есть пример как выполнить запрос в гостевой сессии от имени пользователя с бОльшими правами?
И ещё... даже если я это и смогу, то кроме 'sa' никто больше не видит таблиц прилинкованного сервера. Другому пользователю я не знаю, как это разрешить... (ну кроме как дать сисадминские права...)
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39797676
Фотография Критик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
melihron,

По ссылке все есть
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39797677
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
melihronDeffПочитайте про EXECUTE AS спасибо... копаю в этом направлении...
а есть пример как выполнить запрос в гостевой сессии от имени пользователя с бОльшими правами?
И ещё... даже если я это и смогу, то кроме 'sa' никто больше не видит таблиц прилинкованного сервера. Другому пользователю я не знаю, как это разрешить... (ну кроме как дать сисадминские права...)Есть еще один EXECUTE AS - переключения контекста.

Но вы сказали что с помощью процедуры. Просто создать процедуру от пользователя с большИми правами, и пользоваться ей. Т.е. процедуру может выполнить тот, кому дали права на ее запуск. А у самой процедуры будет sa доступ.

А если в процедуре динамик sql, то пользоваться второй подсказкой.
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39797679
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если в процедуре пишу запускать от 'sa', то выдаёт следующее :
Код: sql
1.
2.
3.
4.
5.
ALTER PROCEDURE [dbo].[get_dealer_property]
(...)
with execute as 'sa'
AS
BEGIN

Сообщение 15151, уровень 16, состояние 1, процедура get_dealer_property, строка 70
Невозможно выполнить как пользователь "sa", так как он не существует или отсутствуют разрешения.

Пользователю slon дал админские права, написал в процедуре, чтобы работала от него :
Код: sql
1.
2.
3.
4.
5.
ALTER PROCEDURE [dbo].[get_dealer_property]
(...)
with execute as 'slon'
AS
BEGIN


Код: sql
1.
exec get_dealer_property 

Сообщение 15274, уровень 16, состояние 1, процедура get_dealer_property, строка 38
Доступ к удаленному серверу запрещен, поскольку текущий контекст безопасности не является доверенным.

в первом случае slon не видит sa похоже...
а во втором видимо надо ещё что-то прописывать...
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39797687
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создать процедуру из под sa, и написать as owner. Вроде так.
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39797688
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
ALTER PROCEDURE [dbo].[get_dealer_property]
(...)
with execute as owner
AS
BEGIN


Код: sql
1.
exec get_dealer_property 


Сообщение 15517, уровень 16, состояние 1, процедура get_dealer_property, строка 0
Невозможно выполнить в качестве участника базы данных, поскольку участник "dbo" не существует, этот тип участника не может проходить олицетворение, или отсутствует разрешение.
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39797690
flexgen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
melihronПоставщик OLE DB "Microsoft.ACE.OLEDB.12.0" для связанного сервера "inform"

А удаленный сервер не на excel файл ссылается? Если да - а существует ли файл? И не открыт ли он кем-то?
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39797692
Фотография Deff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
melihron
Код: sql
1.
2.
3.
4.
5.
ALTER PROCEDURE [dbo].[get_dealer_property]
(...)
with execute as owner
AS
BEGIN



Код: sql
1.
exec get_dealer_property 



Сообщение 15517, уровень 16, состояние 1, процедура get_dealer_property, строка 0
Невозможно выполнить в качестве участника базы данных, поскольку участник "dbo" не существует, этот тип участника не может проходить олицетворение, или отсутствует разрешение.
Другая ошибка совсем. У аксеса нет дбо наверное. Тут может проблема в другом.
Я думаю вместо точек надо правильно указать путь к таблице.
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39798081
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
настроил кажись... вся проблема у меня была в том, что не был установлен владелец базы, етить его... как пишут в других форумах - это может происходить из-за того, что БД была восстановлена из бакапа.

Deff был на правильном пути... Всем спасибо :)
...
Рейтинг: 0 / 0
Хранимая процедура не видит прилинкованный сервер
    #39798089
melihron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PS: ну и контекст безовасности надо было выставить
Код: sql
1.
alter database dbname set trustworthy on
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Хранимая процедура не видит прилинкованный сервер
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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