Saya membuat dua grup AD baru dan menambahkan mereka sebagai pengguna database tetapi mereka menunjukkan dengan X MERAH. Apa artinya ini? Terima kasih.
sumber
Saya membuat dua grup AD baru dan menambahkan mereka sebagai pengguna database tetapi mereka menunjukkan dengan X MERAH. Apa artinya ini? Terima kasih.
Itu tidak berarti pengguna dinonaktifkan (Anda hanya dapat menonaktifkan login ), itu berarti pengguna tidak memiliki hak koneksi ke database. Saya tidak yakin persis bagaimana pengguna Anda dibuat, tetapi cara termudah untuk menunjukkan ini adalah:
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!
(Anda mungkin perlu menyegarkan Object Explorer di antara GO
perintah karena, well, caching.)
Untuk memperbaikinya (dengan asumsi Anda benar-benar ingin mereka dapat terhubung ke database):
GRANT CONNECT TO [DomainName\BI360Consultants];
GRANT CONNECT TO [DomainName\BI360Users];
Tentunya Anda harus menerapkan lebih banyak izin tergantung pada apa yang Anda butuhkan untuk dapat dilakukan dalam database.
Mungkin ada cara lain yang lebih tidak jelas untuk masuk ke kondisi ini (misalnya menambahkan grup domain ke peran dalam database tanpa benar-benar menambahkan pengguna, seperti yang dijelaskan dalam jawaban MichaelK ). Meskipun saya akan jujur, ketika saya mencoba melakukan apa yang OP lakukan, dengan cara lama atau cara yang benar, saya tidak dapat menambahkan grup domain ke peran tanpa kehadiran pengguna:
-- the old way
EXEC sys.sp_addrolemember N'db_datareader', N'[CAKE\MyGroup]';
Msg 15410, Level 11, Status 1, Prosedur sp_addrolemember
Pengguna atau peran '[CAKE \ MyGroup]' tidak ada dalam database ini.
-- the right way
ALTER ROLE db_datareader ADD MEMBER [CAKE\MyGroup];
Msg 15151, Level 16, Negara 1
Tidak dapat menambahkan kepala sekolah 'CAKE \ MyGroup', karena tidak ada atau Anda tidak memiliki izin.
Tentu saja dengan hasil ini, saya tidak melihat pengguna seperti itu di sysusers
(usang; berhenti menggunakannya) atau sys.database_principals
. Namun, jika saya melakukan ini (berkat jawaban sepupik ):
GRANT SELECT ON dbo.SomeTable TO [CAKE\MyGroup];
Kemudian pengguna muncul dalam pandangan itu dan muncul sebagai pengguna di Object Explorer dengan x merah karena HAS_DBACCESS() = 0
. Yang jumlahnya kira-kira sama: "tidak dapat mengakses database." Jadi jika hal di atas GRANT CONNECT
tidak bekerja (dalam kasus saya, itu memang menghilangkan x merah, tapi saya tidak mencoba untuk benar-benar query database sebagai akun itu), juga coba yang berikut, mengetahui bahwa itu mungkin gagal:
CREATE USER [DOMAIN\Group] FROM LOGIN [DOMAIN\Group];
Dalam kasus saya, ketika saya memberikan koneksi ke pengguna ini, itu mencegah saya menjalankan CREATE USER
perintah:
Msg 15023, Level 16, Status 1,
Pengguna Line 16 , grup, atau peran 'CAKE \ MyGroup' sudah ada di database saat ini.
Keadaan ini akan selalu berlaku untuk guest
/ INFORMATION_SCHEMA
/ sys
- dengan pengecualian akun tamu pada basis data sistem tertentu. Abaikan itu dan tinggalkan mereka sendiri.
Dari yang sp_addrolemember
topik :
Dari yang sys.sysusers
topik :
Saya hanya ingin menambahkan jawaban Aaron Bertrand untuk yang ini:
Ini dapat terjadi dengan
Windows
kepala sekolah hanya dengan cara berikut:Windows
login ada di tingkat server tetapi tidak dipetakan ke database yang dimaksud, seseorang memutuskan untukgrant
/deny
beberapa izin untuk prinsipal Windows ini di tingkat database. Dalam hal ini pengguna / skema yang sesuai akan dibuat dalam database dan baris dengan inigrant
/deny
akan dituliskan kesys.database_permissions
. Ini tidak akan memberikan akses apa pun ke database ini karena pengguna yang baru dibuat masih melewatkanconnect
izin, dan Anda akan melihatnya di OE dengan panah merah.sumber
Saya pikir saya tahu mengapa itu terjadi.
Skenario:
Domain \ BI360Users adalah grup AD
Domain \ BI360Pengguna ditambahkan sebagai login ke server (memiliki izin koneksi)
Domain \ BI360Pengguna TIDAK ada sebagai pengguna basis data
Saya melakukan hal berikut:
Berhasil selesai.
Segarkan: RED 'x' muncul.
Pengguna TIDAK dipetakan ke database:
Jika sekarang saya membuat pengguna:
RED 'x' hilang:
Jadi, tampaknya tidak ada pengguna meskipun layar menunjukkan dengan jelas di atas.
Ini adalah info dari sysusers:
sumber
GRANT CONNECT
, seperti yang disarankan oleh jawaban awal saya, seharusnya sudah menyelesaikan masalah.Saya memiliki masalah yang sama. Saya memperbaikinya dengan mengubah status 'Login' menjadi 'Diaktifkan' di bagian Status properti pengguna di 'Keamanan / Loginpeksi database SQL server saya
tanda merah hilang setelah mengubah status ini.
sumber
Red X berarti login dinonaktifkan dengan SQL Server
sumber