: Ben bu neredeyse kopyası olduğunu biliyorum ASP.NET ve SQL Server 2008 yılında "Oturum açma 'NT AUTHORITY \ IUSR' için başarısız oldu" hatası ve LINQ ile System.Data.SqlClient.SqlException içinde - kullanıcı 'kullanıcı adı' için başarısız Girişi harici proje / sınıf kitaplığı ancak sunucumdaki diğer uygulamalara kıyasla bazı şeyler eklenmiyor ve neden olduğundan emin değilim.
Kullanılan kutular:
Web Kutusu
SQL Kutusu
SQL Test Kutusu
Başvurum:
LINQ-to-SQL kullanan bir sınıf kitaplığına başvuran bir ASP.NET Web Uygulamam var. Bağlantı dizesi, sınıf kitaplığında doğru şekilde ayarlandı. Gereğince Oturum açma 'kullanıcı adı' için başarısız oldu - dış projede LINQ ile System.Data.SqlClient.SqlException / sınıf kütüphanesi Ayrıca Web Uygulaması için bu bağlantı dizesi ekledi.
Bağlantı dizesi SQL kimlik bilgilerini şu şekilde kullanır (hem web uygulamasında hem de sınıf kitaplığında):
<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" />
Bu bağlantının Sunucu Gezgini'ne eklenerek çalıştığı onaylandı. Bu .dbml dosyamın kullandığı bağlantı dizesi.
Sorun:
Şu hatayı alıyorum:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
Şimdi buna referans vermek ASP.NET ve SQL Server 2008'de "'NT AUTHORITY \ IUSR' kullanıcısı için oturum açma başarısız oldu" hatası , bunun gerçekten yerel ağ hizmeti olduğunu ve başka herhangi bir etki alanı olmayan adın kullanılmayacağını söylüyor.
Ama kafam karıştı çünkü hem SQL Box hem de SQL Test Box SQL Management Studio ve her ikisinin de NT AUTHORITY/NETWORK SERVICE
Güvenlik -> Girişler altında, veritabanı düzeyinde, Güvenlik -> Kullanıcılar altında listelenmemiş, ancak Güvenlik düzeyinde -> Kullanıcılar Bağlantı dizesinde kullanıcıyı görüntüledim.
Web sunucusunda NTFS düzeyinde, izinler NETWORK SERVICE'in tam denetimine sahiptir.
Kafamın karışık olmasının nedeni, Web Sunucumda hem SQL Kutusu hem de SQL Test Kutusundaki veritabanlarına başvuran birçok başka web uygulamasının olması ve hepsinin çalışmasıdır. Ancak sınıf kitaplığı kullanmam dışında onlarla mevcut uygulamam arasında bir fark bulamıyorum. Bu önemli mi? NTFS izinlerini, sunucu ve veritabanı düzeylerinde Güvenlik Oturum Açma ayarlarını, bağlantı dizesini ve bağlanma yöntemini (SQL Server kimlik bilgileri) ve IIS uygulama havuzunu ve diğer klasör seçeneklerini kontrol etmek, hepsi aynıdır.
Bu uygulamalar neden SQL kutularımdan birinin izinlerine makine adı $ eklemeden çalışıyor? Ama tek bağlantı bana bu sorunu çözmek için yapmamı söylediği şey.