смена логина в MS SQL Server 2008

Docman80

надо написать запрос (чтобы не ручками тыкать, а запускать скрипт) для смены логина юзера на сервере (Secirity-Logins) и поменять в свойствах User Mapping логины и схемы на каждой базе.
Профайлер при смене параметров в User Mapping выдает хренову тучу запросов. Самое полезное, что удалось выудить это
—меняет сам логин
ALTER LOGIN [Login] WITH NAME=[Login1]
—меняет логин на конкретной бд
use [DB]
ALTER USER [Login] WITH NAME=[Login1]
—меняет схему на конкретной бд
use [DB]
ALTER USER [Login] WITH DEFAULT_SCHEMA=[Login1]
но после этих манипуляций в приложении, связанным с этой бд, всё равно сообщается о том, что Такого пользователя нет на базе (то есть логин на сервере-то есть)
кто что знает?

hprt

а схему создаешь новую?

Docman80

а схему создаешь новую?
как раз подумала об этом =)
получается что да, схема новая (так как название схемы равно логину, которые уникальны в бд). Хотя на самом деле просто переименованная старая.
Видимо, тогда вопрос - как переименовать схему? Или вообще не переименовывать - старая сгодится...

hprt

для чего у вас идет разделение на схемы?

Docman80

ну вроде как схема определяет права.
А вот почему у нас на каждого пользователя своя схема - сказать не могу =)

hprt

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

Docman80

так в том-то и дело, что при переименовании схемы через интерфейс все хорошо. и так как логины не повторяются, то и схемы не будут.

hprt

эээ, как ты схему переименовываешь? При переименовании юзеров схема сама не меняется, вроде.
По поводу конфликтов использования я имел в виду следующий сценарий:
1. Есть юзер dummy со схемой dummy
2. Ты переименовываешь юзера в dummy1, оставляя старую схему
3. Создаешь юзера dummy

Docman80

да, я поняла, что ты имел ввиду. Такого быть не должно, но на все 100% не уверена, поэтому и хочу схему переименовать.
В интерфейсе через Security-Logins в свойствах логина User Mapping. Там меняется имя под которым логин заходит на каждую базу и соответствующая схема.

hprt

это абсолютно не то же самое! При этом создается новая схема, соответственно, все объекты и права остаются в старой схеме. Если в старой схеме был объект, и доступ к нему шел без указания схемы (собственно, для этого и есть дефолтная схема то код перестанет работать
Оставить комментарий
Имя или ник:
Комментарий: