Momentálne ste offline a čaká sa, kým sa znova pripojíte na internet

Ako previesť prihlasovacie mená a heslá medzi inštanciami programu SQL Server

DÔLEŽITÉ: Tento článok je preložený pomocou softvéru na strojový preklad od spoločnosti Microsoft a možno ho opraviť prostredníctvom technológie Community Translation Framework (CTF). Microsoft ponúka strojovo preložené články, články upravené komunitou aj články preložené prekladateľmi, aby zabezpečil prístup ku všetkým článkom databázy Knowledge Base vo viacerých jazykoch. Strojovo preložené články aj upravené články môžu obsahovať chyby týkajúce sa slovnej zásoby, syntaxe alebo gramatiky. Microsoft nenesie zodpovednosť za akékoľvek nepresnosti, chyby alebo škody spôsobené neprávnym prekladom obsahu alebo jeho použitím zo strany našich zákazníkov. Ďalšie informácie o technológii CTF nájdete na lokalite http://support.microsoft.com/gp/machine-translation-corrections/sk.

Pokiaľ chcete vidieť anglickú verziu článku, kliknite sem: 918992
ÚVOD
Tento článok popisuje postup pri prenose prihlasovacie mená a heslá medzi inštanciami programu Microsoft SQL Server 2005, Microsoft SQL Server 2008 a Microsoft SQL Server 2012 na rôznych serveroch.

Ďalšie informácie o tom, ako odovzdať prihlasovacie mená a heslá medzi inštanciami ostatných verzií SQL Server, po kliknutí na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
246133 Ako previesť prihlasovacie mená a heslá medzi inštanciami programu SQL Server
Ďalšie informácie
V tomto článku, server a server B sú rôzne servery. Okrem toho, server a server B používate SQL Server 2005.

Poznámka Tieto informácie platia aj pre SQL Server 2008 a SQL Server 2012.

Po presunutí databázy z inštanciu servera SQL Server na serveri A na inštanciu servera SQL Server na server B, užívatelia môžu byť schopný sa prihlásiť do databázy na serveri B. Okrem toho, užívatelia mô¾ete dosta nasledujúce chybové hlásenie:
Prihlasovanie pre používateľa "MyUser'. (Microsoft SQL Server, Error: 18456)
Tento problém sa vyskytuje, pretože ste urobil neprenášajú prihlasovacie mená a heslá z inštanciu servera SQL Server na serveri A na inštanciu servera SQL Server na serveri B.

Prenos prihlasovacie údaje, použite jednu z nasledujúcich metód, ako vašej situácii najvhodnejší.

Metóda 1: Prihláste sa pomocou hesla vopred-SQL Server 2000

Ak chcete vyriešiť tento problém, požiadajte používateľa o prihlásenie na server so spustenou službou SQL Server pomocou prihlásenie vopred-SQL Server 2000.

Poznámka Password hashing aktualizuje automaticky pri prihlásení užívateľa pomocou vopred-SQL Server 2000 heslo.

Metóda 2: Obnoviť heslo servera SQL Server

Chcete vyriešiť tento problém, resetovať heslo servera SQL Server a potom skript out login.

Poznámka Heslo hashovací algoritmus sa používa pri obnovení hesla.

Metóda 3: Vytvoriť denník v skript, ktorý má prázdne heslo

Vytvorenie denníka v skript, ktorý má prázdne heslo, postupujte nasledovne:
  1. Na serveri, začať SQL Server Management Studio a potom pripojiť k inštancii servera SQL Server, z ktorého ste sa presťahovali databázu.
  2. Otvoriť nové okno a Query Editor, a potom spustiť nasledujúci skript.
    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


    PoznámkaTento skript vytvorí dve uložené procedúry v databáze predlohy. Postupy sú pomenovanésp_hexadecimal a sp_help_revlogin.
  3. Spustite nasledujúce vyhlásenie:
    EXEC sp_help_revlogin
    Výstup skript, ktorý generuje sp_help_revlogin uložené postup je prihlasovací skript. Tento prihlasovací skript vytvorí prihlasovacie údaje, ktoré majú pôvodný identifikátor zabezpečenia (SID) a pôvodné heslo.
  4. Na server B, začať SQL Server Management Studio a potom pripojiť k inštancii servera SQL, ku ktorému ste sa presťahovali databázu.

    Dôležité Predtým, než idete na krok 5, prezrite si informácie v časti "Poznámky".
  5. Otvoriť nové okno a Query Editor, a potom spustiť skript výstup, ktorý je vytvorený v kroku 3.

Poznámky

Prezrite si nasledujúce informácie pred spustením skriptu výstup na inštancii na serveri B:
  • Ak sa pokúsite vytvoriť nové SQL Server 2012 prihlásiť pomocou vopred-SQL Server 2000 prihlasovacie údaje, ktoré je scenár, dostanete nasledujúcu chybu:
    MSG 15021, úroveň 16, štát 2, riadok 1
    Neplatná hodnota pre parameter PASSWORD. Zadajte platnú hodnotu.
    Poznámka Dostanete túto chybu v SQL Server 2012 pretože 16-bajtové heslo hash dodané pre prihlásenie vytvoriť a zmeniť prihlasovacie vyhlásenia.

    Ak chcete vyriešiť tento problém na serveri so spustenou službou SQL Server 2012, vytvoriť prihlasovacie údaje, ktoré má prázdne heslo. Vykonáte to spustiť nasledujúci skript:
    CREATE LOGIN [Test] WITH PASSWORD = '', SID = 0x90FD605DCEFAE14FAB4D5EB0BBA1AECC, DEFAULT_DATABASE = [master], CHECK_POLICY = ON, CHECK_EXPIRATION = OFF

    Po vytvorení prihlásenia, ktoré má prázdne heslo, používateľ môže zmeniť heslo pri ďalšom pokuse o prihlásenie.
  • Heslo môže byť hash tromi spôsobmi:
    • VERSION_LEGACY: tento hash je 16-bajtové vopred-SQL Server 2000 hash.
    • VERSION_SHA1: tento hash sa generuje pomocou algoritmu SHA1 a je používaný v SQL Server 2000 až po SQL Server 2008 R2.
    • VERSION_SHA2: tento hash sa generuje pomocou algoritmu SHA2 512 a je používaný v SQL Server 2012.
  • V SQL Server 2008 R1 a v starších verziách boli podporované vopred-SQL Server 2000 heslo hash. Keď používateľ prihlásený pomocou hesla, ktoré používajú vopred-SQL Server 2000 hash, hash bola aktualizovaná používať SHA1 hash hesla.
  • Ak používateľ, ktorý má heslo, ktoré používa hašu vopred-SQL Server 2000 na serveri so spustenou službou SQL Server 2008 R2, to znamená, že používateľ má neprihlásili na server.
  • Pozorne si prezrite výstup skript. Ak server a server B sú v rozdielnych doménach, budete musieť zmeniť skript výstup. Potom musíte nahradiť pôvodný názov domény pomocou nový názov domény vo výkazoch vytvoriť prihlásenie. Integrované prihlasovanie udelený prístup v novú doménu nemajú rovnaký SID ako prihlasovacie údaje v pôvodnej doméne. Preto, používatelia sú osirelé z týchto prihlásenie. Ďalšie informácie o riešení týchto osamotené používateľov, kliknite na nasledovné číslo článku publikovaného v databáze Microsoft Knowledge Base:
    240872 Ako riešiť problémy s povolením pri presúvaní databázy medzi serverom so systémom SQL Server
    Ak server a server B sú v rovnakej doméne, použije sa rovnaký SID. Užívatelia sú preto pravdepodobne zostať osamotený.
  • V skript výstup, prihlásenia sú vytvorené pomocou šifrované heslo. Je to spôsobené HASHED argument vo vyhlásení vytvoriť prihlásenie. Tento argument špecifikuje, že heslo, ktoré sa zapisuje po argumente heslo je už hash.
  • Podľa predvoleného nastavenia len členom úlohu sysadmin pevné servera môžete spustiť príkaz SELECT z pohľadu sys.server_principals . Ak nie je členom sysadmin pevné servera dbcreator granty potrebné povolenia pre používateľov, používateľov nemožno vytvoriť alebo spustiť skript výstup.
  • Kroky v tomto článku sa neprenášajú predvolená databáza informácie najmä login. To je, pretože predvolená databáza nemusí vždy existovať na serveri B. Ak chcete definovať predvolenú databázu pre prihlásenie, použite príkaz zmeniť prihlasovacie prechodom cez prihlasovacie meno a predvolenú databázu ako argumenty.
  • Case-insensitive servera A a písmená B: poradie zoradenia server A môže byť case-insensitive, a poradie zoradenia servera B môžu byť case-sensitive. V tomto prípade musia používatelia zadať heslá veľkými písmenami po dokončení prevodu prihlasovacie mená a heslá k inštancii na serveri B.

    Rozlišujú server a case-insensitive server B: zoradenie servera A môžu byť case-sensitive, a poradie zoradenia servera B môže byť case-insensitive. V tomto prípade užívatelia nemôžu prihlásiť pomocou prihlasovacie mená a heslá, ktoré prenášate stupňa na server B, pokiaľ je splnená jedna z nasledujúcich podmienok:
    • Pôvodné heslo obsahovať žiadne písmená.
    • Všetky písmená v pôvodnom heslá sú veľkými písmenami.
    Malé a veľké písmená alebo case-insensitive na oboch serveroch: poradie zoradenia server a server B môžu byť case-sensitive, alebo zoradenia server a server B môže byť case-insensitive. V týchto prípadoch sa užívatelia nemajú skúsenosti problém.
  • To už je na stupni na serveri B Prihlásenie môže mať názov, ktorý je rovnaký ako názov v skript výstup. V tomto prípade sa nasledujúce chybové hlásenie pri spustení skriptu výstup na inštancii na serveri B:
    MSG 15025, úroveň 16, štát 1, linka 1
    Hlavný server "MyLogin"už existuje.
    Podobne, to už je na stupni na serveri B Prihlásenie môže mať zabezpečovací identifikátor, ktorý je rovnaký ako identifikátor v skript výstup. V tomto prípade sa nasledujúce chybové hlásenie pri spustení skriptu výstup na inštancii na serveri B:
    MSG 15433, úroveň 16, štát 1, linka 1
    Zadaný parameter sid sa používa.
    Preto musíte urobiť nasledovné:
    1. Pozorne si prezrite výstup skript.
    2. Preskúmajte obsah sys.server_principals zobrazenia v inštancii servera B.
    3. Riešenie týchto chybových hlásení podľa potreby.
  • V SQL Server 2005, SID pre prihlásenie slúži na realizáciu databázy-úrovni prístup. Prihlasovacie údaje môžu mať rôzne SIDs rôznych databáz na serveri. V tomto prípade sa prihlásiť iba prístup databázy, ktorá obsahuje identifikátor SID, ktorý zodpovedá SID v sys.server_principals zobrazení. Tento problém môže nastať ak dvoch databáz sú kombinované z rôznych serverov. Ak chcete vyriešiť tento problém, ručne odstrániť prihlasovacie údaje z databázy, ktorá má SID nesúlad s použitím príkaze DROP USER. Potom môžete pridať prihlasovacie údaje znova pomocou príkazu vytvoriť používateľa.
Odkazy
Ďalšie informácie o riešení problémov s osirelé používateľov, prejdite na Riešenie problémov s osirelé užívateľov Microsoft Developer Network (MSDN) webovej stránky.

Ďalšie informácie o príkaz vytvoriť prihlasovacie údaje, prejdite na Vytvorenie prihlásenia (Transact-SQL) Webovej lokalite MSDN.

Ďalšie informácie o príkaz zmeniť prihlasovacie údaje, prejdite na ZMENIŤ prihlásenie (Transact-SQL) Webovej lokalite MSDN.

Upozornenie: Tento článok bol preložený automaticky.

Vlastnosti

ID článku: 918992 – Posledná kontrola: 02/16/2014 01:36:00 – Revízia: 2.0

Microsoft SQL Server 2005 Standard Edition, Microsoft SQL 2005 Server Workgroup, Microsoft SQL Server 2005 Express Edition, Microsoft SQL 2005 Server Enterprise, 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 KbMtsk
Pripomienky