Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 SQL-логин и переименованная база  [new]
AndrF
Member

Откуда:
Сообщений: 2183
Есть база, ее переименовали. SQL-логины, которые были примаплены к этой базе, теперь показываются как непримапленные. Почему слетел маппинг и как вернуть его на место?

P.S
Само-собой что больше никто ничего не трогал - было только переименование базы.
23 апр 19, 12:20    [21869699]     Ответить | Цитировать Сообщить модератору
 Re: SQL-логин и переименованная база  [new]
AndrF
Member

Откуда:
Сообщений: 2183
По написанному выше соврал - база была из бэкапа другого сервера. Соответственно sid-ы SQL-логинов у нее не совпадают с текущей, хотя имена одинаковые...
23 апр 19, 12:28    [21869710]     Ответить | Цитировать Сообщить модератору
 Re: SQL-логин и переименованная база  [new]
AndrF
Member

Откуда:
Сообщений: 2183
Достаточно будет поменять sid-ы на нужные в злополучной базе?
23 апр 19, 12:33    [21869714]     Ответить | Цитировать Сообщить модератору
 Re: SQL-логин и переименованная база  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30801
AndrF
Достаточно будет поменять sid-ы на нужные в злополучной базе?
Для перемапливания есть специальная ХП - sp_change_users_login
Лучше ей, а то мало ли, что там ещё нужно...
23 апр 19, 12:51    [21869734]     Ответить | Цитировать Сообщить модератору
 Re: SQL-логин и переименованная база  [new]
msLex
Member

Откуда:
Сообщений: 7730
alexeyvg
AndrF
Достаточно будет поменять sid-ы на нужные в злополучной базе?
Для перемапливания есть специальная ХП - sp_change_users_login
Лучше ей, а то мало ли, что там ещё нужно...


MS рекомендует использовать ALTER USER userName WITH LOGIN = loginName вместо sp_change_users_login
23 апр 19, 12:54    [21869739]     Ответить | Цитировать Сообщить модератору
 Re: SQL-логин и переименованная база  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 30801
msLex
MS рекомендует использовать ALTER USER userName WITH LOGIN = loginName вместо sp_change_users_login
Да, вы правы, эту рекомендацию я всё время забываю, привык к этой процедуре...

Но в приниципе она пока рабочая, просто может внезапно исчезнуть.
23 апр 19, 12:56    [21869742]     Ответить | Цитировать Сообщить модератору
 Re: SQL-логин и переименованная база  [new]
AndrF
Member

Откуда:
Сообщений: 2183
Спасибо
23 апр 19, 13:05    [21869751]     Ответить | Цитировать Сообщить модератору
 Re: SQL-логин и переименованная база  [new]
AndrF
Member

Откуда:
Сообщений: 2183
Скриптик:

DECLARE @Sql	nvarchar(255),
		@uname	sysname

DECLARE cur CURSOR FOR 
				SELECT u.name
					FROM sys.sysusers u
						INNER JOIN master.sys.syslogins l
							ON u.name COLLATE Cyrillic_General_CI_AS = l.name
					WHERE l.isntname = 0
						AND	u.sid <> l.sid

OPEN cur
FETCH NEXT FROM cur INTO @uname
WHILE @@FETCH_STATUS = 0
BEGIN
	SET @Sql = 'ALTER USER [' + @uname + '] WITH LOGIN = [' + @uname + ']'

	PRINT @sql
--	Exec (@sql)

	FETCH NEXT FROM cur INTO @uname
END
CLOSE cur
DEALLOCATE cur
23 апр 19, 13:31    [21869779]     Ответить | Цитировать Сообщить модератору
 Re: SQL-логин и переименованная база  [new]
AndrF
Member

Откуда:
Сообщений: 2183
Да, COLLATE - это уже при необходимости. В моем случае потребовалась...
23 апр 19, 13:33    [21869781]     Ответить | Цитировать Сообщить модератору
 Re: SQL-логин и переименованная база  [new]
Сруль.
Member

Откуда:
Сообщений: 119
Сетевые логины этой болезнью не страдают.
Для "парольных логинов" есть комманда,
приводящая их баз-юзеров в чувство
use [база]
EXEC sp_change_users_login 'update_one','USER_NAME','USER_NAME'
go


Хотя, до этого лучше не доводить.
Первое действие, при переносе базы бэкапом-
это заскриптить юзеров базы с их ролями,
сохранить в файле, а после рестора выкосить всех юзеров
и прогнать сохранённый скрипт с юзерами.
Тогда, ничего не упустишь.
29 апр 19, 11:50    [21874115]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить