смена логина в MS SQL Server 2008
а схему создаешь новую?
а схему создаешь новую?как раз подумала об этом =)
получается что да, схема новая (так как название схемы равно логину, которые уникальны в бд). Хотя на самом деле просто переименованная старая.
Видимо, тогда вопрос - как переименовать схему? Или вообще не переименовывать - старая сгодится...
для чего у вас идет разделение на схемы?
А вот почему у нас на каждого пользователя своя схема - сказать не могу =)
Права определяются все-таки ролями и простыми грантами, просто можно группировать, скажем, таблицы, в схему, и разрешать запросы к схеме, чтоб по отдельности не мучаться.
так в том-то и дело, что при переименовании схемы через интерфейс все хорошо. и так как логины не повторяются, то и схемы не будут.
По поводу конфликтов использования я имел в виду следующий сценарий:
1. Есть юзер dummy со схемой dummy
2. Ты переименовываешь юзера в dummy1, оставляя старую схему
3. Создаешь юзера dummy
В интерфейсе через Security-Logins в свойствах логина User Mapping. Там меняется имя под которым логин заходит на каждую базу и соответствующая схема.
это абсолютно не то же самое! При этом создается новая схема, соответственно, все объекты и права остаются в старой схеме. Если в старой схеме был объект, и доступ к нему шел без указания схемы (собственно, для этого и есть дефолтная схема то код перестанет работать
Оставить комментарий
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]
но после этих манипуляций в приложении, связанным с этой бд, всё равно сообщается о том, что Такого пользователя нет на базе (то есть логин на сервере-то есть)
кто что знает?