Kuidas kanda sisselogimise ja paroolide vahel SQL Serveri eksemplari

Artiklite tõlked Artiklite tõlked
Artikli ID: 918992 - Vaadake tooteid, millega see artikkel seostub.
Laienda kõik | Ahenda kõik

Sellel veebilehel

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


    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.

Atribuudid

Artikli ID: 918992 - Viimati läbi vaadatud: 3. august 2013 - Redaktsioon: 2.0
Kehtib järgmise lõigu kohta:
  • 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
Märksõnad: 
kbsqlsetup kbexpertiseadvanced kbhowto kbinfo kbmt KB918992 KbMtet
Masintõlgitud
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

Andke tagasisidet

 

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