Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: SQL Server GetRolesForUser Добавлено: 13.11.08 11:38  

Автор вопроса:  ДенисЧ
Добрые люди, подскажите есть ли простой способ посмотреть какими правами обладает конкретный пользователь БД SQL Servera. Типа глянуть в таблицу sysusers и бинарное значение из колонки roles (думаю шо это там какой-то массивчик лежит) в строке с именем пользователя преобразовать как-то в набор прав предоставленных пользователю. Глядел, глядел в MSDNe - ни хрена не понял. Там больше про Web.Security, да и вообще сложно разобраться если ни хрена не понимаешь.
Хочется по проще - говоришь user= Vania, получаешь список: db_public, db_datareader.
Если есть конкретный примерчик - киньте пж.

Ответить

  Ответы Всего ответов: 5  

Номер ответа: 1
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #1 Добавлено: 13.11.08 12:51
Для получения списка серверных ролей:

  1. declare @UserName nvarchar(200)
  2. Set @UserName='sa'
  3.  
  4. SELECT r.name FROM sys.server_principals u
  5.               INNER JOIN sys.server_role_members ur ON u.principal_id=ur.member_principal_id
  6.               INNER JOIN sys.server_principals r ON ur.role_principal_id = r.principal_id
  7.               WHERE u.name=@UserName

Ответить

Номер ответа: 2
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #2 Добавлено: 13.11.08 14:32
Это для получения ролей в базе данных.
Вызывать нужно, выполнив подключение к соответствующей базе данных

  1. declare @UserName nvarchar(200)
  2. Set @UserName='hel'
  3.  
  4. select r.name from sys.server_principals u
  5.               INNER JOIN sys.database_principals du ON u.[sid]=du.[sid]
  6.               INNER JOIN sys.database_role_members ur ON ur.member_principal_id = du.principal_id
  7.               INNER JOIN sys.database_principals r ON ur.role_principal_id = r.principal_id
  8. WHERE u.name=@UserName

Ответить

Номер ответа: 3
Автор ответа:
 ДенисЧ



Вопросов: 25
Ответов: 32
 Профиль | | #3 Добавлено: 15.11.08 10:10
Steel Brand, спасибо за участие, но это кажись не на NETe написано (а когда ни хрена не понимаешь, то сложно разобраться чё подправить шоб зараболало - например Set пишет шо больше не поддерживается)- может надо через параметр это делать?
Умные люди, может у кого есть работающий на NETe пример?

Ответить

Номер ответа: 4
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #4 Добавлено: 15.11.08 11:38
Steel Brand, что же ты ерунду подсовываешь? Человек просил пример на NET, а ты ему что подсунул? Фигню какую то в виде хранимой процедуры для SQL сервера! А код доступа к БД, получение данных и заполнение коллекции я что ли вместо тебя писать должен? Ему нужен работающий на NETe пример!!

Ответить

Номер ответа: 5
Автор ответа:
 ДенисЧ



Вопросов: 25
Ответов: 32
 Профиль | | #5 Добавлено: 15.11.08 13:35
EROS спасибо за понимание. К базе я цепляюсь - всё в порядке, Connection открывается, а вот где чё запросить... Пробовал как писал выше посмотреть шо выдаст из колонки roles - получил массив чё с ним делать х.з. Спросил у наших програмистов (пишут на Delphi) ни чего вразумительного не ответили. сказали шо делают отдельные таблицы с пользователями и их правами, но мне кажется всё должно быть проще.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам