Megosztás a következőn keresztül:


sp_migrate_user_to_contained (Transact-SQL)

A következőkre vonatkozik:SQL Server

Sql Server-bejelentkezésre leképezett adatbázis-felhasználót egy jelszóval rendelkező, tartalmazott adatbázis-felhasználóvá alakít át. Egy tartalmazott adatbázisban ezzel az eljárással távolíthatja el a függőségeket azon SQL Server-példányon, amelyen az adatbázis telepítve van. sp_migrate_user_to_contained választja el a felhasználót az eredeti SQL Server-bejelentkezéstől, így az olyan beállítások, mint a jelszó és az alapértelmezett nyelv, külön felügyelhetők a tárolt adatbázishoz.

sp_migrate_user_to_contained használható, mielőtt áthelyezné a tárolt adatbázist az SQL Server adatbázismotor egy másik példányára, hogy kiküszöbölje az aktuális SQL Server-példányok bejelentkezéseinek függőségeit.

Figyelmeztet

Legyen óvatos a sp_migrate_user_to_containedhasználatakor, mivel nem fogja tudni megfordítani az effektust. Ez az eljárás csak tartalmazott adatbázisban használható. További információ: Tartalmazott adatbázisok.

Szintaxis

sp_migrate_user_to_contained [ @username = ] N'user' ,
    [ @rename = ] { N'copy_login_name' | N'keep_name' } ,
    [ @disablelogin = ] { N'disable_login' | N'do_not_disable_login' }
[ ; ]

Érvek

Fontos

A kiterjesztett tárolt eljárások argumentumait a Szintaxis szakaszban leírt sorrendben kell megadni. Ha a paraméterek sorrenden kívül vannak beírva, hibaüzenet jelenik meg.

[ @username = ] N'felhasználónév'

Egy felhasználó neve az aktuális tárolt adatbázisban, amely egy SQL Server által hitelesített bejelentkezésre van leképezve. Az érték sysname, alapértelmezett értéke NULL.

[ @rename = ] N'copy_login_name' | N'keep_name'

Ha egy bejelentkezésen alapuló adatbázis-felhasználó más felhasználónévvel rendelkezik, mint a bejelentkezési név, a migrálás során a keep_name használatával őrizze meg az adatbázis felhasználónevet. A copy_login_name használatával hozza létre az új, a bejelentkezési névvel rendelkező adatbázis-felhasználót a felhasználó helyett. Ha egy bejelentkezésen alapuló adatbázis-felhasználó felhasználóneve megegyezik a bejelentkezési névvel, mindkét beállítás a név módosítása nélkül hozza létre a tartalmazott adatbázis-felhasználót.

[ @disablelogin = ] N'disable_login' | N'do_not_disable_login'

A bejelentkezés letiltására szolgál a master adatbázisban. Ha le szeretné tiltani a bejelentkezést, a kapcsolatnak meg kell adnia a tartalmazott adatbázis nevét initial catalog a kapcsolati sztring részeként.

Kódértékek visszaadása

0 (sikeres) vagy 1 (hiba).

Megjegyzések

sp_migrate_user_to_contained jelszóval hozza létre a tárolt adatbázis-felhasználót a bejelentkezés tulajdonságaitól és engedélyétől függetlenül. Az eljárás sikeres lehet például, ha a bejelentkezés le van tiltva, vagy ha a felhasználó megtagadja CONNECT engedélyt az adatbázishoz.

sp_migrate_user_to_contained a következő korlátozásokkal rendelkezik.

  • A felhasználónév még nem létezhet az adatbázisban.
  • A beépített felhasználók, például dbo és vendégnem konvertálhatók.
  • A felhasználó nem adható meg az aláírt tárolt eljárás EXECUTE AS záradékában.
  • A felhasználó nem rendelkezhet olyan tárolt eljárással, amely tartalmazza a EXECUTE AS OWNER záradékot.
  • sp_migrate_user_to_contained nem használható rendszeradatbázisban.

Biztonság

A felhasználók migrálása során ügyeljen arra, hogy ne tiltsa le vagy törölje az sql server-példány összes rendszergazdai bejelentkezését. Ha az összes bejelentkezés törölve van, olvassa el Csatlakozás az SQL Serverhez, ha a rendszergazdák ki vannak zárva.

Ha a BUILTIN\Administrators bejelentkezés jelen van, a rendszergazdák az alkalmazásuk elindításával csatlakozhatnak a Futtatás rendszergazdaként lehetőséggel.

Engedélyek

A CONTROL SERVER engedélyre van szükség.

Példák

Egy. Egyetlen felhasználó migrálása

Az alábbi példa egy Barrynevű SQL Server-bejelentkezést migrál egy jelszóval rendelkező adatbázis-felhasználóba. A példa nem módosítja a felhasználónevet, és engedélyezi a bejelentkezést.

EXECUTE sp_migrate_user_to_contained
    @username = N'Barry',
    @rename = N'keep_name',
    @disablelogin = N'do_not_disable_login';

B. Az összes bejelentkezéssel rendelkező adatbázis-felhasználó áttelepítése a tartalmazott adatbázis-felhasználókba bejelentkezés nélkül

Az alábbi példa az SQL Server-bejelentkezéseken alapuló összes felhasználót áttelepíti a jelszóval rendelkező adatbázis-felhasználókra. A példa kizárja a nem engedélyezett bejelentkezéseket. A példát a tárolt adatbázisban kell végrehajtani.

DECLARE @username AS SYSNAME;

DECLARE user_cursor CURSOR
    FOR SELECT dp.name
        FROM sys.database_principals AS dp
             INNER JOIN sys.server_principals AS sp
                 ON dp.sid = sp.sid
        WHERE dp.authentication_type = 1
              AND sp.is_disabled = 0;

OPEN user_cursor;

FETCH NEXT FROM user_cursor INTO @username;

WHILE @@FETCH_STATUS = 0
    BEGIN
        EXECUTE sp_migrate_user_to_contained
            @username = @username,
            @rename = N'keep_name',
            @disablelogin = N'disable_login';
        FETCH NEXT FROM user_cursor INTO @username;
    END

CLOSE user_cursor;

DEALLOCATE user_cursor;