sp_migrate_user_to_contained (Transact-sql)

Eşlenen veritabanı kullanıcı dönüştüren bir SQL Serveriçerdiği veritabanı kullanıcısına şifre ile giriş. Kapsanan bir veritabanında, örneği üzerinde bağımlılıkları kaldırmak için bu yordamı kullanın. SQL Serververitabanı yüklendiği. sp_migrate_user_to_contained kullanıcı asıl adresinden ayıran SQL Servergiriş, böylece öyle aynı derecede parola ve varsayılan dil ayarlarını içerdiği veritabanı için ayrı ayrı yönetilebilen. sp_migrate_user_to_contained için farklı bir örneği bulunan veritabanı geçmeden önce kullanılabilir SQL Server Veritabanı Altyapısıgeçerli bağımlılıkları ortadan kaldırmak için SQL Serverörnek oturumları.

Not bu yordamı, yalnızca içerdiği veritabanı kullanılır. Daha fazla bilgi için, bkz. İçerdiği veritabanları.

Sözdizimi

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

Bağımsız değişkenler

  • @username =n'user'
    Eşleşen geçerli veritabanında bulunan bir kullanıcı adı bir SQL Servergiriş doğrulaması. Değeri sysname, varsayılan NULL.

  • @rename =N'copy_login_name' | n'keep_name'
    Geçerli bir oturum açma veritabanı kullanıcı oturum açma adını farklı bir kullanıcı adından varsa kullanın keep_nameveritabanı kullanıcı adı geçiş sırasında tutulacak. Kullanım copy_login_name, yerine kullanıcı oturum açma adı ile yeni bulunan veritabanı kullanıcı oluşturmak için. Geçerli bir oturum açma veritabanı kullanıcı oturum açma adı aynı kullanıcı adı varsa, her iki seçenek de içerdiği veritabanı kullanıcı adını değiştirmeden oluşturun.

  • @ disablelogin =N'disable_login' | n'do_not_disable_login'
    disable_loginmaster veritabanında oturum açma devre dışı bırakır. Oturum açma devre dışı bırakıldığında bağlanmak için bağlantı içerdiği veritabanı adı olarak sağlamanız gerekir initial catalogbağlantı dizesi bir parçası olarak.

Dönüş Kodu Değerleri

0 (başarılı) veya 1 (hata)

Açıklamalar

sp_migrate_user_to_contained içerdiği veritabanı kullanıcı parola, özelliklerini veya oturum açma izinlerine bakılmaksızın oluşturur. Örneğin, yordam oturum açma devre dışı bırakılmışsa veya kullanıcıya verilmezse başarılı olabilir CONNECTveritabanı izni.

sp_migrate_user_to_contained aşağıdaki kısıtlamaları vardır.

  • Kullanıcı adı veritabanında zaten olamaz.

  • Dahili kullanıcılar, örneğin dbo ve konuk, dönüştürülemez.

  • Kullanıcı belirtilemez EXECUTE ASimzalı bir saklı yordam fıkra.

  • Kullanıcı içeren saklı yordam sahibi olamaz EXECUTE AS OWNERtümcesi.

  • sp_migrate_user_to_contained bir sistem veritabanı kullanılamaz.

Güvenlik

Kullanıcıları geçirirken, devre dışı veya örneğinden tüm Yöneticisi oturumu silmek değil dikkatli olmak SQL Server. Tüm oturumları sildiyseniz, bakın Sistem yöneticileri kilitlendi SQL Server'a bağlan.

Eğer BUILTIN\Administrators giriş mevcut olduğundan, Yöneticiler kendi uygulamasını kullanarak başlatarak bağlanabilir koşmak aynı derecede idareci seçeneği.

İzinler

Gerektirir CONTROL SERVERizni.

Örnekler

A.Tek bir kullanıcıya geçiş

Aşağıdaki örnek geçirir bir SQL Servergiriş adlı Barry, içerdiği veritabanı kullanıcı parola ile. Örneğin korur mu değil kullanıcı adını değiştirmek ve oturum açma etkin olarak korur.

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

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

B.Veritabanı kullanıcı oturumları olmadan içerdiği tüm veritabanı kullanıcı oturumu ile geçirme

Aşağıdaki örnek esas alan tüm kullanıcıların geçirir SQL Serveriçindeki oturuma veritabanı kullanıcı ile parola. Örneği etkin olmayan oturumları dışlar. Örnekte içerilen veritabanında yürütülmelidir.

DECLARE @username sysname ;
DECLARE user_cursor CURSOR
    FOR 
        SELECT dp.name 
        FROM sys.database_principals AS dp
        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 ;

DECLARE @username sysname ;
DECLARE user_cursor CURSOR
    FOR 
        SELECT dp.name 
        FROM sys.database_principals AS dp
        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 ;

Ayrıca bkz.

Kavramlar

Kısmen bulunan bir veritabanına geçirme

İçerdiği veritabanları