Перемещение логинов с одного экземпляра SQL Server на другой

вторник, 20 июля 2010, Novak Sergey

В SQL Server, да и в любой другой СУБД существует понятие пользователь базы данных – users, и логин сервера – logins. Логин служит точкой входа пользователя базы, он (логин) создается на уровне SQL Serevr, а пользователи на уровне базы данных.

При миграции базы (backup-restore) с одного сервера на другой переноситься все данные база – таблицы, вьюхи, процедуры, тригеры, пользователи…вообщем все.., НО как говориться “все да не все”. Нужно “правильно” создать логины на уровне сервера и привязать их к пользователям, только после этого пользователи могут подключаться к серверу. Долой теорию – перейдем к практике

--Выведем скриптом все логины сервера (включая логины Windows)

USE master

SELECT * FROM syslogins

SELECT loginname, sid, password FROM syslogins

--Выведем только sql логины на сервере

SELECT * FROM master.sys.sql_logins

SELECT name, sid, password_hash FROM master.sys.sql_logins

Что касается пользователей базы данных то их можно посмотреть скриптом

USE test

SELECT * FROM sysusers

SELECT name, sid FROM sysusers

Так вот при переносе базы нужно создать логины на сервере с таким же sid как и у пользователя, только в этом случае не нарушиться связка логин-пользователь. Это можно реализовать многими способами:

Первый способ предлагает сам Microsoft, он создает хранимую процедуру sp_help_revlogin, которая выводит скрипт по созданию всех логинов на сервере, и потом этот скрипт запускаем на новом екземпляре SQL Server где была развернута база.

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

Сначала мы создаем логины на уровне сервера

CREATE LOGIN [test] WITH PASSWORD=N'test', DEFAULT_DATABASE=[dbtest], DEFAULT_LANGUAGE=[us_english]

GO

а потом смотрим “зависших” (у которых sid пользователя отличается от sid логина) пользователей скриптом

USE dbtest

EXEC sp_change_users_login

@Action='REPORT'

GO

далее привязываем sid пользователя к sid логина скриптом

USE dbtest

EXEC sp_change_users_login

@Action='update_one'

, @UserNamePattern='test'

, @LoginName='test';

GO

После выполнения выше написанных сценариев все пользователи и логины будут корректно перенесены с одного экземпляра SQL Server на другой.

Компании из статьи


Microsoft Украина


Сайт:
http://www.microsoft.com/ukr/ua/

Microsoft Украина Украинское подразделение компании Microsoft.

Ищите нас в интернетах!

Комментарии

Свежие вакансии