Töötate praegu ühenduseta, ootame Interneti-ühenduse taasloomist

Kuidas kanda sisselogimise ja paroolide vahel SQL Serveri eksemplari

NB! Artikkel on tõlgitud Microsofti masintõlketarkvaraga ja seda saab parandada Kogukonnapõhise tõlkeraamistiku (CTF) tehnoloogiaga. Microsoft pakub masintõlgitud, kogukonna järeltöödeldud ja inimtõlgitud artikleid, et anda mitmekeelne juurdepääs kõigile meie teabebaasi artiklitele. Masintõlgitud ja järeltöödeldud artiklites võib olla sõnavara-, süntaksi- ja/või grammatikavigu. Microsoft ei vastuta mingite ebatäpsuste, tõrgete ega kahjude eest, mis on tulenenud sisu valest tõlkest või selle kasutamisest meie klientide poolt. Lisateavet CTF-i kohta leiate aadressilt http://support.microsoft.com/gp/machine-translation-corrections/et.

Artikli ingliskeelse versiooni kuvamiseks klõpsake siin: 918992
SISSEJUHATUS
Käesolevas artiklis kirjeldatakse, kuidas on kirjautumistunnukset ja paroolid eksemplarid Microsoft SQL Server 2005, Microsoft SQL Server 2008 ja Microsoft SQL Server 2012 erinevates serverites vahel üle kanda.

Selle kirjautumistunnukset ja paroolid vahetada teiste versioonide SQL Serveri eksemplari kohta lisateabe saamiseks klõpsake Microsofti teabebaasi artikli kuvamiseks järgmist artiklinumbrit:
246133 Kuidas kanda sisselogimise ja paroolide vahel SQL Serveri eksemplari
Lisateave
Käesolevas artiklis, server ja server B on erinevad serverid. Lisaks server ja server B töötab SQL Server 2005.

Märkus See teave kehtib ka SQL Server 2008 ja SQL Server 2012.

Pärast seda, kui teisaldate andmebaasi SQL Serveri eksemplari serveris A SQL Serveri eksemplari server B, on võimalik, et kasutajad ei saa andmebaasi server B. täiendavalt logimiseks, kasutajatele võidakse kuvada järgmine tõrketeade:
Kasutaja sisselogimine nurjus "MyUser'. (Microsoft SQL Server, viga: 18456)
See probleem ilmneb, sest te ei kandnud ning kirjautumistunnukset ja paroolid alates SQL Serveri eksemplari serveris A SQL Serveri eksemplari serveris B.

Kanda sisselogimiste, kasutage ühte järgmistest meetoditest.

1. Meetod: Logi sisse pre-SQL Server 2000 parooli abil

Probleemi lahendamiseks paluge kasutajal sisse logida serverisse, kus töötab SQL Serveri abil pre-SQL Server 2000 sisselogimine.

Märkus Parooli räsifunktsiooni jaoks on värskendub automaatselt, kui kasutaja logib sisse pre-SQL Server 2000 parooli abil.

2. Meetod: SQL-i serveris parooli lähtestamine

Probleemi lahendamiseks, SQL-i serveris parooli lähtestamine ja seejärel välja login skripti.

Märkus Kui lähtestate parooli kasutatakse parooli loob rakendus räsialgoritmi.

3. Meetod: Looge Logi skripti, mis on tühi parool

Skripti, mis on tühi parool Logi loomiseks toimige järgmiselt.
  1. Serveris A, käivitage SQL Server Management Studio ja seejärel ühendage, millest te teisaldada andmebaasi SQL Serveri eksemplariga.
  2. Ava uus päring Editor aken ja seejärel käivitage järgmine 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


    MärkusSee skript loob kaks salvestatud protseduurid kaptenandmebaasis. Korra on nimetatudsp_hexadecimal ja sp_help_revlogin.
  3. Käivitage järgmine lause:
    EXEC sp_help_revlogin
    Väljund skripti, mis loob sp_help_revlogin salvestatud protseduuri on Logiskript-sisselogimisskripti. Selle login skripti loob algse turvalisuse identifikaatorit (SID) ja algse parooli logimiste.
  4. Server B, käivitage SQL Server Management Studio ja seejärel ühendada, millele soovite te teisaldada andmebaasi SQL Serveri eksemplariga.

    Oluline Enne kui minna sammu 5, üle vaadata rubriiki "Märkused".
  5. Ava uus päring Editor aken ja käivitage väljund skripti, mis on loodud samm 3.

Märkused

Vaadata järgmist teavet enne toodangu skripti käivitada serveris B: eksemplaris
  • Kui proovite luua uue SQL Server 2012 Logi sisse, kasutades pre-SQL Server 2000 login, mis on kirjutasid, kuvatakse järgmine tõrketeade:
    MSG 15021, tase 16, riigi 2 rida 1
    Sobimatu väärtus antud parameetri parool. Määrake kehtiv parameetri väärtus.
    Märkus Saate seda viga SQL Server 2012 tõttu 16-baidiseid parooli räsi, luua LOGIN ja muuta LOGIN väljavõtete kaasas.

    Serveris, kus töötab SQL Server 2012 probleemi lahendamiseks looge Logi, mis on tühi parool. Selleks käivitage järgmine skript:
    CREATE LOGIN [Test] WITH PASSWORD = '', SID = 0x90FD605DCEFAE14FAB4D5EB0BBA1AECC, DEFAULT_DATABASE = [master], CHECK_POLICY = ON, CHECK_EXPIRATION = OFF

    Pärast loomist Logi sisse, mis on tühi parool, saab kasutaja järgmise sisselogimise katse parooli muuta.
  • Parooli saab räsitud kolmel viisil:
    • VERSION_LEGACY: see räsi on 16-baidiseid pre-SQL Server 2000 räsi.
    • VERSION_SHA1: see räsi SHA1 algoritmi abil luuakse ja kasutatakse SQL Server 2000 kuni SQL Server 2008 R2.
    • VERSION_SHA2: see räsi SHA2 512 algoritmi abil luuakse ja kasutatakse SQL Server 2012.
  • SQL Server 2008 R1 ja varasemates versioonides toetasid pre-SQL Server 2000 parooli hashes. Kui pre-SQL Server 2000 räsi kasutatava parooliga sisseloginud kasutaja täiendati räsi kasutada SHA1 parooli räsi.
  • Kui kasutaja, kes on parool, mis kasutab pre-SQL Server 2000 räsi olemas server, SQL Server 2008 R2 käitav, tähendab see, et kasutaja on pole sisse logitud serveri.
  • Skript väljund hoolikalt läbi. Kui server ja server B erinevates domeenides, teil muuta väljundi skripti. Siis sa pead asendama originaal domeeninime uue domeeninime kasutades luua LOGIN-lausetes. Integreeritud logimistest, millele on juurdepääs uus domeen ei ole sama SID nagu sisselogimiste esialgse domeeni. Seetõttu on kasutajate orvuks alates nende sisselogimised. Kuidas lahendada nende orvuks kasutajate kohta lisateabe saamiseks klõpsake Microsofti teabebaasi artikli kuvamiseks järgmist artiklinumbrit:
    240872 Kuidas luba probleemide lahendamine serverites, kus töötab SQL serveri vahel liikudes andmebaasi
    Kui server ja server B on samas domeenis, kasutatakse sama SID. Seega kasutajad tõenäoliselt olema orvuks.
  • Skript väljund luuakse sisselogimiste krüpteeritud parooli abil. Põhjuseks on HASHED argumendi luua LOGIN-lause. See argument määrab, parool, mis on sisestatud PAROOLI argument pärast juba räsitud.
  • Vaikimisi rolli sysadmin fikseeritud server saab käivitada üksnes SELECT-lause vaatest sys.server_principals . Juhul, kui liige sysadmin serveri roll annab vajalikud kasutajad, õigused, kasutajad ei saa luua või käivitage skript väljund.
  • Käesoleva artikli juhised üle vaikimisi andmebaasi teave eelkõige sisselogimise. Seda sellepärast, et vaikimisi andmebaasi ei pruugi alati olemas server B. Default andmebaasi sisselogimise määratlemiseks kasutage muuta LOGIN lauset sooritades kasutajanime ja vaikeandmebaas argumentidena.
  • Väiketähed server ja server B tõstutundlik: server A sortimisjärjestuse võib väiketähed ja server B sortimisjärjestuse võib olla tõstutundlik. Sel juhul tippimine võimaldab kasutajal paroole suurtähtedes, pärast seda, kui edastate selle sisselogimise ja paroolide astme serveris B.

    Suur-ja väiketähti server ja server B väiketähed: server A sortimisjärjestuse võib olla tõstutundlik ja server B sortimisjärjestuse võib väiketähed. Sellisel juhul kasutajad ei saa Logi sisse kasutades on kirjautumistunnukset ja paroolid, mida sa kanda server B astme, kui üks järgmistest tingimustest on täidetud:
    • Algne paroolid sisaldavad tähed.
    • Kõik tähed originaal paroolid on suurte tähtedega.
    Tõstutundlik või väiketähed Mõlemal serverid: server ja server B sortimisjärjestuse võib olla tõstutundlik, või sortimisjärjestuse server ja server B väiketähed. Sellistel juhtudel kasutajate kogemusi probleem.
  • Logi sisse, et juba on server B astme võib olla nimi, mis on sama nimi väljundi skripti. Sel juhul kuvatakse järgmine tõrketeade, kui käivitate väljund skripti serveris B: astme
    MSG 15025, tase 16, riik 1 rida 1
    Peamine server "MyLogin' on juba olemas.
    Samamoodi võib Logi sisse, et juba on server B astme on SID, mis on sama SID väljund skripti. Sel juhul kuvatakse järgmine tõrketeade, kui käivitate väljund skripti serveris B: astme
    MSG 15433, tase 16, riik 1 rida 1
    Esitatud parameeter sid on kasutusel.
    Seetõttu peate tegema järgmist:
    1. Skript väljund hoolikalt läbi.
    2. Sys.server_principals vaate eksemplari serveris B. sisu
    3. Aadress vastavalt vajadusele need tõrketeated.
  • SQL Server 2005, SID sisselogimise rakendamiseks kasutatakse andmebaasi tasandil juurdepääs. Sisselogimine võib olla erinevaid sid eri andmebaasidesse server. Sel juhul login pääseb juurde ainult andmebaasi, mis on SID, mis sobib SID vaates sys.server_principals . See probleem võib ilmneda juhul, kui kaks andmebaase ühendatakse teistest serveritest. Selle probleemi lahendamiseks käsitsi eemaldada login on SID vastuolu TILK kasutaja lause abil andmebaasi. Siis, lisage login uuesti luua kasutaja aruande abil.
Viited
Orvuks kasutajatele tõrkeotsingu kohta lisateabe saamiseks minge selle Tõrkeotsing orvuks kasutajad Microsofti tootearendajate võrgu (MSDN) veebisaiti.

LUUA LOGIN avalduse kohta lisateabe saamiseks minge selle LUUA LOGIN (tehinguid-SQL) MSDN-i veebilehel.

Muuda LOGIN avalduse kohta lisateabe saamiseks minge selle Muuda LOGIN (tehinguid-SQL) MSDN-i veebilehel.

Hoiatus. See artikkel on masintõlgitud.

Atribuudid

Artikli ID: 918992 – viimati läbi vaadatud: 08/03/2013 08:02:00 – redaktsioon: 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 KbMtet
Tagasiside
avaScript" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("