В момента сте офлайн в очакване на повторно свързване с интернет

Как да прехвърля събиране на данни за вход и назначена програма за кражба на пароли между екземпляри на SQL Server

ВАЖНО: Тази статия е преведена с използване на софтуер за машинен превод на Microsoft и може да бъде коригирана чрез технологията Рамка за превод от общността (CTF). Microsoft предлага статии, преведени машинно, допълнително редактирани от общността, и статии, преведени от хора, за да може да предостави достъп на много езици до всички статии в нашата База знания. Статиите, преведени машинно и редактирани допълнително, може да съдържат грешки в лексиката, синтаксиса и/или граматиката. Microsoft не носи отговорност за каквито и да било неточности, грешки или вреди, предизвикани от неправилен превод на съдържанието или използването му от нашите клиенти. Повече за CTF – на http://support.microsoft.com/gp/machine-translation-corrections/bg.

Щракнете тук, за да видите версия на тази статия на английски: 918992
ВЪВЕДЕНИЕ
Тази статия описва как да прехвърля вход и назначена програма за кражба на пароли между екземпляри на Microsoft SQL Server 2005, на Microsoft SQL Server 2008, както и на Microsoft SQL Server 2012 на различни сървъри.

За Още действия информация как да пренасяте вход и назначена програма за кражба на пароли между екземпляри на други версии на SQL Server щракнете върху следния номер на статия в база знания на Microsoft:
246133 Как да прехвърля събиране на данни за вход и назначена програма за кражба на пароли между екземпляри на SQL Server
Допълнителна информация
В тази статия сървър А и Б сървър са различни сървъри. Освен това сървър А и Б сървър се изпълнява SQL Server 2005.

Бележка Тази информация се отнася за SQL Server 2008 и SQL Server 2012.

След преместване на транзитна база събиране на данни събиране на данни Препоръчано от непълно копиране на SQL Server на сървъра A екземпляр на SQL Server на сървъра Б, потребителите могат да бъдат не може да влезете в базата събиране на данни на сървъра б. Освен това, потребителите могат да получат следното съобщение за грешка:
Вход е неуспешна за потребител "MyUser'. (Microsoft SQL Server, грешка: 18456)
Този проблем възниква, защото вие не е прехвърляне вход и назначена програма за кражба на пароли Препоръчано от непълно копиране на SQL Server на сървъра A екземпляр на SQL Server на сървъра б.

За да прехвърлите събиране на данни за вход, използвайте един Препоръчано от следните методи, най-подходящия за вашата ситуация.

Метод 1: Влезте чрез предварително-SQL Server 2000 парола

За да разрешите този проблем, поискайте Препоръчано от потребителя да влезете в сървъра, на който работи SQL Server с помощта на предварително-SQL Server 2000 login.

Бележка Парола hashing се актуализира автоматично, когато потребител влезе с помощта на предварително-SQL Server 2000 парола.

Метод 2: Нулиране на паролата в SQL Server

За да разрешите този проблем, нулиране на паролата в SQL Server и след това скрипт посочени вход.

Бележка Парола hashing алгоритъм се използва, когато възстановите паролата.

Метод 3: Създаване на регистър на скрипт, който има празна парола

За да създадете регистрационен файл в скрипт, който има празна парола, изпълнете следните стъпки:
  1. На сървъра A стартирате SQL Server Студио за управление и след това се свърже с екземпляра на SQL сървъра, Препоръчано от който сте преместили транзитна база събиране на данни събиране на данни.
  2. Отворете нов прозорец, Запитване редактор и след това стартирате следния скрипт.
    USE masterGOIF OBJECT_ID ('sp_hexadecimal') IS NOT NULL  DROP PROCEDURE sp_hexadecimalGOCREATE PROCEDURE sp_hexadecimal    @binvalue varbinary(256),    @hexvalue varchar (514) OUTPUTASDECLARE @charvalue varchar (514)DECLARE @i intDECLARE @length intDECLARE @hexstring char(16)SELECT @charvalue = '0x'SELECT @i = 1SELECT @length = DATALENGTH (@binvalue)SELECT @hexstring = '0123456789ABCDEF'WHILE (@i <= @length)BEGIN  DECLARE @tempint int  DECLARE @firstint int  DECLARE @secondint int  SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))  SELECT @firstint = FLOOR(@tempint/16)  SELECT @secondint = @tempint - (@firstint*16)  SELECT @charvalue = @charvalue +    SUBSTRING(@hexstring, @firstint+1, 1) +    SUBSTRING(@hexstring, @secondint+1, 1)  SELECT @i = @i + 1ENDSELECT @hexvalue = @charvalueGO IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL  DROP PROCEDURE sp_help_revloginGOCREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL ASDECLARE @name sysnameDECLARE @type varchar (1)DECLARE @hasaccess intDECLARE @denylogin intDECLARE @is_disabled intDECLARE @PWD_varbinary  varbinary (256)DECLARE @PWD_string  varchar (514)DECLARE @SID_varbinary varbinary (85)DECLARE @SID_string varchar (514)DECLARE @tmpstr  varchar (1024)DECLARE @is_policy_checked varchar (3)DECLARE @is_expiration_checked varchar (3)DECLARE @defaultdb sysname IF (@login_name IS NULL)  DECLARE login_curs CURSOR FOR      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM sys.server_principals p LEFT JOIN sys.syslogins l      ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name <> 'sa'ELSE  DECLARE login_curs CURSOR FOR      SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM sys.server_principals p LEFT JOIN sys.syslogins l      ON ( l.name = p.name ) WHERE p.type IN ( 'S', 'G', 'U' ) AND p.name = @login_nameOPEN login_cursFETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denyloginIF (@@fetch_status = -1)BEGIN  PRINT 'No login(s) found.'  CLOSE login_curs  DEALLOCATE login_curs  RETURN -1ENDSET @tmpstr = '/* sp_help_revlogin script 'PRINT @tmpstrSET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'PRINT @tmpstrPRINT ''WHILE (@@fetch_status <> -1)BEGIN  IF (@@fetch_status <> -2)  BEGIN    PRINT ''    SET @tmpstr = '-- Login: ' + @name    PRINT @tmpstr    IF (@type IN ( 'G', 'U'))    BEGIN -- NT authenticated account/group      SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' FROM WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'    END    ELSE BEGIN -- SQL Server authentication        -- obtain password and sid            SET @PWD_varbinary = CAST( LOGINPROPERTY( @name, 'PasswordHash' ) AS varbinary (256) )        EXEC sp_hexadecimal @PWD_varbinary, @PWD_string OUT        EXEC sp_hexadecimal @SID_varbinary,@SID_string OUT         -- obtain password policy state        SELECT @is_policy_checked = CASE is_policy_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name        SELECT @is_expiration_checked = CASE is_expiration_checked WHEN 1 THEN 'ON' WHEN 0 THEN 'OFF' ELSE NULL END FROM sys.sql_logins WHERE name = @name             SET @tmpstr = 'CREATE LOGIN ' + QUOTENAME( @name ) + ' WITH PASSWORD = ' + @PWD_string + ' HASHED, SID = ' + @SID_string + ', DEFAULT_DATABASE = [' + @defaultdb + ']'        IF ( @is_policy_checked IS NOT NULL )        BEGIN          SET @tmpstr = @tmpstr + ', CHECK_POLICY = ' + @is_policy_checked        END        IF ( @is_expiration_checked IS NOT NULL )        BEGIN          SET @tmpstr = @tmpstr + ', CHECK_EXPIRATION = ' + @is_expiration_checked        END    END    IF (@denylogin = 1)    BEGIN -- login is denied access      SET @tmpstr = @tmpstr + '; DENY CONNECT SQL TO ' + QUOTENAME( @name )    END    ELSE IF (@hasaccess = 0)    BEGIN -- login exists but does not have access      SET @tmpstr = @tmpstr + '; REVOKE CONNECT SQL TO ' + QUOTENAME( @name )    END    IF (@is_disabled = 1)    BEGIN -- login is disabled      SET @tmpstr = @tmpstr + '; ALTER LOGIN ' + QUOTENAME( @name ) + ' DISABLE'    END    PRINT @tmpstr  END  FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin   ENDCLOSE login_cursDEALLOCATE login_cursRETURN 0GO


    БележкаТози скрипт създава две съхранени процедури в главнатранзитна база събиране на данни събиране на данни. Процедурите са с преобразуване на именаsp_hexadecimal и sp_help_revlogin.
  3. Изпълнете следната декларация:
    EXEC sp_help_revlogin
    Продукцията скрипт, който генерира sp_help_revlogin съхраняват процедура е определителен член login ръкопис. Този вход скрипт създава влизания, които имат оригинален идентификатор за защита (SID) и първоначалната парола.
  4. На сървъра Б стартирате SQL Server Студио за управление и след това се свърже с екземпляра на SQL Server, към който сте преместили транзитна база събиране на данни събиране на данни.

    Важно Преди да преминете към стъпка 5, преглед на информацията в раздел "Забележки".
  5. Отворете нов прозорец, Запитване редактор и тогава тичам изход скрипт, който е генериран в стъпка 3.

Забележки

Прегледайте следната информация, преди да изпълните скрипта продукция на екземпляр на сървъра б:
  • Ако се опитате да създадете нова регистрация в SQL Server 2012 с помощта на предварително-SQL Server 2000 вход, който е сценарист, ще получите следната грешка:
    MSG 15021, ниво 16, държавата 2, ред 1
    Невалидна стойност за параметър парола. Задайте стойност на валиден параметър.
    Бележка Получавате тази грешка в SQL Server 2012 заради 16-байтовата парола кълцам, която е предоставена за създаване на вход и ПРОМЕНЯТ вход отчети.

    За да разрешите този проблем на сървъра, който изпълнява SQL Server 2012, Създайте регистрация, която има празна парола. За да направите това, изпълнете следния скрипт:
    CREATE LOGIN [Test] WITH PASSWORD = '', SID = 0x90FD605DCEFAE14FAB4D5EB0BBA1AECC, DEFAULT_DATABASE = [master], CHECK_POLICY = ON, CHECK_EXPIRATION = OFF

    След като създадете вход, който има празна парола, потребителят може да промени паролата при следващото влизане опит.
  • Парола може да се криптира по три начина:
    • VERSION_LEGACY: тази хеш е 16-байтовата pre-SQL Server 2000 хашиш.
    • VERSION_SHA1: този хеш се генерира с помощта на SHA1 алгоритъм и се използва в SQL Server 2000 чрез SQL Server 2008 R2.
    • VERSION_SHA2: този хеш се генерира чрез използване на алгоритъма на SHA2 512 и се използва в SQL Server 2012.
  • В SQL Server 2008 R1 и в по-ранни версии pre-SQL Server 2000 парола кълцам бяха подкрепени. Когато даден потребител сте логнати с помощта на парола, която използва предварително-SQL Server 2000 хеш, хеш е обновена, за да използвате SHA1 кълцам парола.
  • Ако потребител, който е с парола, която използва предварително-SQL Server 2000 хеш съществува на сървър, който е стартиран SQL Server 2008 R2, това означава, че потребителят не е влязъл този сървър.
  • Преглед на изходния скрипт внимателно. Ако сървър А и Б сървър са в различни области, ще трябва да промени сценария за изход. След това вие трябва да замени оригиналното име за влизане на домейн Препоръчано от най-високо ниво с помощта на ново име за влизане на домейн Препоръчано от най-високо ниво във вход за създаване на отчети. Интегрирана влизания, които получават достъп в новия домейн Препоръчано от най-високо ниво не са една и съща SID като влизания в оригиналния домейн Препоръчано от най-високо ниво. Следователно потребителите са починали Препоръчано от тези регистрации. За Още действия информация как да отстраните тези сираци потребители щракнете върху следния номер на статия в база знания на Microsoft:
    240872 Как да разреши разрешение въпроси, когато преместите транзитна база събиране на данни събиране на данни между сървъри, които изпълняват SQL Server
    Ако сървър А и Б сървър са в същия домейн Препоръчано от най-високо ниво, една и съща SID се използва. Следователно потребителите се очаква да бъде сираци.
  • В продукцията скрипт вход са създадени с помощта на криптирана парола. Това се дължи HASHED аргумент в отчета за създаване на вход. Този аргумент задава, че паролата, която се въвежда след на парола аргумент е хеширан вече.
  • по подразбиране само член на фиксирани сървър ролята на системния администратор може да управлява Избери изявление Препоръчано от изгледа на sys.server_principals . Освен ако не е член на незаменим определени роля сървър предоставя необходимите разрешения на потребителите, потребителите не може да създаде или изпълни скрипта, изход.
  • В тази статия стъпки не прехвърлят информация за транзитна база събиране на данни събиране на данни по подразбиране за конкретен вход. Това е така, защото транзитна база събиране на данни събиране на данни по подразбиране може да не винаги съществува на сървъра б. За да зададете по подразбиране транзитна база събиране на данни събиране на данни за вход, използвайте отчета за промяна вход като преминават в потребителско име за влизане и транзитна база събиране на данни събиране на данни по подразбиране като аргументи.
  • Подниз сървър А и Б главни сървър: реда на сортиране на сървър А може да е нечувствителна към регистъра, и реда на сортиране на сървъра Б могат да бъдат малки и главни букви. В този случай потребителите трябва да въведете назначена програма за кражба на пароли във всички главни букви, след като прехвърлите вход и назначена програма за кражба на пароли на съд на сървъра б.

    Главни сървър А и Б подниз сървър: реда на сортиране на сървър А могат да бъдат малки и главни букви, и реда на сортиране на сървъра Б може да бъде нечувствителна към регистъра. В този случай потребителите не може да влезете с помощта на вход и назначена програма за кражба на пароли, които прехвърляте екземпляр на сървъра Б, освен ако е налице едно Препоръчано от следните условия:
    • Оригиналната назначена програма за кражба на пароли съдържат не писма.
    • Всички букви в оригиналния назначена програма за кражба на пароли са главни букви.
    с различаване на главните и малките букви или подниз на двата сървъра: реда на сортиране на сървър А и Б сървър могат да бъдат малки и главни букви, или реда на сортиране на сървър А и Б сървър може да е нечувствителна към регистъра. В тези случаи потребителите не изпитват проблем.
  • Вход, който вече е на инстанция на сървъра Б може да има име за влизане, което е същото като име за влизам изходния скрипт. В този случай получавате следното съобщение за грешка, когато стартирате скрипта продукция на екземпляр на сървъра б:
    MSG 15025, ниво 16, държавата 1, ред 1
    Главен сървър "MyLogin"вече съществува.
    По същия начин вход, който вече е на инстанция на сървъра Б може да има Сид, която е същата като SID в изходния скрипт. В този случай получавате следното съобщение за грешка, когато стартирате скрипта продукция на екземпляр на сървъра б:
    MSG 15433, ниво 16, държавата 1, ред 1
    Подаденият параметър sid се използва.
    Следователно трябва да направите следното:
    1. Преглед на изходния скрипт внимателно.
    2. Проучете съдържанието на изгледа на sys.server_principals в случай на сървъра б.
    3. Отговори на тези съобщения за грешки при необходимост.
  • В SQL Server 2005 SID за вход се използва за Изпълни с базата събиране на данни на ниво достъп. Регистрация може да има различни SIDs в различни бази събиране на данни на сървър. В този случай вход само достъп до базата събиране на данни, която е SID, който отговаря на SID в изгледа на sys.server_principals . Този проблем може да възникне, ако двете бази събиране на данни са обединени Препоръчано от различни сървъри. За да разрешите този проблем, премахнете ръчно вход Препоръчано от базата събиране на данни, която е SID несъответствие с помощта на командата DROP user. След това добавете влезете отново с помощта на отчета за създаване на потребител.
Библиография
За Още действия информация как да отстраните сираци потребители, отидете на Отстраняване на неизправности при откриваме засегнатите потребители Мрежата за разработчици на Microsoft (MSDN) сайт.

За Още действия информация за отчета за създаване на влизане, отидете на СЪЗДАВАНЕ на влизане (преговарям SQL) MSDN сайт.

За Още действия информация за отчета за промени влизане, отидете на ПРОМЯНА вход (преговарям SQL) MSDN сайт.

Предупреждение: Тази статия е преведена автоматично

Свойства

ИД на статията: 918992 – Последен преглед: 03/18/2014 18:10:00 – Редакция: 2.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2008 Standard, Microsoft SQL Server 2008 Workgroup, Microsoft SQL Server 2008 Developer, Microsoft SQL Server 2008 Enterprise, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Enterprise

  • kbsqlsetup kbexpertiseadvanced kbhowto kbinfo kbmt KB918992 KbMtbg
Обратна връзка
document.getElementsByTagName("head")[0].appendChild(m); >&t=">4 ng-scope"> El Salvador - Español
Panamá - Español
Uruguay - Español
대한민국 - 한국어
España - Español
Paraguay - Español
Venezuela - Español
mp;t=">id=1&t=">t=">>ript> >>ascript' src='" + (window.location.protocol) + "//c.microsoft.com/ms.js'><\/script>");