SQL Server'deki msdb veritabanında konuk kullanıcıyı devre dışı bırakmamalısınız

Bu makalede, SQL Server'deki msdb veritabanında konuk kullanıcıyı devre dışı bırakdığınızda oluşabilecek çeşitli sorunlar açıklanmaktadır.

Özgün ürün sürümü: SQL Server
Özgün KB numarası: 2539091

Msdb veritabanında konuk kullanıcının devre dışı bırakıldığında ortaya çıktığı belirtiler

Bazı Microsoft SQL Server özelliklerinin çalışması için konuk kullanıcının msdb veritabanında etkinleştirilmesi gerekir. Bu makalede, msdb veritabanında konuk kullanıcıyı devre dışı bırakırsanız karşılaşabileceğiniz bazı sorunlar açıklanmaktadır. Makale ayrıca bu sorunların nasıl çözüleceğini de sağlar.

Msdb veritabanında konuk kullanıcı devre dışı bırakıldığında, kullanıcı Management Studio'daki Veritabanları düğümünü genişlettiğinde veya bir sunucu uygulaması SQL Server bağlanmaya çalıştığında hata MSSQLSERVER_916 alabilirsiniz. Bu sorun oluştuğunda ortamınızda aşağıdaki belirtilerden biriyle veya daha fazlası ile karşılaşabilirsiniz.

Not

Hata metni senaryoya bağlı olarak biraz değişiklik gösterebilir. Ancak, temel alınan neden temelde aynıdır. Bu neden msdb veritabanındaki ayrıcalıkların yetersiz olmasıdır. Bu belirtiler, Nesne Gezgini her veritabanının İlke Tabanlı Yönetim durumunu göstermeye çalıştığında ortaya çıkar. Nesne Gezgini bu bilgi için msdb veritabanını sorgulamak için geçerli oturum açma izinlerini kullanır ve bu da hataya neden olur.

Belirti 1

SQL Server 2012 ve sonraki ortamlarda, SQL Server'da Sysadmin sabit sunucu rolünün üyesi olmayan ve msdb'de başka bir şekilde uygun izinler verilmeyen bir kullanıcı Veritabanları düğümünü veya bu düğüm altındaki klasörlerden herhangi birini genişletmeye çalıştığında, aşağıdakine benzer bir hata iletisi alır:

İstenen iletişim kutusu gösterilemiyor. EK BİlGİLER: İstenen iletişim kutusu gösterilemiyor. (SqlMgmt) Transact-SQL deyimi veya toplu işlemi yürütülürken bir özel durum oluştu. (Microsoft.SqlServer.ConnectionInfo)

Sunucu asıl <kullanıcı adı> , geçerli güvenlik bağlamı altında veritabanı msdb'sine erişemiyor. (Microsoft SQL Server, Hata: 916)

Belirti 2

SQL Server 2008 ve SQL Server 2008 R2 ortamlarında, SQL Server'da Sysadmin sabit sunucu rolünün üyesi olmayan ve msdb'de uygun izinlere sahip olmayan bir kullanıcı Veritabanları düğümünü veya bu düğüm altındaki klasörleri genişletmeye çalıştığında, aşağıdakine benzer bir hata iletisi alır:

Bu istek için veri alınamadı. (Microsoft.SqlServer.Manager.Sdk.Sfc)
Ek Bilgiler:
Transact-SQL deyimi veya toplu işlemi yürütülürken bir özel durum oluştu.
(Microsoft.SqlServer.ConnectionInfo)
Sunucu sorumlusu <Servername> , geçerli güvenlik bağlamı altında "msdb" veritabanına erişemiyor. (Microsoft SQL Server, Hata: 916)

Not

Veritabanı düğümünün genişletilmesi, konuk hesabı için msdb veritabanına bağlanma izni gerektiren etkinliklerden yalnızca biridir. Msdb veritabanına en az düzeyde erişim gerektiren herhangi bir etkinlikte de benzer bir hata oluşabilir.

Sorunu belirleme

Konuk kullanıcının msdb veritabanında doğru yapılandırılıp yapılandırılmadığını belirlemek için aşağıdaki sorguyu sysadmin sabit sunucu rolünün bir üyesi olarak çalıştırın:

USE msdb;

SELECT prins.name AS grantee_name, perms.*

FROM sys.database_permissions AS perms

JOIN sys.database_principals AS prins

ON perms.grantee_principal_id = prins.principal_id

WHERE prins.name = 'guest' AND perms.permission_name = 'CONNECT';

GO

Aşağıdakine benzer bir sonuç kümesi alırsanız, konuk kullanıcı gerekli izinlere sahiptir.

grantee_name Sınıfı class_desc major_id minor_id grantee_principal_id grantor_principal_id Türü permission_name Durum State_desc
Konuk 0 VERİTABANI 0 0 2 1 CO BAĞLAMAK G GRANT

Boş bir sonuç kümesi alırsanız veya burada bahsedilen sonuç kümesinde DENY gösteriliyorsa state_desc , msdb veritabanında konuk kullanıcı devre dışı bırakılır. Veritabanına bağlandığınızda 916 hatası alabilirsiniz.

Sorunu çözme

Sorunu çözmek için sysadmin sabit sunucu rolünün bir üyesi olarak SQL Server Management Studio aşağıdaki sorguyu çalıştırın:

USE msdb;

GRANT connect TO guest;

GO

Başvurular