Користувачі не можуть переглядати таблиці в схемі за замовчуванням у SSMS


10

У мене виникає проблема встановлення VIEW DEFINITIONдозволу належним чином на рівні схеми для одного з моїх користувачів. Я створив схему TestSchemaі додав кілька таблиць. Користувач в даний час має право встановлювати для доступу і зміна таблиці ( SELECT, UPDATE, DELETE, і т.д.) через dbo_datareaderі dbo_datawriterролі. Однак вони не можуть побачити жодну з таблиць у засобі провідника SSMS.

Я намагався надати дозволи для перегляду визначень:

grant view definition on SCHEMA :: [TestSchema] to [User]

Це не спрацювало. Я спробував встановити дозвіл на рівні таблиці:

grant view definition on [TestSchema].[NewTable] to [User]

Це також не спрацювало. Тоді я спробував лише ковдру:

grant view definition to [User]

І це спрацювало; тепер вони можуть бачити TestSchema, а також інші схеми, до яких вони не повинні мати доступу.

Моя мета тут - дозволити користувачеві переглядати всі таблиці в межах заданої схеми. Як я це досягну? Якщо я повинен бути в змозі зробити це за замовчуванням, які дозволи я повинен шукати на те, щоб знайти , чому я не можу?


У моєму екземплярі 2008R2, коли я надаю db_datareader або db_datawriter, вони можуть бачити всі схеми. Я розумію, що це не те, що ви шукаєте, але це означає, що існує значна різниця між вашою установкою та моєю, тому я не можу це перевірити. Чи версія, що відрізняється, чи змінили якусь безпеку?
cfradenburg

@cfradenburg - важко сказати; це сервер, керований ІТ, тому я не впевнений, що вони зробили, і я новачок на SQL Server, тому я не знаю, що шукати. Я думаю, що частина мого питання полягає в тому, які інші дозволи / ролі / ??? я повинен шукати, щоб визначити, чи можна це просто виправити за допомогою дозволів?
ейканал

Чи може користувач запитувати таблиці? Якщо вони можуть запитувати, то це може бути просто проблемою в SSMS.
користувач9164

@ user9164 Так, користувачі можуть запитувати таблиці; це лише питання перегляду їх у SSMS.
ейканал

Відповіді:


11

Коротка відповідь: Чи не слід використовувати db_datareaderабо db_datawriterчи їх еквіваленти заперечують. Вони призначені лише для зворотної сумісності. Використання їх спричинить такі проблеми, як та, з якою ви стикаєтесь.

Якщо ви хочете надати дозволу Alice SELECT, INSERT, UPDATE та DELETE для всіх об'єктів, що оцінюються за таблицею в схемі Продаж, то скористайтеся наступним.

GRANT SELECT, INSERT, UPDATE, DELETE ON SCHEMA::Sales TO Alice ;

Якщо ви хочете надати дозволу Alice SELECT, INSERT, UPDATE та DELETE для всіх об'єктів, що оцінюються за таблицею, у всіх схемах, то скористайтеся наступним.

GRANT SELECT, INSERT, UPDATE, DELETE TO Alice ;

Тоді видимість метаданих працюватиме правильно.


Чи є у вас джерело біта "зворотної сумісності"? Я розумію, що схеми застарілі, але нічого не можу знайти про ролі.
Штійн

0

Погляньте на інші дозволи директора, там десь може бути заперечення, що спричиняє проблему. Пам'ятайте, що відмова завжди застосовуватиметься вгорі грантів. І як це не ваш сервер, там може бути щось в обліковому записі, який створила відділ ІТ.

Використовуйте щось подібне для рівня сервера:

    use master
    go
    SELECT a.*,b.name as 'Login ID' FROM sys.server_permissions as A inner join 
    sys.server_principals as B on a.grantee_principal_id = b.principal_id
    where b.name = 'login ID of the account'
    GO

І таке подібне на рівні бази даних

SELECT a.*,b.name as 'Login ID' FROM sys.database_permissions as A 
inner join sys.server_principals as B on a.grantee_principal_id = b.principal_id
where b.name = 'test'
GO

Дякую за коментар, я спробую це, коли повернусь до роботи в понеділок.
ейканал

0

Це сталося зі мною, коли я модернізував наш SQL Server з 2008R2 до 2014 року. Db_datareader або db_datawriter або їх еквіваленти deny чудово працюють у 2008R2, але вони не працюють у 2014 році.

Приклад надання дозволу в SQL Server 2014

Якщо ви хочете надати користувачеві Alice дозволу SELECT, INSERT, UPDATE та DELETE для всіх об'єктів, що оцінюються за таблицею в схемі Продаж, тоді використовуйте наступне.

ВИБІРТЕ ВИБІР, ВСТАВИТИ, ОНОВЛЮВАТИ, ВИДАЛИТИ НА СХЕМІ :: Продажі Алісі; Якщо ви хочете надати дозволу Alice SELECT, INSERT, UPDATE та DELETE для всіх об'єктів, що оцінюються за таблицею, у всіх схемах, то скористайтеся наступним.

ВИБІРТЕ ВИБІР, ВСТАВИТИ, ОНОВЛЮВАТИ, ВИДАЛИТИ Алісу; Тоді видимість метаданих працюватиме правильно.

Довідник [Greenstone Walker].


1
Sundeep, будь ласка, спробуйте пояснити відповідь, а не просто надавати посилання. Якщо вам потрібна допомога, ознайомтеся з туром
LowlyDBA
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.