Kaip perkelti vartotojo vard? ir slapta?od?i? tarp atvej? SQL serverio

Straipsni? vertimai Straipsni? vertimai
Straipsnio ID: 918992 - Per?i?r?ti ?iame straipsnyje minimus produktus.
I?pl?sti visus | Sutraukti visus

?iame puslapyje

?VADAS

?iame straipsnyje apra?oma, kaip perkelti prisijungim? ir slapta?od?ius tarp atvej?, Microsoft SQL Server 2005, Microsoft SQL Server 2008 ir Microsoft SQL Server 2012 skirtinguose serveriuose.

Nor?dami gauti daugiau informacijos apie tai, kaip perkelti prisijungim? ir slapta?od?ius tarp kit? versijos SQL serverio egzempliori?, spustel?kite toliau straipsnio numer? ir per?i?r?kite straipsn? Microsoft ?ini? baz?je:
246133 Kaip perkelti vartotojo vard? ir slapta?od?i? tarp atvej? SQL serverio

Daugiau informacijos

?iame straipsnyje, serverio A ir B serverio yra ?vairi? serveri?. Be to, serveris A ir B serveris veikia SQL Server 2005.

Pastaba ?i informacija taip pat taikoma SQL Server 2008 ir SQL Server 2012.

Po to, kai perkeliate duomen? baz? i? SQL serverio egzempliorius serveryje A prie SQL serverio egzemplioriaus B serveryje, vartotojai gali nepavykti prisijungti prie duomen? baz?s serveryje B. Be to, vartotojai gali gauti tok? klaidos prane?im?:
Prisijungti nepavyko, vartotojas "MyUser'. (Microsoft SQL Server, klaida: 18456)
?i problema kyla tod?l, kad j?s neperdav? prisijungim? ir slapta?od?ius i? SQL serverio egzempliorius serveryje A prie SQL serverio egzemplioriaus B. serveryje

Perduoti prisijungim?, naudokite vien? i? ?i? b?d?, atsi?velgdami ? savo situacij?.

1 Metodas: Prisijungti naudodami i? anksto-SQL serverio 2000 slapta?od?

Nor?dami i?spr?sti ?i? problem?, papra?ykite vartotojo pateikti prisijungti prie serverio, kuriame veikia SQL serverio naudojant pre-SQL serverio 2000 prisijungimo.

Pastaba Slapta?odis mai?a yra automati?kai naujinama, kai vartotojas ?eina naudodamas pre-SQL serverio 2000 slapta?od?.

2 Metodas: I? naujo nustatyti slapta?od? ? SQL serverio

Nor?dami i?spr?sti ?i? problem?, i? naujo nustatyti slapta?od? ? SQL server?, ir tada scenarij?, prisijungimo.

Pastaba Slapta?od? Mai?os algoritmas naudojamas, kai j?s i? naujo nustatyti slapta?od?.

3 Metodas: Sukurti ?urnal? scenarijaus, kuris turi tu??i? slapta?od?

Nor?dami sukurti ?urnal? scenarijaus, kuris turi tu??i? slapta?od?, atlikite ?iuos veiksmus:
  1. A serveryje paleisti SQL Server Management Studio, ir tada prisijungti prie SQL serverio, i? kurio perk?l?te duomen? baz?s egzemplioriaus.
  2. Atidarykite nauj? lang?, u?klausa redaktorius, ir tada paleisti ?? scenarij?.
    USE master
    GO
    IF OBJECT_ID ('sp_hexadecimal') IS NOT NULL
      DROP PROCEDURE sp_hexadecimal
    GO
    CREATE PROCEDURE sp_hexadecimal
        @binvalue varbinary(256),
        @hexvalue varchar (514) OUTPUT
    AS
    DECLARE @charvalue varchar (514)
    DECLARE @i int
    DECLARE @length int
    DECLARE @hexstring char(16)
    SELECT @charvalue = '0x'
    SELECT @i = 1
    SELECT @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 + 1
    END
    
    SELECT @hexvalue = @charvalue
    GO
     
    IF OBJECT_ID ('sp_help_revlogin') IS NOT NULL
      DROP PROCEDURE sp_help_revlogin
    GO
    CREATE PROCEDURE sp_help_revlogin @login_name sysname = NULL AS
    DECLARE @name sysname
    DECLARE @type varchar (1)
    DECLARE @hasaccess int
    DECLARE @denylogin int
    DECLARE @is_disabled int
    DECLARE @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_name
    OPEN login_curs
    
    FETCH NEXT FROM login_curs INTO @SID_varbinary, @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin
    IF (@@fetch_status = -1)
    BEGIN
      PRINT 'No login(s) found.'
      CLOSE login_curs
      DEALLOCATE login_curs
      RETURN -1
    END
    SET @tmpstr = '/* sp_help_revlogin script '
    PRINT @tmpstr
    SET @tmpstr = '** Generated ' + CONVERT (varchar, GETDATE()) + ' on ' + @@SERVERNAME + ' */'
    PRINT @tmpstr
    PRINT ''
    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
       END
    CLOSE login_curs
    DEALLOCATE login_curs
    RETURN 0
    GO
    


    Pastaba?io scenarijaus atveju sukuriami du saugomas proced?ras ? pagrindin?sduomen? baz?s. Tvarka yra pavadintisp_hexadecimal ir sp_help_revlogin.
  3. Paleisti ?? parei?kim?:
    EXEC sp_help_revlogin
    I??jimo scenarijus, kuris sp_help_revlogin saugomi proced?ra sukuria yra prisijungimo scenarij?. ?is prisijungimo scenarijaus atveju sukuriami prisijungim?, originalus saugos identifikatorius (SID), pradin? slapta?od?.
  4. B serveryje paleisti SQL Server Management Studio, ir tada prisijungti prie SQL serverio ? kur? perk?l?te duomen? baz?s egzemplioriaus.

    Svarbu. Prie? i?vykdami ? ?ingsnis 5, per?i?r?kite informacij?, skyriuje "Pastabos".
  5. Atidarykite nauj? lang?, u?klausa redaktorius ir paleiskite produkcijos scenarij?, kuris sukuriamas atliekant 3 veiksm?.

Pastabos

Per?i?r?ti ?i? informacij? prie? paleid?iant i??jimo scenarijus B: serveryje egzemplioriuje
  • Jei bandote sukurti nauj? SQL serverio 2012 prisijungti naudojant pre-SQL serverio 2000 prisijungti, kad yra scenarijus, gaunate ?? klaidos prane?im?:
    MSG 15021, lygio 16, valstyb? 2, 1 eilut?
    Neleistina reik?m? atsi?velgiant parametro slapta?od?. Nurodyti galiojant? parametro reik?m?s.
    Pastaba ?? klaidos prane?im? gaunate SQL serverio 2012 d?l 16 bait? slapta?odis mai?a, pateikto sukurti prisijungimo ir pakeisti prisijungimo atskaitomybei.

    Nor?dami i?spr?sti ?i? problem? serveryje, kuriame veikia SQL Server 2012, sukurti tu??i? slapta?od?, prisijungimo vard?. Nor?dami tai padaryti, vykdykite ?? scenarij?:
    CREATE LOGIN [Test] WITH PASSWORD = '', SID = 0x90FD605DCEFAE14FAB4D5EB0BBA1AECC, 
    DEFAULT_DATABASE = [master], CHECK_POLICY = ON, CHECK_EXPIRATION = OFF

    Kai sukuriate tu??i? slapta?od?, prisijungimo, vartotojas gali pakeisti slapta?od? kit? prisijungimo bandymas.
  • Slapta?od? galima bus hashed trimis b?dais:
    • VERSION_LEGACY: ?is mai?os yra 16 bait? pre-SQL Server 2000 mai?os.
    • VERSION_SHA1: ?is mai?os yra sukurtas naudojant SHA1 algoritm? ir yra naudojama SQL Server 2000 per SQL Server 2008 R2.
    • VERSION_SHA2: ?is mai?os yra sukurtas naudojant SHA2 512 algoritmas ir naudojamas SQL serverio 2012.
  • SQL Server 2008 R1 ir ankstesn?se versijose, pre-SQL serverio 2000 slapta?od? mai?as buvo remiami. Kai naudodami slapta?od?, kurie naudojami i? anksto-SQL serverio 2000 mai?os prisijung?Ös vartotojas, mai?os buvo modernizuotos, kad naudoti SHA1 slapta?odis mai?a.
  • Jei vartotojas, slapta?od?, kur? naudoja pre-SQL serverio 2000 mai?os yra serveryje, kuriame veikia SQL Server 2008 R2, tai rei?kia, kad vartotojas ne??jo ?iame serveryje.
  • Atid?iai per?i?r?kite i??jimo scenarijus. Jei serverio A ir B serverio yra skirtinguose domenuose, turite pakeisti i??jimo scenarijus. Tada j?s turite pakeisti pirmin? domeno vard? naudodami nauj? domeno pavadinim? sukurkite prisijungimo atskaitomyb?je. Integruota prisijungim?, kuriems suteikta prieiga ? nauj? domeno neturi pa?ios SID kaip prisijungim? pirminio domeno. Tod?l vartotojai yra na?lai?iai i? ?i? prisijungimus. Nor?dami gauti daugiau informacijos apie tai, kaip i?spr?sti ?ie pavieniai vartotojai, spustel?kite toliau straipsnio numer? ir per?i?r?kite straipsn? Microsoft ?ini? baz?je:
    240872 Kaip i?spr?sti leidim? i?duoda kai perkeliate duomen? baz? tarp serveriai, kuriuose veikia SQL Server
    Jei serverio A ir B serverio yra tame pa?iame domene, naudojama pa?ios SID. Tod?l vartotojai yra ma?ai tik?tina, kad b?ti na?lai?iai.
  • I??jimo scenarijus, prisijungim? yra sukurtas naudojant u??ifruotos slapta?od?. Tai yra d?l HASHED argumentas sukurti prisijungimo (nuostolio) ataskaitoje. ?is argumentas nurodo, kad slapta?odis ?vestas po slapta?od?io argumentas yra jau Haszowanej.
  • Pagal numatytuosius nustatymus, tik kad sysadmin serverio rol? nariu galite paleisti sakinys SELECT sys.server_principals Rodyti. Jeigu narys sysadmin nustatomas serverio vaidmuo suteikia reikiam? teisi? vartotojai, vartotojai negali sukurti arba paleisti i??jimo scenarijus.
  • ?iame straipsnyje nurodytus veiksmus neperkelti numatytasis duomen? baz?s informacijos ypa? prisijungimams. Taip yra tod?l numatytuosius duomen? baz?s ne visada gali b?ti B. serveryje Nustatyti numatytuosius duomen? baz?s prisijungimams, naudoti pakeisti prisijungimo i?ra?? i? artim?j? prisijungimo vardas ir numatytuosius duomen? baz?s kaip argumentus.
  • Utf8 serverio A ir did?i?j? ir ma??j? raid?i? serverio B: r??iavimo tvark?, serverio A gali b?ti utf8, ir r??iavimo tvark?, serverio B gali b?ti skiriama ABC nuo abc. ?iuo atveju vartotojai turi ?vesti slapta?od?ius did?iosiomis raid?mis, kai prisijungim? ir slapta?od?ius instancijos B. serveryje

    Did?iosios ir ma?osios raid?s serverio A ir utf8 serverio B: r??iavimo tvark?, serverio A gali b?ti Did?iosios ir ma?osios raid?s, ir r??iavimo tvark?, serverio B gali b?ti utf8. ?iuo atveju vartotojai negali prisijungti naudodami prisijungim? ir slapta?od?ius, kuriuos perduoti instancijos serveryje B i?skyrus atvejus, kai viena i? ?i? s?lyg? yra teisinga:
    • Originalus slapta?od?iai yra ne ne raid?mis.
    • Visos raid?s originalus slapta?od?ius yra Did?iosios raid?s.
    Did?iosios ir ma?osios raid?s arba utf8 tiek serveriuose: r??iavimo tvark?, serverio A ir B serverio gali b?ti Did?iosios ir ma?osios raid?s, arba r??iavimo tvark?, serverio A ir B serverio utf8. Tokiais atvejais vartotojai neturi patirties problema.
  • Prisijungti, kad jau yra vis? B serveryje gali tur?ti pavadinim?, kuris yra tas pats kaip i?vesties scenarijaus pavadinim?. ?iuo atveju, j?s gaunate ?? klaidos prane?im? paleidus i??jimo scenarijus B: serveryje egzemplioriuje
    MSG 15025, lygio 16, valstyb? 1, 1 eilut?
    Serverio vykdytojas "MyLogin"jau yra.
    Taip pat prisijungti, kad jau yra vis? B serveryje gali tur?ti SID, yra tokia pati kaip SID produkcijos scenarijaus. ?iuo atveju, j?s gaunate ?? klaidos prane?im? paleidus i??jimo scenarijus B: serveryje egzemplioriuje
    MSG 15433, dydis 16, valstyb? 1, 1 eilut?
    Pateikta parametras sid yra naudojamas.
    Tod?l, turite atlikti ?iuos veiksmus:
    1. Atid?iai per?i?r?kite i??jimo scenarijus.
    2. Jo turinio sys.server_principals mano atveju B. serveryje
    3. Adresas ?i? klaid? prane?imai atitinkamai.
  • SQL Server 2005, SID prisijungimams vartojamas ?gyvendinti duomen? baz? lygio prieig?. Prisijungimo vard? gali tur?ti skirting? MBSV skirting? duomen? bazi? serveryje. ?iuo atveju, prisijungimo gali pasiekti tik duomen? baz?, kurioje yra SID, atitinkant? SID sys.server_principals nuomone. ?i problema gali kilti, jei dviej? duomen? bazi? kartu i? skirting? serveri?. Nor?dami i?spr?sti ?i? problem?, rankiniu b?du pa?alinti prisijungimo duomen? baze, kuriuos turi SID nesutapimas naudojant DROP USER parei?kim?. Tada, v?l prid?ti prisijungimo naudojant sukurti vartotojo parei?kim?.

Nuorodos

Nor?dami gauti daugiau informacijos, kaip i?spr?sti pavieniai vartotojai, eikite ? ? ?alinti triktis pavieniai vartotojai Microsoft Developer Network (MSDN) svetain?je.

Daugiau informacijos apie sukurti ??JIMAS parei?kim?, kad Sukurkite prisijungimo (Transact-SQL) MSDN svetain?je.

Nor?dami gauti daugiau informacijos apie parei?kimo pakeisti prisijungimo, eikite ? ? PAKEISTI prisijungimo (Transact-SQL) MSDN svetain?je.

Savyb?s

Straipsnio ID: 918992 - Paskutin? per?i?ra: 2013 m. rugs?jo 4 d. - Per?i?ra: 2.0
Taikoma:
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL 2005 Server Workgroup
  • Microsoft SQL Server 2005 Developer 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
Rakta?od?iai: 
kbsqlsetup kbexpertiseadvanced kbhowto kbinfo kbmt KB918992 KbMtlt
Atliktas automatinis vertimas
SVARBU: ?is straipsnis i?verstas naudojant ?Microsoft? ma?ininio vertimo programin? ?rang? ir gali b?ti pataisytas naudojant ?Community Translation Framework? (CTF) technologij?. ?Microsoft? si?lo ma?inos i?verstus ir po to bendruomen?s suredaguotus straipsnius, taip pat ?mogaus i?verstus straipsnius siekdama suteikti prieig? prie vis? savo ?ini? baz?s straipsni? daugeliu kalb?. Ma?inos i?verstuose ir v?liau paredaguotuose straipsniuose gali b?ti ?odyno, sintaks?s ir / arba gramatikos klaid?. ?Microsoft? neatsako u? jokius netikslumus, klaidas arba ?al?, patirt? d?l neteisingo turinio vertimo arba m?s? klient? naudojimosi juo. Daugiau apie CTF ?r. http://support.microsoft.com/gp/machine-translation-corrections.
Spustel?kite ?ia, nor?dami pamatyti ?io straipsnio versij? angl? kalba: 918992

Pateikti atsiliepim?

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com