Как изменить права нового логина?

AndrewR
Дата: 11.10.2000 03:20:16
Программно, естественно.
Создал новый логин с помощью stored procedure, а он бесправный совсем.
Как ему права назначить?
Подскажите кто знает, пожалуйста.
judge
Дата: 11.10.2000 16:53:12
Можно использовать системные хранимые процедуры:

sp_grantlogin
sp_grantdbaccess
sp_addrolemember
...


Best regards, Alex
AndrewR
Дата: 11.10.2000 18:26:13
Ну а как же их использовать?
Я с SQL совсем новый - у меня в VB хелпа нет по этим процедурам.
Ты можешь привести синтаксис?
SergSuper
Дата: 12.10.2000 06:45:31
Вообще-то надо смотреть хелп по SQL,а не по VB. Еще лучше купить книжку и почитать. Больно там много наворочено.

Вкратце:
Логин - это только возможность связаться с сервером. Чтобы иметь даступ к базе, этот логин должен сделать юзером базы(а есть еще понятие владелец базы...). И уже этому юзеру в базе даются права.

Что бы сделать юзера:
Adds a security account for a new user in the current database. This procedure is included for backward compatibility. Use sp_grantdbaccess.

Syntax
sp_adduser [@loginame =] 'login'
[,[@name_in_db =] 'user']
[,[@grpname =] 'group']

Arguments
[@loginame =] 'login'
Is the name of the user’s login. login is sysname, with no default. login must be an existing Microsoft® SQL Server™ login or Microsoft Windows NT® user.
[@name_in_db =] 'user'
Is the name for the new user. user is sysname, with a default of NULL. If user is not specified, the name of the user defaults to the login name. Specifying user gives the new user a name in the database different from the login ID on SQL Server.
[@grpname =] 'group'
Is the group or role that the new user automatically becomes a member of. group is sysname, with a default of NULL. group must be a valid group or role in the current database. Microsoft SQL Server version 7.0 uses roles instead of groups.

Дать права юзеру
Creates an entry in the security system that allows a user in the current database to work with data in the current database or execute specific Transact-SQL statements.

Syntax
Statement permissions:

GRANT {ALL | statement[,...n]}
TO security_account[,...n]

Object permissions:

GRANT
{ALL [PRIVILEGES] | permission[,...n]}
{
[(column[,...n])] ON {table | view}
| ON {table | view}[(column[,...n])]
| ON {stored_procedure | extended_procedure}
}
TO security_account[,...n]
[WITH GRANT OPTION]
[AS {group | role}]

Тут описание уж совсем длинное, приведу только пример.
GRANT SELECT

ON authors

TO public

GO



GRANT INSERT, UPDATE, DELETE

ON authors

TO Mary, John, Tom

GO


PS. Тут вроде квадратные скобки воспринимаются как тэги, так что если что выглядит не так - я не виноват.
AndrewR
Дата: 12.10.2000 15:15:44
Спасибо, но это немного не то, как мне кажется.
Вот как я это вижу (поправь меня если я не прав):
когда заказчик проинсталлирует мое приложение на свой компьютер мне нужно спросить у него пароль для подключения к SQL серверу с 'sa' логином. Подключившись, я должен создать свой логин, который будет использоваться моим приложением для последующих подключений к серверу. Затем я должен присоединить к серверу мою базу данных в виде .mdf файла (sp_attachdb) и потом создать юзера, одноименного с моим логином, чтобы использовать эту базу.

Проблема в том, что созданный новый логин не имеет прав, чтобы создавать новые базы данных, а использовать 'sa' я могу только один раз, а базы присоединять придется и в будущем, не только в этот раз. Дать моему логину эти права у меня и не получается.

Пробовал GRANT ALL TO MyLogin - ничего не происходит. Другие sp_ тоже не действуют или я их не так использую.

Не знаешь как решить эту проблему? Уже месяц на ней сижу.
SergSuper
Дата: 13.10.2000 05:49:57
В 6.5 такая проблемма в принципе не рашается.
В 7.0 это сделать можно, но как я не знаю. Чего-то там связано с ролями и про них и надо читать.

И кстати права даются не логину, а юзеру базы.