Saya tahu ini hampir merupakan duplikat dari: Kesalahan "Login gagal untuk pengguna 'NT AUTHORITY \ IUSR'" di ASP.NET dan SQL Server 2008 dan Login gagal untuk 'nama pengguna' pengguna - System.Data.SqlClient.SqlException dengan LINQ di proyek eksternal / perpustakaan kelas tetapi beberapa hal tidak bertambah dibandingkan dengan aplikasi lain di server saya dan saya tidak yakin mengapa.
Kotak yang digunakan:
Kotak Web Kotak
Uji SQL
Kotak
SQL
Lamaran saya:
Saya memiliki Aplikasi Web ASP.NET, yang mereferensikan perpustakaan kelas yang menggunakan LINQ-to-SQL. String koneksi disiapkan dengan benar di perpustakaan kelas. Sesuai Login gagal untuk 'nama pengguna' pengguna - System.Data.SqlClient.SqlException dengan LINQ di perpustakaan proyek / kelas eksternal Saya juga menambahkan string koneksi ini ke Aplikasi Web.
String koneksi menggunakan kredensial SQL seperti itu (di aplikasi web dan pustaka kelas):
<add name="Namespace.My.MySettings.ConnectionStringProduction"
connectionString="Data Source=(SQL Test Box);Initial Catalog=(db name);Persist Security Info=True;User ID=ID;Password=Password"
providerName="System.Data.SqlClient" />
Sambungan ini dikonfirmasi berfungsi dengan menambahkannya ke Server Explorer. Ini adalah string koneksi yang digunakan file .dbml saya.
Masalah:
Saya mendapatkan kesalahan berikut:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
Sekarang referensi ini Kesalahan "Login gagal untuk pengguna 'NT AUTHORITY \ IUSR'" di ASP.NET dan SQL Server 2008 dikatakan bahwa itu benar-benar layanan jaringan lokal dan menggunakan nama non-domain lainnya tidak akan berfungsi.
Tapi saya bingung karena saya telah memeriksa SQL Box dan SQL Test Box SQL Management Studio dan keduanya ada di NT AUTHORITY/NETWORK SERVICE
bawah Keamanan -> Masuk, di tingkat basis data, yang tidak terdaftar di bawah Keamanan -> Pengguna, tetapi di tingkat basis data Keamanan -> Pengguna Saya memiliki pengguna yang ditampilkan dalam string koneksi.
Pada level NTFS di server web, izin memiliki NETWORK SERVICE yang memiliki kendali penuh.
Alasan mengapa saya bingung adalah karena saya memiliki banyak aplikasi web lain di Server Web saya, database referensi itu ada di SQL Box dan SQL Test Box, dan semuanya berfungsi. Tetapi saya tidak dapat menemukan perbedaan antara mereka dan aplikasi saya saat ini, selain saya menggunakan perpustakaan kelas. Apakah itu penting? Memeriksa izin NTFS, penataan Login Keamanan di tingkat server dan database, string koneksi dan metode penyambungan (kredensial SQL Server), dan kumpulan aplikasi IIS dan opsi folder lainnya, semuanya sama.
Mengapa aplikasi ini bekerja tanpa menambahkan machinename $ ke izin salah satu kotak SQL saya? Tapi itulah yang dikatakan oleh satu tautan kepada saya untuk memperbaiki masalah ini.