Hogyan lehet mozgatni egy SQL Server 2018 felhasználóneveket és jelszavakat a másikra SQL Server 2018

Miután mozog egy adatbázist az SQL Server kiszolgálón A-tól az SQL Server a B szerver, a felhasználó nem tud bejelentkezni az adatbázis szerver B. Emellett előfordulhat, hogy a következő hibaüzenet jelenik meg: Login failed for user „user”. (Microsoft SQL Server, Error: 18456). A problémát az okozza, mert a felhasználói nevek és jelszavak nem mozdultak el az SQL Server kiszolgálón A-tól az SQL Server a szerveren B.

Ahhoz, hogy megoldja ezt a problémát meg kell, hogy kövesse a következő algoritmus:

1. A kiszolgáló A útján a program „Database Manager» (MSDE adminisztrátor) csatlakozni az SQL Server, amely költözött az adatbázisból (ha már telepítve van a Microsoft SQL Server, akkor az SQL Server Management Studio (vagy SQL Manager).

Figyelmeztetés. A helyes futása, akkor először másolja a szöveget a script ezt az útmutatót WordPad programban. Ezután a WordPad másolja a szöveget a Jegyzettömb.

HA object_id (sp_hexadecimal ") nem nulla

DROP ELJÁRÁS sp_hexadecimal

CREATE ELJÁRÁS sp_hexadecimal

@hexvalue varchar (514) OUTPUT

DECLARE @charvalue varchar (514)

DECLARE @length int

DECLARE @hexstring char (16)

SELECT @charvalue = '0x'

SELECT @length = DataLength (@binvalue)

SELECT @hexstring = '0123456789ABCDEF'

While (@i <= @length)

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 @hexvalue = @charvalue

HA object_id (sp_help_revlogin ") nem nulla

DROP ELJÁRÁS sp_help_revlogin

CREATE ELJÁRÁS sp_help_revlogin @login_name sysName = NULL

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 kurzor

SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM

sys.server_principals p BAL REGISZTRÁCIÓ sys.syslogins l

BE (l.name = p.name) WHERE p.type IN ( 'S', 'G', 'U') ÉS p.name <> 'Sa'

DECLARE login_curs kurzor

SELECT p.sid, p.name, p.type, p.is_disabled, p.default_database_name, l.hasaccess, l.denylogin FROM

sys.server_principals p BAL REGISZTRÁCIÓ sys.syslogins l

BE (l.name = p.name) WHERE p.type IN ( 'S', 'G', 'U') ÉS p.name = @login_name

Lekérni a következő FROM login_curs INTO @SID_varbinary @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin

IF (@@ fetch_status = -1)

Print "Eiaia ia iaeaaiu.

SET @tmpstr = '/ * sp_help_revlogin script'

SET @tmpstr = '** generálva' + CONVERT (varchar, getdate ()) + 'a' + @@ SERVERNAME + '* /'

While (@@ fetch_status <> -1)

IF (@@ fetch_status <> -2)

SET @tmpstr = '- Belépés:' + @name

IF (@type IN ( 'G', 'U'))

BEGIN - NT hitelesített fiók / csoport

SET @tmpstr = 'CREATE LOGIN' + QUOTENAME (@name) + 'WINDOWS WITH DEFAULT_DATABASE = [' + @defaultdb + ']'

ELSE BEGIN - SQL Server hitelesítés

-- megszerezni a jelszót és 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

-- beszerzése jelszó politika állam

SELECT @is_policy_checked = CASE is_policy_checked Mikor 1 THEN 'ON', ha 0, akkor 'OFF' ELSE NULL végét sys.sql_logins WHERE name = @name

SELECT @is_expiration_checked = CASE is_expiration_checked Mikor 1 THEN 'ON', ha 0, akkor 'OFF' ELSE NULL végét sys.sql_logins WHERE name = @name

SET @tmpstr = 'CREATE LOGIN' + QUOTENAME (@name) + 'JELSZÓVAL =' + @PWD_string + 'hash-sel, SID =' + @SID_string + 'DEFAULT_DATABASE = [' + @defaultdb + ']'

IF (@is_policy_checked IS NOT NULL)

SET @tmpstr = @tmpstr + 'CHECK_POLICY =' + @is_policy_checked

IF (@is_expiration_checked IS NOT NULL)

SET @tmpstr = @tmpstr + 'CHECK_EXPIRATION =' + @is_expiration_checked

IF (@denylogin = 1)

BEGIN - a bejelentkezés férhetnek

SET @tmpstr = @tmpstr + „; DENY CONNECT SQL „+ QUOTENAME (@name)

ELSE IF (@hasaccess = 0)

BEGIN - bejelentkezés létezik, de nem férnek

SET @tmpstr = @tmpstr + „; REVOKE CONNECT SQL „+ QUOTENAME (@name)

IF (@is_disabled = 1)

BEGIN - belépés le van tiltva

SET @tmpstr = @tmpstr + „; ALTER LOGIN '+ QUOTENAME (@name) +' letiltani "

Lekérni a következő FROM login_curs INTO @SID_varbinary @name, @type, @is_disabled, @defaultdb, @hasaccess, @denylogin

Megjegyzés. A szkript létrehoz egy adatbázist mester két tárolt eljárások - sp_hexadecimal és sp_help_revlogin.

3. Futtassa a következő script:

A forgatókönyv, amely által létrehozott tárolt eljárást sp_help_revlogin. bejelentkezési szkript. Ez a szkript létrehozza a bejelentkezési adatokat a forrás (ID) és jelszó biztonságát.

4. A B szerver, indítsa el a programot adatbázis adminisztrátor (Administrator MSDE) (ha már telepítve van a Microsoft SQL Server, akkor az SQL Server Management Studio (vagy SQL kezelő)), majd csatlakozni az SQL Server, a helyet az adatbázisban.

Figyelmeztetés. végrehajtása előtt egység 5 olvasni az alábbi megjegyzéseket.

Elvégzése előtt a kimeneti script a példányt a B szerveren kell olvasni az alábbi adatok alapján.

2. A kiadási logineket titkosított jelszót. Ez annak köszönhető, hogy a jelenléte a kivonatolt érv a CREATE LOGIN nyilatkozatot. Ez az érvelés meghatározza, hogy a jelszó megadása után a PASSWORD érv, már hashelt.

3. Alaphelyzetben csak a tagok egy meghatározott rendszergazda szerver szerepét lehet futtatni egy SELECT szemszögéből sys.server_principals. A felhasználók létrehozhatnak, vagy hajtsa végre a végleges forgatókönyvet, ha tagja egy előre meghatározott rendszergazda kiszolgáló szerepét biztosítja számukra a szükséges engedélyekkel.

4. Amikor végre a lépéseket ebben a cikkben, információs adatbázis alapértelmezés szerint nem kerülnek egy adott bejelentkezést. Ez azért van, mert az alapértelmezett adatbázis nem érhető el a szerveren B. hogy meghatározza az alapértelmezett adatbázis bejelentkezést használja az ALTER LOGIN kijelentés bejelentkezési nevét és az adatbázis alapértelmezett érv.

5. Amikor válogatás a kiszolgálón Egy nem lehet az esetben és a B szerver - megszámoltuk. Ebben az esetben a költözés után a másolatot a szerveren B felhasználóneveket és jelszavakat, a felhasználóknak meg kell jelszavakat teljesen nagybetűvel.

6. Ezen kívül lehetőség van arra, amikor válogatás a szerver egy érzékeny, és a B szerver - nem tekinthető. Ebben az esetben a felhasználó nem lesz képes bejelentkezni a felhasználóneveket és jelszavakat, elmozdul a fokon a B szerveren, ha nem az alábbi feltételekkel:

# 9642; kezdeti jelszó nem tartalmazhat betűket;

# 9642; a betűk az eredeti jelszó nagybetűs.

Ha a regiszter figyelembe veszik, vagy nem veszik figyelembe, amikor válogatás egyidejűleg mindkét szerveren, ez a probléma nem fordul elő.

7. Ha a bejelentkezési név, amely már jelen van a példány a B szerveren, az azonos nevű a kimeneti forgatókönyvet, a következő hibaüzenet jelenik meg, amikor parancsfájl futtatásakor a példány a kiszolgálón:

ÜZENET. 15025, Level 16, State 1, 1-es vonal
A kiszolgáló fő „user” már létezik.

Ha a bejelentkezési név, amely már jelen van a példány a B szerveren, ugyanaz, mint a SID a kimeneti forgatókönyvet, amikor a szkript a példány a kiszolgálón a következő hibaüzenet jelenik meg:

ÜZENET. 15433, Level 16, State 1, 1-es vonal
A megadott biztonsági azonosító használt paraméter.

Következésképpen azt végre kell hajtani a következő lépéseket.

# 9642; Javítsa ki a hibát, a megfelelő üzenetet.

Kapcsolódó cikkek