Aracılığıyla paylaş


sp_setapprole (Transact-SQL)

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

Topic link iconTransact-SQL sözdizimi kuralları

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

Bağımsız değişkenler

  • [ @rolename = ] 'role'
    Is the name of the application role defined in the current database.role is sysname, with no default.role must exist in the current database.

  • [ @password = ] { encrypt N'password' }
    Is the password required to activate the application role.password is sysname, with no default.password can be obfuscated by using the ODBC encrypt function.Kullandığınızda Şifreleme işlev girerek bir Unicode dizesi için parolayı dönüştürülmelin önce ilk tırnak işareti.

    Kullandığınız bağlantılarda encrypt seçeneği desteklenmiyor. SqlClient.

    Important noteImportant Note:

    ODBC Şifreleme işlev, şifreleme sağlamaz.Bu işlev, bir ağ üzerinden iletilen parolaları korumak üzere güvenmemelisiniz.Bu bilgileri ağ üzerinden aktarılan SSL veya IPSec kullanın.

  • Encrypt = 'none'
    Hiçbir gizleme hile şaka kullanıldığını belirtir.Parolayı geçirilir SQL Server düz metin olarak. Varsayılan değer budur.

  • @encrypt= 'odbc'
    ODBC parolası ODBC kullanarak karartan, belirtir. Şifreleme önce parolayı göndermek için işlevSQL Server Database Engine. Bu durum yalnızca, bir ODBC istemcisi'ni veya OLE DB sağlayıcı SQL Server için kullandığınız sırada belirtilebilir.

  • [ @fCreateCookie = ] true | false
    Specifies whether a cookie is to be created.true is implicitly converted to 1.false is implicitly converted to 0.

  • [ @cookie = ] @cookie OUTPUT
    Tanımlama bilgisini içeren bir çıkış parametresi belirtir.The cookie is generated only if the value of @fCreateCookie is true.varbinary(8000)

Dönüş Kodu Değerleri

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

Remarks

After an application role is activated by using sp_setapprole, the role remains active until the user either disconnects from the server or executes sp_unsetapprole.sp_setapprole can be executed only by direct Transact-SQL statements.sp_setapprole cannot be executed within another stored procedure or within a user-defined transaction.

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

Security noteSecurity Note:

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

The Microsoft ODBC encrypt option is not supported by SqlClient.Kimlik bilgileri saklamanız gerekir, bunları şifreleme APı'SI işlevleriyle şifreleyin.Parametre password tek yönlü bir karması saklanır. ' Ün önceki sürümüyle olan uyumluluğu korumak için SQL Server, parola karmaşıklığı ilkesine göre uygulanır. sp_addapprole.Parola karmaşıklık ilkesini zorlamak için kullanın. UYGULAMA ROLÜ OLUŞTURMA.

İzinler

Üyelik gerekir. Ortak ve parolayı rolün.

Örnekler

C.uygulama rolü encrypt seçeneği olmaksızın etkinleştirme

Aşağıdaki örnek adında bir uygulama rolü etkinleştirir. SalesAppRole, düz metin parolasıyla AsDeF00MbXX, geçerli kullanıcı tarafından kullanılan uygulama için özel olarak tasarlanmış izinlerle oluşturuldu.

EXEC sp_setapprole 'SalesApprole', 'AsDeF00MbXX';
GO

b.uygulama rolü ile tanımlama bilgisi etkinleştirme ve daha sonra özgün içeriğine dönülüyor.

Aşağıdaki örnek etkinleştirir Sales11 parola ile uygulama rolü fdsd896#gfdbfdkjgh700mM, bir çerez oluşturur. Bu örnek, geçerli kullanıcı adını döndürür ve sonra çalıştırarak ö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