İki yeni AD grubu oluşturdum ve bunları bir veritabanının kullanıcıları olarak ekledim ancak RED X ile gösteriyorlar. Bu ne anlama geliyor? Teşekkürler.
İki yeni AD grubu oluşturdum ve bunları bir veritabanının kullanıcıları olarak ekledim ancak RED X ile gösteriyorlar. Bu ne anlama geliyor? Teşekkürler.
Yanıtlar:
Bu, kullanıcının devre dışı bırakıldığı anlamına gelmez (yalnızca girişleri devre dışı bırakabilirsiniz ), kullanıcının veritabanına bağlantı ayrıcalıklarına sahip olmadığı anlamına gelir. Kullanıcılarınızın tam olarak nasıl oluşturulduğundan emin değilim, ancak bunu göstermenin en kolay yolu:
CREATE LOGIN u1 WITH PASSWORD = 'x', CHECK_POLICY = OFF;
GO
USE tempdb;
GO
CREATE USER u1 FROM LOGIN u1;
GO
ALTER LOGIN u1 DISABLE;
GO
-- u1 has no red x even though the login has been disabled
CREATE USER u2 WITHOUT LOGIN;
GO
-- check Object Explorer, u2 has no red x
DENY CONNECT TO u2;
GO
-- check Object Explorer, u2 now has a red x!
CREATE USER u3 WITHOUT LOGIN;
GO
-- check Object Explorer, u3 has no red x
REVOKE CONNECT FROM u3;
GO
-- check Object Explorer, u3 now has a red x!
( GO
Önbellekleme nedeniyle, komutlar arasında Nesne Gezgini'ni yenilemeniz gerekebilir .)
Düzeltmek için (veritabanına bağlanabilmelerini istediğinizi varsayarak):
GRANT CONNECT TO [DomainName\BI360Consultants];
GRANT CONNECT TO [DomainName\BI360Users];
Şüphesiz, veritabanında yapabilmeniz için neye ihtiyacınız olduğuna bağlı olarak daha fazla izin uygulamanız gerekir.
Bu duruma girmenin başka, daha belirsiz yolları olabilir (örneğin, MichaelK'ın cevabında açıklandığı gibi, bir kullanıcı eklemeden veritabanındaki bir role bir etki alanı grubu eklemek ). Dürüst olacağım, OP'nin ne yaptığını, eski ya da doğru yolu yapmaya çalıştığımda, bir kullanıcı mevcut olmadan bir role etki alanı grubunu ekleyemedim:
-- the old way
EXEC sys.sp_addrolemember N'db_datareader', N'[CAKE\MyGroup]';
Msg 15410, Seviye 11, Durum 1, Prosedür sp_addrolemember
Kullanıcı veya rol '[CAKE \ MyGroup]' bu veritabanında mevcut değil.
-- the right way
ALTER ROLE db_datareader ADD MEMBER [CAKE\MyGroup];
Msg 15151, Seviye 16, Durum 1
'CAKE \ MyGroup' asıl eklenemiyor, çünkü yok veya izniniz yok.
Tabii bu sonuçla böyle bir kullanıcıyı görmedim sysusers
(kullanımdan kaldırıldı; kullanmayı bırak) veya sys.database_principals
. Ancak, eğer bunu yaptıysam ( sepupic'in cevabı sayesinde ):
GRANT SELECT ON dbo.SomeTable TO [CAKE\MyGroup];
Sonra kullanıcı bu görünümlerde ve Object Explorer'da nedeniyle kırmızı x ile bir kullanıcı olarak ortaya çıktı HAS_DBACCESS() = 0
. Bu hala kabaca aynı anlama geliyor: "veritabanına erişemiyor." Yani yukarıdaki GRANT CONNECT
işe yaramazsa (benim durumumda, bu kırmızı x kurtulmak, ama ben aslında bu hesap olarak veritabanını sorgulamak için deneyin vermedi), ayrıca başarısız olduğunu bilerek, aşağıdakileri deneyin:
CREATE USER [DOMAIN\Group] FROM LOGIN [DOMAIN\Group];
Benim durumumda, bu kullanıcıya bağlanmaya izin verdiğimde, CREATE USER
komutu çalıştırmamı engelledi :
Msg 15023, Seviye 16, Durum 1, Satır 16
Kullanıcı, grup veya 'CAKE \ MyGroup' rolü geçerli veritabanında zaten var.
Bu durum , belirli sistem veritabanlarındaki konuk hesabı dışında guest
/ INFORMATION_SCHEMA
/ sys
- için her zaman geçerli olacaktır . Bunu görmezden gelin ve onları rahat bırakın.
Gönderen konu :sp_addrolemember
Gönderen konu :sys.sysusers
Sadece Aaron Bertrand'ın bu konuyu düzenleyen cevabına bir ekleme yapmak istiyorum:
Bu, kullanıcının veritabanına bağlantı ayrıcalıklarına sahip olmadığı anlamına gelir (kullanıcıları devre dışı bırakamazsınız, sadece oturum açabilirsiniz). Kullanıcılarınızın tam olarak nasıl oluşturulduğundan emin değilim ...
Bu, Windows
müdürlerle sadece aşağıdaki şekilde olabilir:
Windows
sunucu düzeyinde oturum açma var ancak söz konusu veritabanıyla eşleşmiyor, birisi veritabanı düzeyinde bu Windows anaparasına grant
/ deny
bazı izinlere karar veriyor . Bu durumda, ilgili kullanıcı / şema veritabanında oluşturulacak ve buna grant
/ ile satır deny
yazılacaktır sys.database_permissions
. Bu, bu veritabanına herhangi bir erişim sağlamaz, çünkü yeni oluşturulan kullanıcı hala connect
izni kaçırır ve OE'de kırmızı okla görürsünüz.
Sanırım neden olduğunu anladım.
Senaryo:
Domain \ BI360Users bir AD grubudur
Etki alanı \ BI360Users sunucuya giriş olarak eklenir (bağlantı izinleri vardır)
\ BI360Users alan adı, bir veritabanının kullanıcısı olarak mevcut DEĞİLDİR
Aşağıdakileri yaparım:
USE TEMPDB
GO
EXEC sp_addrolemember N'db_datareader', N'Doamin\BI360users'
GO
Başarıyla tamamlanır.
Yenile: KIRMIZI 'x' görünür.
Kullanıcı veritabanıyla eşlenmez:
Şimdi kullanıcıyı oluşturursam:
USE TempDB
GO
CREATE USER [Domain\BI360Users] FOR LOGIN [DOMAIN\BI360Users]
GO
Yani, ekran gösterisi yukarıda açıkça gösterilse bile, hiç kullanıcı olmadığı anlaşılıyor.
GRANT CONNECT
, orijinal cevabımın önerdiği gibi, sorunu çözmüş olmalıydı.
Kırmızı X, SQL Server'da oturum açmanın devre dışı bırakıldığı anlamına gelir