Šiuo metu esate neprisijungę, laukiama, kol iš naujo prisijungsite prie interneto

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

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
Į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 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


    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.

Įspėjimas: šis straipsnis išverstas automatiškai

Savybės

Straipsnio ID: 918992 – Paskutinė peržiūra: 09/04/2013 01:25:00 – Peržiūra: 2.0

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

  • kbsqlsetup kbexpertiseadvanced kbhowto kbinfo kbmt KB918992 KbMtlt
Atsiliepimai
=">e="display:none;" onerror="var m=document.createElement('meta');m.name='ms.dqp0';m.content='true';document.getElementsByTagName('head')[0].appendChild(m);" onload="var m=document.createElement('meta');m.name='ms.dqp0';m.content='false';document.getElementsByTagName('head')[0].appendChild(m);" src="http://c1.microsoft.com/c.gif?">