Veritabanı kullanıcısındaki RED X anlamı ne?


16

resim açıklamasını buraya girin

İ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:


21

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 CONNECTiş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 USERkomutu ç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

resim açıklamasını buraya girin

Gönderen konu :sys.sysusers

resim açıklamasını buraya girin


Bu benim için düzeltildi. Ancak başka bir temel sorun olmalı - kullanıcılarım komut dosyaları aracılığıyla oluşturuluyor ve birden çok veritabanına erişebiliyor. Bir DB üzerindeki yalnızca bir kullanıcının açık "CONNECT" izninin alınması gerekiyordu.
Morvael

5

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, Windowsmüdürlerle sadece aşağıdaki şekilde olabilir:

Windowssunucu düzeyinde oturum açma var ancak söz konusu veritabanıyla eşleşmiyor, birisi veritabanı düzeyinde bu Windows anaparasına grant/ denybazı izinlere karar veriyor . Bu durumda, ilgili kullanıcı / şema veritabanında oluşturulacak ve buna grant/ ile satır denyyazılacaktır sys.database_permissions. Bu, bu veritabanına herhangi bir erişim sağlamaz, çünkü yeni oluşturulan kullanıcı hala connectizni kaçırır ve OE'de kırmızı okla görürsünüz.


Teşekkürler, ama bir ok değil, KIRMIZI 'x' den bahsediyoruz.
Michael Kirkpatrick

Bu bir Studio görselleştirmesi meselesi, ama aynı şey
sepupic

0

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.

resim açıklamasını buraya girin

Kullanıcı veritabanıyla eşlenmez: resim açıklamasını buraya girin

Şimdi kullanıcıyı oluşturursam:

USE TempDB
GO
CREATE USER [Domain\BI360Users] FOR LOGIN [DOMAIN\BI360Users]
GO

KIRMIZI 'x' kaybolur: resim açıklamasını buraya girin

Yani, ekran gösterisi yukarıda açıkça gösterilse bile, hiç kullanıcı olmadığı anlaşılıyor.

İşte sysusers bilgileri: resim açıklamasını buraya girin


Bahsettiğim şey bu, ancak Win grubunu bir veritabanı rolüne başarıyla ekledikten sonra "Kullanıcı veritabanına eşlenmedi" diye düşünüyorsunuz.Bu aynı anda karşılık gelen kullanıcı ve şema oluşturuldu.
Sepupic

1
Etki alanı grubunu veritabanı rolüne eklemek dışında bir şey yapmış olmalısınız, çünkü bu işe yaramaz (SQL Server'ın eski bir sürümünde değilseniz). Ve bu senaryoda bile GRANT CONNECT, orijinal cevabımın önerdiği gibi, sorunu çözmüş olmalıydı.
Aaron Bertrand

0

Ben de aynı problemi yaşadım. SQL Server veritabanımın 'Güvenlik / Oturum Açma' bölümündeki kullanıcı özelliğinin Durum bölümünde 'Oturum Açma' durumunu 'Etkin' olarak değiştirerek düzelttim resim açıklamasını buraya girin

bu durumu değiştirdikten sonra kırmızı işaret kayboldu.


-3

Kırmızı X, SQL Server'da oturum açmanın devre dışı bırakıldığı anlamına gelir


Teşekkürler. Ancak etkinler.
Michael Kirkpatrick

Kullanıcılar devre dışı bırakılamaz.
Aaron Bertrand

Hesap, örnek düzeyinde Girişler klasöründe var mı? söz konusu veritabanında "Oturum Açma [YourLogin] için Kullanıcı Oluştur [Oturum Açma]" komutunu çalıştırırsa. Kırmızı X ortadan kalkmalıdır.
Goforebroke
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.