sp_setapprole (Transact-SQL)

Geçerli veritabanında bir uygulama rolü ile ilişkili izinleri etkinleştirir.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

sp_setapprole [ @rolename = ] 'role',
    [ @password = ] { encrypt N'password' } 
      |
        'password' [ , [ @encrypt = ] { 'none' | 'odbc' } ]
        [ , [ @fCreateCookie = ] true | false ]
    [ , [ @cookie = ] @cookie OUTPUT ]

Bağımsız değişkenler

  • [ rol adı = ] 'role'
    Geçerli veritabanı içinde tanımlanan uygulama rolü addır.roleİş sysname, ile hiçbir varsayılan.roleGeçerli veritabanında bulunması gerekir.

  • [ parola @ = ] {şifrelemek n'password' }
    uygulama rolüetkinleştirmek için gerekli parola değil.passwordİş sysname, ile hiçbir varsayılan.passwordodbc kullanarak aracılığıyla farklı şifrelemek işlev.Kullandığınızda şifrelemek işlev, parola koyarak Unicode dize dönüştürülmelidir n önce ilk tırnak işareti.

    Şifrele seçeneği kullandığınız bağlantıları desteklenmez SqlClient.

    Önemli notÖnemli

    odbc şifrelemek işlev şifrelemesağlamaz.Ağ üzerinden aktarılan parolaları korumak üzere bu işlev üzerinde güvenmemelisiniz.Bu bilgiler ağ üzerinden aktarılması, SSL veya IPSec kullanın.

  • @ şifrele 'Hiçbiri' =
    Hiçbir gizleme hile şaka kullanıldığını belirtir.Parola için geçirilen SQL Server olarak düz metin.Bu varsayılan seçenektir.

  • @ şifrelemek= 'odbc'
    odbc parolası odbc kullanarak karartan olduğunu belirtir şifrelemek için parolayı göndermeden önceişlev SQL Server Veritabanı Altyapısı. Yalnızca bir istemci odbc veya ole DB sağlayıcı için SQL Server kullanıyorsanız, bu belirtilebilir.

  • [ @ fCreateCookie = ] doğru | false
    Tanımlama bilgisi oluşturulacak olup olmadığını belirtir.doğru 1 örtülü olarak dönüştürülür.yanlış 0'a örtülü olarak dönüştürülür.

  • [ @ tanımlama bilgisi = ] @ tanımlama bilgisi çıktı
    Tanımlama bilgisi içeren bir çıkış parametresi belirtir.Tanımlama bilgisi yalnızca yoksa oluşturulur değerini @ fCreateCookie olan doğru.varbinary(8000)

Dönüş Kodu Değerleri

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

Açıklamalar

Bir uygulama rolü kullanarak etkinleştirildikten sonra sp_setapprole, kullanıcının sunucu bağlantısını keser veya yürütür kadar rolü etkin kalır sp_unsetapprole.sp_setapprole yalnızca direct tarafından yürütülen Transact-SQL ifadeleri.sp_setapprole başka bir saklı yordam veya kullanıcı tanımlı bir işlem içinde yürütülemiyor.

Uygulama rolleri genel bakış için bkz: Uygulama rolleri.

Güvenlik notuGüvenlik Notu

Ağ üzerinden iletilirken uygulama rolü parolayı korumak için her zaman şifreli bir bağlantı bir uygulama rolüetkinleştirirken kullanmalısınız...

Microsoft odbc şifrelemek seçeneği tarafından desteklenen değil SqlClient.kimlik bilgilerisaklamanız gerekir, onları şifre API işlevleri ile şifreleyebilirsiniz.Parametre password saklanır gibi tek yönlü bir karma.Önceki sürümleriyle uyumluluğu korumak için SQL Server, parola karmaıklık ilkesine göre zorunlu değil sp_addapprole.Parola karmaşıklık ilkesini zorlamak için Oluşturma uygulama ROLÜ.

İzinler

Üyelik gerektiren ortak ve bilgi rolü için parola.

Örnekler

A.Bir ' % s'rolünü uygulama rolü şifrele seçeneği olmadan etkinleştirme

Aşağıdaki örnek adında bir uygulama rolü etkinleştirir SalesAppRole, düz metin parola ile AsDeF00MbXX, oluşturulan izinleri özel olarak tasarlanmış uygulamanın kullandığı geçerli kullanıcı.

EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

B.Bir tanımlama bilgisi uygulama rolü etkinleştirme ve özgün içeriği geri dönme

Aşağıdaki örnek etkinleştirir Sales11 uygulama rolü parola fdsd896#gfdbfdkjgh700mM, bir çerez oluşturur veBu örnek, geçerli kullanıcı adını döndürür ve sonra yürüterek özgün içeriğe döner sp_unsetapprole.

DECLARE @cookie varbinary(8000);
EXEC sp_setapprole 'Sales11', 'fdsd896#gfdbfdkjgh700mM'
    , @fCreateCookie = true, @cookie = @cookie OUTPUT;
-- The application role is now active.
SELECT USER_NAME();
-- This will return the name of the application role, Sales11.
EXEC sp_unsetapprole @cookie;
-- The application role is no longer active.
-- The original context has now been restored.
GO
SELECT USER_NAME();
-- This will return the name of the original user. 
GO