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.