Posting ini sebagai jawaban hanya karena terlalu panjang untuk dikomentari, dan karena akan relevan untuk pengguna lain segera.
SQL Server 2014 menambahkan beberapa izin tingkat server baru yang akan membantu dengan tepat skenario jenis ini - mereka dirancang dengan mempertimbangkan audit, tetapi jenis persyaratan ini tampaknya sesuai dengan tagihan itu juga. Anda bisa menambahkan dua izin berikut ke login tingkat server:
CONNECT ANY DATABASE
SELECT ALL USER SECURABLES
Yang pertama, seperti kedengarannya, memungkinkan login untuk terhubung ke basis data apa pun. Hal yang menyenangkan tentang ini adalah bahwa hal itu akan memungkinkan ini bahkan untuk database yang dibuat di masa depan (asalkan Anda tidak menetapkan penolakan eksplisit, yang bagaimana Anda dapat melindungi database pengguna tertentu dari login yang memiliki izin ini). Yang terakhir memungkinkan login untuk melakukan operasi baca pada basis data apa pun yang mereka akses - sehingga mereka dapat SELECT
dari tabel, tampilan, UDF, dll. Tetapi mereka tidak akan dapat melakukan UPDATE
operasi apa pun (saya belum menguji apakah izin ini memahami kapan suatu prosedur tersimpan melakukan DML). Ini bekerja sangat baik dalam kombinasi jika Anda ingin memberikan akses baca terbuka yang luas untuk seluruh server, atau agar lebih halus Anda dapat memberikan CONNECT
hak istimewa tradisional ke database tertentu, dan SELECT ALL USER SECURABLES
hak akanhanya berfungsi untuk basis data tersebut di mana login memiliki akses eksplisit ke.
The 2014 Perubahan keamanan didokumentasikan di sini - baik, sebagian; mereka lupa tentang izin tingkat basis data ALTER ANY DATABASE EVENT SESSION
- meskipun itu tidak relevan di sini.
Tidak ada izin tingkat-baca 'basis data server ' dan peran tingkat-server tidak dapat diberikan izin tingkat-database
Jadi ya, Anda harus memetakan pengguna ke database secara individual. Jika Anda menggunakan Active Directory, Anda dapat membuat grup windows, lalu berikan grup itu login ke SQL Server, lalu terapkan db_datareader di semua database untuk grup itu (Anda harus membuat pengguna di setiap database).
sumber