Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 osql, grant select to role ругается cannot find user  [new]
White Owl
Member

Откуда:
Сообщений: 12772
MSSQL 2014
Есть база mydb и в ней объявлена роль myrole.
Делаю скрипт:
use mydb
go
create view myview as ...
go
grant select on myview to myrole
go

Запускаю этот скрипт через osql, как юзер с правами dbo. Получаю ругань:
Cannot find the user 'myrole', because it does not exist or you do not have permission.

После этого, через MSSQL Management Studio смотрю на список разрешений этого view и вижу там что разрешение таки успешно выдано.
Делаю ту-же grant команду в Студии - никакой ругани.

Что я делаю не так?
9 авг 16, 20:28    [19521994]     Ответить | Цитировать Сообщить модератору
 Re: osql, grant select to role ругается cannot find user  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Подключаетесь не к тому серверу/базе через osql. И вообще, какой такой osql и MSSQL 2014? O_o
9 авг 16, 20:33    [19522010]     Ответить | Цитировать Сообщить модератору
 Re: osql, grant select to role ругается cannot find user  [new]
White Owl
Member

Откуда:
Сообщений: 12772
Гавриленко Сергей Алексеевич
Подключаетесь не к тому серверу/базе через osql.
Если бы не к тому, то я бы и view в Студии не увидел бы...

Кстати, аналогичный скрипт, но на хранимую процедуру (grant execute on mysp to myrole) выполняется без проблем.
9 авг 16, 21:16    [19522203]     Ответить | Цитировать Сообщить модератору
 Re: osql, grant select to role ругается cannot find user  [new]
o-o
Guest
может, в скрипте в myrole вместо игрека кириллическое "у" или "е"?
тогда роль он не нашел, все ок.
а права кто-то еще выдал в помежутке между запуском osql и студии.

еще может быть диверсия типа ddl-триггера.
в нем проверяется приложение, если это osql, дропается роль (с проверкой существования, чтобы ошибку не получить)
а если же любое другое приложение, то роль создается, если ее нет.
это такой способ отучить от osql, а заодно поиздеваться.
+
когда смещали начальницу, по идее нас тоже должны были выпнуть,
вот тогда мне пришла в голову примерно такая же идея (за все хорошее):
в ddl-триггере на любое действие дропать рандомную табличку или хотя бы транкейтить.
интересно даже было бы засечь, через какое время хватились бы.
тем более, что слов таких не знают, ddl-триггер
9 авг 16, 23:57    [19522755]     Ответить | Цитировать Сообщить модератору
 Re: osql, grant select to role ругается cannot find user  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
А почему схему не указываете? Сервер будет брать схему пользователя по дефолту. Всегда явно пишите схемы.
10 авг 16, 12:34    [19524259]     Ответить | Цитировать Сообщить модератору
 Re: osql, grant select to role ругается cannot find user  [new]
o-o
Guest
Владислав Колосов
А почему схему не указываете? Сервер будет брать схему пользователя по дефолту. Всегда явно пишите схемы.

он же юзера не нашел, а юзеру схема не положена, он на уровне базы.
---
раз не нашел, то потому, что его не было в тот момент.
ну значит
или не было и нет(вариант Гавриленко: не та база/не тот сервер)
или был да сплыл (диверсия с удалением)
или имя неправильное. как вариант, кириллица вместо латиницы
10 авг 16, 12:58    [19524440]     Ответить | Цитировать Сообщить модератору
 Re: osql, grant select to role ругается cannot find user  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8805
o-o,

да, дело не в схеме, указание на недостаток скрипта :) Потом сюрпризы появляются.
10 авг 16, 13:09    [19524515]     Ответить | Цитировать Сообщить модератору
 Re: osql, grant select to role ругается cannot find user  [new]
White Owl
Member

Откуда:
Сообщений: 12772
мдя.... Это действительно была не та база данных.

Внимательность это хорошо, а невнимательность - источник магических багов :)
10 авг 16, 17:42    [19526066]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить