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

Откуда: Левый берег
Сообщений: 352
Здравствуйте.

MS SQL SERVER 2017

Имеется файловая таблица
CREATE TABLE [dbo].[ft_Test] AS FILETABLE ON [PRIMARY] FILESTREAM_ON [FileTable]
WITH
(
FILETABLE_DIRECTORY = N'ft_Test', FILETABLE_COLLATE_FILENAME = Cyrillic_General_CI_AS
)


Уровень доступа в режиме транзакций = Full
Настройки FileStream на скрине.

имеется пользователь БД.
CREATE USER [test_login] FOR LOGIN [test_login] WITH DEFAULT_SCHEMA=[dbo]

имя входа = public

пользователь test_login состоит в роли
CREATE ROLE [rl_viewFileTable]

эта роль имеет защищаемый объект ХП с правом на выполнение
CREATE PROCEDURE [dbo].[viewFileTable]
AS
BEGIN
	SET NOCOUNT ON;

SELECT *
  FROM [test_1].[dbo].[ft_Test]

select Id = MAX([path_locator])
from [ft_Test]
where [path_locator].GetAncestor(1) = hierarchyid::GetRoot() 

INSERT INTO [dbo].[ft_Test]
           (
           [name]
           ,[is_directory]
           
          )
     VALUES
           ('тест1'
		   ,1)

  select USER_NAME()
END


В итоге эксперементальным путем закоменчиванием и раскоменчиванием установлено ))) селект выполняется а инструкция инсерт дает ошибку:
Запрещено разрешение "SELECT" на объект "ft_Test" базы данных "test_1", схемы "dbo".
Делаю акцент что именно инсерт дает ошибку.

Как в итоге из под ограниченного пользователя инструкцией инсерт делать вставку в файловую таблицу.

К сообщению приложен файл. Размер - 36Kb
28 июл 19, 20:11    [21936335]     Ответить | Цитировать Сообщить модератору
 Re: FileTable вставка записи  [new]
uaggster
Member

Откуда:
Сообщений: 724
CREATE PROCEDURE [dbo].[viewFileTable]
with execute as owner
AS
...

?
29 июл 19, 10:28    [21936624]     Ответить | Цитировать Сообщить модератору
 Re: FileTable вставка записи  [new]
Алексаша
Member

Откуда: Левый берег
Сообщений: 352
uaggster,

Так и сделал участок когда со вставкой вынес в отдельную процедуру. Просто непонятка в том, что селект работает, а для вставки необходимо разрешение на селект к таблице.
29 июл 19, 12:43    [21936752]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить