Отправляет email-рассылки с помощью сервиса Sendsay

Вопросы и ответы по MS SQL Server

  Все выпуски  

Вопросы и ответы по MS SQL Server


Информационный Канал Subscribe.Ru


Вопросы и ответы по MS SQL Server

Выпуск No. 28 от 2004-02-13

Слова

Снова хорошие новости.
Саша Сибилев любезно предоставил мне место на своем сервере SQL.RU.
http://sql.ru/users/sergcat/index.html
Пока адрес совершенно нечитабельный, но если у Александра и у меня будет время, то эта рассылка займет нужное ей место.
Заходите, смотрите.
Я постарался добавить уровень сложности для каждого вопроса. По моему замыслу, если начинающий пользователь MS SQL зашел на сайт, то ему стоит смотреть вопросы, начиная с уровня 1. Только сортировки пока нет. Не мастак я в web-программировании.

Спасибо всем, кто помогает мне делать эту рассылку словом или делом.
Вопрос : Я восстановил/скопировал базу данных на другой сервер и теперь никто не может войти в базу данных. Я пробовал создать пользователей, потому что они не показываются в списке, но когда я добавляю их, система говорит, что они уже существуют. Что за ерунда?

Ответ:
Ответ кроется в принципах безопасности сервера SQL Server. Вспомним, что в предыдущем вопросе объяснялось, что есть учетные записи сервера и регистрационные имена (логины) базы данных. Вот причина Вашей проблемы:
Когда сервер SQL Server создает учетные записи сервера и регистрационные имена базы данных, он сохраняет их "дружественные" имена (такие как ИмяДомена\Федор или Федор). Вместе с этим создается номер для учетной записи - в этом номере кроется вся проблема. Номер схеширован таким образом, чтобы быть уникальным на сервере и в базе данных.
SQL Server помещает эти номера в два места. Учетные записи сервера хранятся в базе данных master, которая принадлежит всему серверу, в то время как регистрационные имена базы данных хранятся прямо в этой базе данных. Проблема возникает, когда SQL Server проверяет соответствие учетной записи сервера к регистрационной записи базы данных. Это происходит с помощью сравнения номеров в базе данных master и номеров в самой базе данных. Если они не совпадают, то сервер запрещает доступ пользователя в базу данных.
Сервер SQL Server использует эти ключевые номера для отображения учетных записей базы данных в утилитах администрирования. Когда Вы используете Enterprise Manager, он не показывает учетные записи пользователей, которые существовали на другом сервере, потому что номера с предыдущего сервера не совпадают с произвольно сгенерированными номерами в базе данных master на этом сервере. А так как Вы не видите учетных записей, Вы щелкаете правой клавишей мыши и пытаетесь создать их по новой. Но, тем не менее, они на самом деле существуют в этой базе данных (только номер неправильный) и сервер сообщает, "This user already exists." ("Этот пользователь уже существует"). И теперь Вы совсем запутались.
Как же это исправить? На самом деле это не сложно. Microsoft дает Вам хранимую процедуру, чтобы помочь решить эту проблему.
Первым делом, создайте учетные записи сервера с теми же самыми именами, что и на предыдущем сервере. Затем запустите Query Analyzer и выберите восстановленную базу данных. Для каждого пользователя напишите и запустите клавишей F5 следующий код:
sp_change_users_login 'update_one', 'ИмяПользователя', ' ИмяПользователя'


Первое имя пользователя - учетная запись сервера, а второе имя пользователя - регистрационное имя базы данных. Обычно они похожи. При выполнении команды имена пользователей в базе master и текущей базе данных сравниваются и связываются вместе.
Надеюсь, Вы нашли эту информацию полезной. Вопросы, предложения и пожелания шлите на адрес sql@softmatics.ru
С уважением, Сергей Кошкин, ведущий специалист ООО "Софтоматика"
Список всех вопросов и ответов по MS SQL Вы найдете на сайте Рассылки http://sql.softmatics.ru/ или http://sql.ru/users/sergcat/index.html
SM Plasma LITE - программа для автоматизации склада, бухгалтерии, торговли. Анализ, прогноз, CRM и многое другое по цене $0.00!
Рейтинг@Mail.ru

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное