Published on

December 27, 2000

Перенос SQL-логинов в SQL Server

При перемещении баз данных с одного сервера на другой в SQL Server одной из проблем, с которой вы можете столкнуться, является перенос SQL-логинов. Это может быть важным шагом, чтобы убедиться, что все пользователи могут получить доступ к базам данных на новом сервере без проблем.

В SQL Server 7 есть хранимая процедура с именем sp_addlogin, которая может использоваться для переноса логинов. Она имеет необязательный флаг с именем @encryptopt, который может быть установлен либо на “skip_encryption”, либо на “skip_encryption_old”. В документации указано, что “skip_encryption” следует использовать, если пароль уже был зашифрован, в то время как “skip_encryption_old” предназначен для паролей, зашифрованных с использованием более старой версии.

Исходя из этой информации, вы можете подумать, что использование sp_addlogin с @encryptopt = skip_encryption будет достаточно для переноса логинов. Однако, при тестировании приложений после переноса вы можете столкнуться с проблемой. Некоторые приложения могут работать нормально, в то время как другие могут не работать из-за проблем с логином.

Корневая причина этой проблемы заключается в таблице sysxlogins, которая содержит столбец с именем xstatus. Этот столбец указывает, как был зашифрован пароль. В SQL Server 6.5 значение xstatus устанавливается равным 2050, в то время как в SQL Server 7 и SQL Server 2000 оно устанавливается равным 2.

Во время процесса входа в систему SQL Server шифрует предоставленный пароль с использованием метода шифрования текущей версии сервера. Затем он сравнивает этот зашифрованный пароль с тем, который хранится в sysxlogins и который может быть зашифрован с использованием другой версии. Это несоответствие методов шифрования может привести к ошибкам входа в систему.

Для решения этой проблемы Microsoft предоставила скрипт для перемещения логинов, который учитывает различные значения xstatus. Этот скрипт можно найти в статье базы знаний службы поддержки Microsoft Q246133.

Если вы планируете перемещать логины в SQL Server, настоятельно рекомендуется прочитать статью “Перемещение логинов в SQL Server”. Она предоставляет дополнительные сведения и лучшие практики для успешного переноса логинов.

Понимая тонкости переноса SQL-логинов и принимая необходимые меры предосторожности, вы можете обеспечить плавный переход при перемещении баз данных между серверами в SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.