Aracılığıyla paylaş


sp_setapprole (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

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

Transact-SQL söz dizimi kuralları

Sözdizimi

sp_setapprole
    [ @rolename = ] N'rolename'
    , [ @password = ] N'password'
    [ , [ @encrypt = ] 'encrypt' ]
    [ , [ @fCreateCookie = ] fCreateCookie ]
    [ , [ @cookie = ] cookie OUTPUT ]
[ ; ]

Tartışmalar

[ @rolename = ] N'rolename'

Geçerli veritabanında tanımlanan uygulama rolünün adı. @rolenamesysname'dir ve varsayılan değer yoktur. @rolename geçerli veritabanında mevcut olmalıdır.

[ @password = ] { encrypt N'password' }

Uygulama rolünü etkinleştirmek için gereken parola. @password, sysname varsayılan değildir. @password ODBC encrypt işlevi kullanılarak gizlenebilir. işlevini kullandığınızda encrypt , parolanın ilk tırnak işaretinden önce yerleştirilerek N Unicode dizesine dönüştürülmesi gerekir.

Şifreleme seçeneği, SqlClient kullanan bağlantılarda desteklenmez.

Önemli

ODBC encrypt işlevi şifreleme sağlamaz. Ağ üzerinden iletilen parolaları korumak için bu işleve güvenmemelisiniz. Bu bilgiler bir ağ üzerinden iletilecekse TLS veya IPSec kullanın.

[ @encrypt = ] { 'none' | 'odbc' }

Parolayı SQL Server Veritabanı Altyapısı'na göndermeden önce şifreleme türünü belirtir. @encryptvarchar(10) şeklindedir ve bu değerlerden biri olabilir.

Değer Açıklama
none (varsayılan) Hiçbir gizlemenin kullanılmadığını belirtir. Parola SQL Server'a düz metin olarak geçirilir.
odbc ODBC'nin, parolayı SQL Server Veritabanı Altyapısı'na göndermeden önce ODBC encrypt işlevini kullanarak parolayı gizlediğini belirtir. Bu değer yalnızca BIR ODBC istemcisi veya SQL Server için OLE DB Sağlayıcısı kullanıyorsanız belirtilebilir.

[ @fCreateCookie = ] { 'true' | 'false' }

Tanımlama bilgisinin oluşturulup oluşturulmayacağını belirtir. @fCreateCookiebittir ve varsayılan değeridir 0.

true örtük olarak öğesine 1dönüştürülür. false örtük olarak öğesine 0dönüştürülür.

Tanımlama bilgisini içerecek bir çıkış parametresi belirtir. @cookie, varbinary(8000) türünde bir OUTPUT parametresidir. Tanımlama bilgisi yalnızca @fCreateCookie değeri ise trueoluşturulur.

Uyarı

Geçerli uygulama varbinary(50) döndürse de, uygulamaların belgelenmiş varbinary(8000)'i ayırması gerekir, böylece uygulama gelecekteki bir sürümde tanımlama bilgisi dönüş boyutu artarsa düzgün çalışmaya devam eder.

Dönüş kodu değerleri

0 (başarılı) ve 1 (başarısızlık).

Açıklamalar

Bir uygulama rolü kullanılarak sp_setapproleetkinleştirildikten sonra, kullanıcı sunucu bağlantısını kesene veya yürütene sp_unsetapprolekadar rol etkin kalır. Başka bir saklı yordamda, tetikleyicide veya kullanıcı tanımlı bir işlemde kullanamazsınız sp_setapprole . Yalnızca doğrudan Transact-SQL deyimleri olarak yürütülebilir.

Uygulama rollerine genel bakış için bkz. Uygulama Rolleri.

Bir uygulama rolünü etkinleştirirken, bir ağ üzerinden iletirken uygulama rolü parolasını korumak için her zaman şifreli bir bağlantı kullanmanız gerekir.

Microsoft ODBC encrypt seçeneği SqlClient tarafından desteklenmez. Kimlik bilgilerini depolamanız gerekiyorsa bunları şifreleme API'si işlevleriyle şifreleyin. parametre @password tek yönlü karma olarak depolanır. SQL Server'ın sp_addapprole önceki sürümleriyle uyumluluğu korumak için parola karmaşıklığı ilkesini zorunlu kılmaz. Parola karmaşıklığı ilkesini zorunlu kılmak için CREATE APPLICATION ROLE kullanın.

İzinler

Genel üyelik ve rol için parola bilgisi gerektirir.

Örnekler

A. Şifreleme seçeneği olmadan uygulama rolünü etkinleştirme

Aşağıdaki örnek, geçerli kullanıcı tarafından kullanılan uygulama için tasarlanmış izinlerle oluşturulan adlı SalesAppRolebir uygulama rolünü etkinleştirir. değerini güçlü bir parolayla değiştirin <password> .

EXECUTE sys.sp_setapprole 'SalesApprole', '<password>';
GO

Aşağıdaki örnek uygulama rolünü etkinleştirir Sales11 ve bir tanımlama bilgisi oluşturur. Örnek geçerli kullanıcının adını döndürür ve yürüterek sp_unsetapproleözgün bağlama geri döner. değerini güçlü bir parolayla değiştirin <password> .

DECLARE @cookie AS VARBINARY (8000);

EXECUTE sys.sp_setapprole
    'Sales11',
    '<password>',
    @fCreateCookie = true,
    @cookie = @cookie OUTPUT;

Uygulama rolü artık etkin. USER_NAME() , uygulama rolünün Sales11adını döndürür.

SELECT USER_NAME();

Uygulama rolünün ayarını kaldırın.

EXECUTE sys.sp_unsetapprole @cookie;
GO

Uygulama rolü artık etkin değil. Özgün bağlam geri yüklenir. USER_NAME() özgün kullanıcının adını döndürür.

SELECT USER_NAME();
GO