Пользователю предоставить роль с др. БД сервера

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Пользователю предоставить роль с др. БД сервера

Сообщение sergey-911 » 11.09.2007 (Вт) 8:13

Доброго времени суток уважаемые!
Создал клиент – серверное приложение. В качестве БД – MS SQL 2000. Приложение является многопользовательским, с разграничением прав на стороне сервера (проверяет допуска к хранимым процедурам и функциям). Для облегчения администрирования, я создал роли, которые содержат необходимые допуска для разных групп пользователей.
НО, приложение еще взаимодействует с одной БД на этом же сервере! Можно ли каким-либо образом ввести роль в моей БД, чтобы не прописывать во вторую БД всех пользователей? Если создать роль во второй БД, и прописать в нее всех нужных пользователей – то все работает. Можно ли это обойти? Неудобно пользователя прописывать в 2-х БД.
С уважением, Сергей.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 11.09.2007 (Вт) 9:16

По идее, если у пользователя есть право выполнения какой-либо хранимой процедуры на сервере этого должно хватить. Т.к. из этой ХП можно обращаться к любой БД и таблице на сервере:
Код: Выделить всё
SELECT * FROM database2..tablename
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 11.09.2007 (Вт) 13:20

Спасибо, конечно, VVitafresh, но я так и сделал в БД Deficit
Код: Выделить всё
CREATE VIEW dbo.vw_Job_69SQL
AS
SELECT     TOP 100 PERCENT ID_Job AS Код, CE AS Цех, KOI AS КОИ, Naimen AS Наименование, KolIzd AS [Кол-во изд], KZ AS [№ КЗ], Zak AS [№ Заказа],
                      DateBD AS [Ввод в БД]
FROM         [b]AMS[/b].dbo.Job
ORDER BY CE, Naimen, KOI, KZ, Zak, DateBD, ID_Job, KolIzd


НО, чтобы обратиться к этой вьюхе, нужно пользователя зарегистрировать в БД AMS, на том же сервере
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 11.09.2007 (Вт) 13:26

И еще попутно вопрос.
Как можно вывести список ролей в БД, пользователю, обладающими необходимыми правами?
EXEC sp_helprotect NULL, 'sa'

Не срабатывает...
С уважением, Сергей.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 11.09.2007 (Вт) 14:15

список ролей:
Код: Выделить всё
EXEC sp_helprole


список членов роли:
Код: Выделить всё
EXEC sp_helprolemember 'Sales'

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 11.09.2007 (Вт) 14:29

Спасибо Konst_One.
Я уж решил, что вопрос задал не в том топике и продублировал его в разделе БД

http://bbs.vbstreets.ru/viewtopic.php?t=34310
Приношу свои извинения модераторам. Если сочтёте нужным - удалите тему из раздела VB6, вот, только ответ Konst_One тоже пропадет... Вам виднее, поступайте, как знаете. Я извиняюсь!
С уважением, Сергей.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 11.09.2007 (Вт) 14:41

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

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 11.09.2007 (Вт) 15:27

sergey-911 писал(а):И еще попутно вопрос.
Как можно вывести список ролей в БД, пользователю, обладающими необходимыми правами?
EXEC sp_helprotect NULL, 'sa'

Не срабатывает...


На этот вопрос ответил Konst_One, более, чем достаточно. Спасибо огромное.
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 11.09.2007 (Вт) 15:30

VVitafresh писал(а):Так удали лучше ТАМ тему, она все равно пустая.

Я бы рад удалить, но Тёмыч закрыл тему.
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Re: Пользователю предоставить роль с др. БД сервера

Сообщение sergey-911 » 11.09.2007 (Вт) 15:36

sergey-911 писал(а):Доброго времени суток уважаемые!
Создал клиент – серверное приложение. В качестве БД – MS SQL 2000. Приложение является многопользовательским, с разграничением прав на стороне сервера (проверяет допуска к хранимым процедурам и функциям). Для облегчения администрирования, я создал роли, которые содержат необходимые допуска для разных групп пользователей.
НО, приложение еще взаимодействует с одной БД на этом же сервере! Можно ли каким-либо образом ввести роль в моей БД, чтобы не прописывать во вторую БД всех пользователей? Если создать роль во второй БД, и прописать в нее всех нужных пользователей – то все работает. Можно ли это обойти? Неудобно пользователя прописывать в 2-х БД.


А вот этот вопрос остаётся открытым!
С уважением, Сергей.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 11.09.2007 (Вт) 20:07

возможно поможет, хотя я не понял проблему , если честно

Код: Выделить всё
WITH GRANT OPTION

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 11.09.2007 (Вт) 21:58

Похоже, до меня дошло, что у тебя не получается.

Добавь во второй базе (с которой взаимодействует твое приоложение) роль, например, operator и дай доступ ко всем необходимым таблицам.
В Enterprise Manager'e выбери Scurity -> Logins, зайди в свойства пользователя -> Database Access и дай ему доступ к требумой базе, а в нижней части (там где Permit in Database Role) отметь птичкой созданную роль operator. И должно все нормально выбираться.

Как это сделать через системные таблицы/процедуры я не знаю, т.к. редко юзаю MS SQL Server

1000 сообщение
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 11.09.2007 (Вт) 23:37

VVitafresh писал(а):Похоже, до меня дошло, что у тебя не получается.

Добавь во второй базе (с которой взаимодействует твое приоложение) роль, например, operator и дай доступ ко всем необходимым таблицам.
В Enterprise Manager'e выбери Scurity -> Logins, зайди в свойства пользователя -> Database Access и дай ему доступ к требумой базе, а в нижней части (там где Permit in Database Role) отметь птичкой созданную роль operator. И должно все нормально выбираться.

Как это сделать через системные таблицы/процедуры я не знаю, т.к. редко юзаю MS SQL Server

1000 сообщение




Я, наверно, нечетко излагаю свои мысли.
Есть вьюха, которая берет данные из БД AMS. Приложение работает с БД Deficit, используя данные vw_Job_69SQL, для импорта данных из архива документов в программу с дефицитками.

Код: Выделить всё
CREATE VIEW dbo.vw_Job_69SQL
AS
SELECT     TOP 100 PERCENT ID_Job AS Код, CE AS Цех, KOI AS КОИ, Naimen AS Наименование, KolIzd AS [Кол-во изд], KZ AS [№ КЗ], Zak AS [№ Заказа],
                      DateBD AS [Ввод в БД]
FROM         AMS.dbo.Job
ORDER BY CE, Naimen, KOI, KZ, Zak, DateBD, ID_Job, KolIzd



sergey-911 писал(а):Доброго времени суток уважаемые!
Создал клиент – серверное приложение. В качестве БД – MS SQL 2000. Приложение является многопользовательским, с разграничением прав на стороне сервера (проверяет допуска к хранимым процедурам и функциям). Для облегчения администрирования, я создал роли, которые содержат необходимые допуска для разных групп пользователей.
НО, приложение еще взаимодействует с одной БД на этом же сервере! Можно ли каким-либо образом ввести роль в моей БД, чтобы не прописывать во вторую БД всех пользователей? Если создать роль во второй БД, и прописать в нее всех нужных пользователей – то все работает. Можно ли это обойти? Неудобно пользователя прописывать в 2-х БД.



VVitafresh, отсюда следует, что я так сделал. Просто не хочу еще кучу полбзователей прописывать в БД AMS, лишь для того, чтобы приложение с БД vw_Job_69SQL нормально работало, одна единственная процедура.

Непонятно, почемему, если есть процедура (вьюха), которая работает в 2-я БД, не позволяет прописывать пользователя в одном месте? А именно, в БД Deficit, где она и создана, собственно....
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 11.09.2007 (Вт) 23:44

Konst_One писал(а):возможно поможет, хотя я не понял проблему , если честно

Код: Выделить всё
WITH GRANT OPTION


А что в результате должно получитьтся?
дома MSDN не работает (не настроил, а уже поздно)....
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 11.09.2007 (Вт) 23:47

Всем спасибо за помощь!
С уважением, Сергей.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 12.09.2007 (Ср) 0:14

Я честно говоря не заметил, что при описанной мной операции пользователь автоматом добавляется в во вторую базу.
Тогда здаюсь :)

Пусть поможет кто-то более компетентный в этом вопросе. Возможно, кроме как присутствия юзеров в обеих базах никак и нельзя.
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 12.09.2007 (Ср) 11:23

у тебя базы расположены на одном сервере SQL?

Расставим точки над Ы 8)

1. Программа работает тоько с базой Deficit. Коннект происходит от под определенным логином пользователя SQL-сервера.
2. База AMS расположена на этом же сервере SQL
3. В базе Deficit создано представление , которое обращается к данным из таблицы базы AMS.
4. Созданна роль в базе Deficit туда добавлены права на доступ к объектам этой базы и включены все юзера текущей базы.

Так?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 12.09.2007 (Ср) 11:44

Если Логин к базе осуществляется по SQL-сервер аутентификацией, то тебе следует открыть закладку Security\Logins в EM, найти свой логин , перейти на закладку Database Access и поставить галочки на обе базы Deficit и AMS, сохранить изменения. Тогда добавиться автоматом юзер под этим именем логина в соответствующую базу. Дальше уже играйся с ролями для этого юзера, какие объекты нужны те и добавляй для него.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 12.09.2007 (Ср) 12:57

Спасибо Konst_One. Все точки над и ты правильно расставил. Вроде бы помогло

grant create view to role_arhiv

Уж не знаю, как? Читаю MSDN.
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 12.09.2007 (Ср) 13:22

Предоставление разрешения CREATE VIEW с параметром GRANT OPTION
В следующем примере пользователю CarmineEs предоставляется разрешение CREATE VIEW в базе данных AdventureWorks с правом предоставлять разрешение CREATE VIEW другим участникам.
Код: Выделить всё

USE AdventureWorks;
GRANT CREATE VIEW TO CarmineEs WITH GRANT OPTION;
GO

http://msdn2.microsoft.com/ru-ru/library/ms178569.aspx
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 13.09.2007 (Чт) 13:41

Konst_One писал(а):Если Логин к базе осуществляется по SQL-сервер аутентификацией, то тебе следует открыть закладку Security\Logins в EM, найти свой логин , перейти на закладку Database Access и поставить галочки на обе базы Deficit и AMS, сохранить изменения. Тогда добавиться автоматом юзер под этим именем логина в соответствующую базу. Дальше уже играйся с ролями для этого юзера, какие объекты нужны те и добавляй для него.

Если пользователя добавить в 2-е бд - то работает без проблем. А если я пропишу только себя - я могу работать с данными, а остальные - нет. Попробую линковку сделать. Дрю вариантов я не вижу, если только не плодить юзеров сразу в 2-х ДБ (КРАЙНИЙ ВАРИАНТ).
С уважением, Сергей.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 17.09.2007 (Пн) 23:05

Всем спасибо.
Пришлось прибегнуть к крайнему варианту. Прописал юзеров в 2-х БД. Приложение работает, но, на мой взгляд, подход неправильный...
С уважением, Сергей.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 17.09.2007 (Пн) 23:15

А сколько хоть юзеров у тебя в базе? (интереса ради)
Никакую проблему невозможно решить на том же уровне, на каком она возникла. Нужно стать выше этой проблемы, поднявшись на следующий уровень.

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 17.09.2007 (Пн) 23:19

В одной - около ста, в другой - пока в районе 20.
А что?
С уважением, Сергей.

VVitafresh
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1641
Зарегистрирован: 12.05.2005 (Чт) 14:44
Откуда: Херсон, UA

Сообщение VVitafresh » 17.09.2007 (Пн) 23:24

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

sergey-911
Постоялец
Постоялец
 
Сообщения: 545
Зарегистрирован: 17.01.2005 (Пн) 19:10

Сообщение sergey-911 » 17.09.2007 (Пн) 23:31

Да VVitafresh, согласен, все никак руки не дойдут. В отпуск собираюсь с понедельника. А еще столько сделать нужно...
P.S. Я хотел сделать так, что пользователь, у которого есть определенный привелегии, самостоятельно добавлял пользователей в БД и раздавал им определенные роли. Но есть нюансы, которые решать влом перед отпуском. Да и переходить я на 1С планирую. Начал изучать конфигурирование - очень интересный продукт...
С уважением, Сергей.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 18.09.2007 (Вт) 10:38

если 1С стал изучать, так там все лезут в базу через SA


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 84

    TopList