[mssql] авторизация из клиента

Alena_08_11

В общем так:
Есть mssql server, в котором одна из баз доступна пользователю dbuser;
Есть клиентское приложение, написанное мною, криво но работает. Как сделать так, чтобы клиентское приложение коннектилось на сервер всегда с этим пользователем и соответствующим ему паролем (независимо от того под каким пользователем запускаеццо прога в винде)?
Что бы я ни писал в ConnectionString свойстве обьекта SqlConnection, прога всегда пытаеццо соединиццо с сервером под именем пользователя, из под которого запускаеццо эта прога в винде, даже если оставить только datasource и initial catalog. Если win user - dbuser с тем же паролем что и на сервере - то всё работает, в других случаях - нет.
Что нада писать в ConnectionString, и мб что нада изменить в настройках sql сервера?

bastii

А что говорят Properties на твой SQL Server в Enterprise Manager на Security? Есть версия, что там Authentification стоит на Windows only.

Alena_08_11

да, говорят Windows Only ^ ^
нада поставить SQL Server and Windows ? ок ... ща попробую

bastii

Только вроде как это неправильный метод, и он остался из совместимости с предыдущими версиями. Правильный метод -- использовать application roles.

anton7805

да просто поставить sql аутентификацию , завести юзера с нужной ролью и коннектиться к базе под этим юзером

Alena_08_11

вот с этого места поподробнее
Мне нужно юзеру dbuser поставить галочку напротив dbcreator во вкладке server roles, и поставить галочки в нужных местах во вкладке Database Access
и затем в ConnectionString написать " user = dbuser; Pwd = dbuser's_password; datasource = dbserver; initial catalog = db"
и всё будет работать ?
(dbserver - имя тачки с mssql, db - нужная мне база данных)

anton7805

абсолютно точно,единственное что кроме того что ты укажешь роль dbcreator, определи и database -роли интересующих тебя БД

bastii

А какой смысл в sql аутентификации, ИМХО лучше настроить свой виндовый логин на нужного пользователся базы. Просто связь логинов и пользователей баз настраиваются как угодно.

Alena_08_11

хмм
что то у меня не до конца получаеццо ...
По ходу дела тип Authentication : Sql server and windows означает что должно проходить и то и то .... как поставить тип Аутентифиблякации (ну и словечко) Sql Server only ?
В свойствах сервера я такой галки не нашёл.

bastii

Вообще объясни толком, что тебе нужно: просто доступ к базе или в базе есть определенный пользователь с определенными правами, и нужно работать с базой через этого пользователя. Короче, sql аутентификация нужна только, если в SQL Server уже есть sql login, настроенный на нужных пользователей в нужных базах.

Unna

правильнее коннектиться ч\з Application Login
см. sp_addapplogin sp_setapp.. (вроде так)

Alena_08_11

мне нужен просто доступ к базе независимо от того под каким пользователем и на каком компе я эту прогу запускаю.

anton7805

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

Alena_08_11

Да я в общем то написал уже что не получаеццо :
Я поставил sql server authentication and windows autentication
Теперь соединение удаёццо только когда и виндовс пользователь может делать что то с данной базой, и в ConnectionString написаны правильные user и pwd (в данном случае вин юзер - такой, что такой же есть и на тачке с sql сервером, мало того из под этого юзера sqlserver и был установлен - то есть он по ходу может всё , в ConnectionString написан вышеупомянутый dbuser)
Так вот, мне нужно отрубить Windows authentication нах. То есть, по ходу дела, поставить на сервере Sql server authentication only ... так вот как и где это сделать ? :-) (в Enterprise Manager в свойствах сервера во вкладке Security такой радиокнопки нету :- там есть только Windows или Windows and Sql server)

bastii

Ты скорее всего, что-то путаешь. На сколько я понял dbuser у тебя в твое базе, но нужно сделать еще логин на сервере, который имеет доступ к базе как dbuser, и уже этот логин прописывать в connection string.

Alena_08_11

Короче
dbuser это login в sql сервере у него Server Roles : System Administrator, ну и с db roles - всё в порядке ( хотя нужны ли они ? если Server Roles: System Administrator то).

anton7805

отрубить аутентификацию винды в sql 2000 не получится, ибо нельзя. У тебя в свойствах dbuser'а что написано? он виндовый или sql -ный? надо чтоб он был sql-ный.Кроме того, надо чтоб виндовые юзеры имели права на те базы, в которых оперирует твоя аппликуха.Если занести их в группу sysadmins, то эти права будут-).А в свойствах коннекта надо указывать sql -ный логин, тогда пользователи будут иметь права этого dbuser'a

qsk78

По-моему, поставить тип аутентификации SQL Server Only поставить нигде нельзя.
Но можно, например, зарегистрировать в SQL Server виндовый логин и поставить ему в свойствах Security Access значение Deny Access.

Unna

на сервере:
1. sp_adduser 'user'
2. DENY ALL user
3. sp_addapprole 'role', 'password'
4. GRANT ALL 'role'
в приложении:
1. коннект через 'user'
2. запуск под user-ом:
EXEC sp_setapprole 'role', 'password'
Example
As an example of application role usage, a user Sue runs a sales application that requires SELECT, UPDATE, and INSERT permissions on the Products and Orders tables in database Sales to work, but she should not have any SELECT, INSERT, or UPDATE permissions when accessing the Products or Orders tables using SQL Query Analyzer or any other tool. To ensure this, create one user-database role that ies SELECT, INSERT, or UPDATE permissions on the Products and Orders tables, and add Sue as a member of that database role. Then create an application role in the Sales database with SELECT, INSERT, and UPDATE permissions on the Products and Orders tables. When the application runs, it provides the password to activate the application role by using sp_setapprole, and gains the permissions to access the Products and Orders tables. If Sue tries to log in to an instance of SQL Server using any tool except the application, she will not be able to access the Products or Orders tables.

Alena_08_11

Последний пост не совсем то что мне надо, но за инфу спасибо
...
Короче, как я понял, всех виндовых юзеров из под которых будет запускаццо app полюбому нада регистрировать на сервере.
Ну ладно, хуле :-)

Dasar

> Короче, как я понял, всех виндовых юзеров из под которых будет запускаццо app полюбому нада регистрировать на сервере.
так вовсе делать не обязательно
Заведи в базе нового пользователя, дай ему нужные права
и именно этого юзера используй в connect string.
Оставить комментарий
Имя или ник:
Комментарий: