Tôi biết điều này gần như trùng lặp với: The error "Login failed for user 'NT AUTHORITY\IUSR'" in ASP.NET and SQL Server 2008 và Login failed for user 'username' - System.Data.SqlClient.SqlException with LINQ in external project/class library nhưng một số thứ không thêm so với các ứng dụng khác trên máy chủ của tôi và tôi không chắc chắn lý do.
Hộp đang được sử dụng:
Web Box
SQL Box
Kiểm tra SQL Box
Ứng dụng của tôi:
Tôi đã có aASP.NET ứng dụng Web, tài liệu tham khảo một thư viện lớp có sử dụng LINQ-to-SQL. Chuỗi kết nối được thiết lập đúng trong thư viện lớp. Theo Login failed for user 'username' - System.Data.SqlClient.SqlException with LINQ in external project/class library Tôi cũng đã thêm chuỗi kết nối này vào Ứng dụng web.
Chuỗi kết nối sử dụng thông tin SQL như vậy (trong cả hai ứng dụng web và thư viện lớp):
<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" />
Kết nối này xác nhận là làm việc qua thêm nó vào Server Explorer. Đây là chuỗi kết nối mà tệp .dbml của tôi đang sử dụng.
Vấn đề:
tôi nhận được lỗi sau:
System.Data.SqlClient.SqlException: Login failed for user 'DOMAIN\MACHINENAME$'.
Bây giờ tham khảo này The error "Login failed for user 'NT AUTHORITY\IUSR'" in ASP.NET and SQL Server 2008 nó nói rằng thực sự là dịch vụ mạng nội bộ và sử dụng bất kỳ tên không miền khác sẽ không hoạt động.
Nhưng tôi bối rối vì tôi đã kiểm tra cả SQL Box và SQL Test Box SQL Management Studio và cả hai có NT AUTHORITY/NETWORK SERVICE
trong phần Bảo mật -> Đăng nhập, ở cấp cơ sở dữ liệu, không được liệt kê trong Bảo mật -> Người dùng, nhưng ở cấp độ cơ sở dữ liệu Bảo mật -> Người dùng Tôi có người dùng được hiển thị trong chuỗi kết nối.
Ở cấp độ NTFS trên máy chủ web, các quyền có NETWORK SERVICE có toàn quyền kiểm soát.
Lý do tại sao tôi bối rối là vì tôi có nhiều ứng dụng web khác trên Máy chủ Web của tôi, tham khảo cơ sở dữ liệu trên cả Hộp SQL và Hộp kiểm tra SQL và tất cả đều hoạt động. Nhưng tôi không thể tìm thấy sự khác biệt giữa chúng và ứng dụng hiện tại của tôi, ngoài việc tôi đang sử dụng thư viện lớp. Điều đó có quan trọng không? Kiểm tra các điều khoản NTFS, thiết lập các thông tin đăng nhập bảo mật ở cấp độ máy chủ và cơ sở dữ liệu, chuỗi kết nối và phương thức kết nối (thông tin SQL Server), và nhóm ứng dụng IIS và các tùy chọn thư mục khác, đều giống nhau.
Tại sao các ứng dụng này hoạt động mà không thêm tên máy $ vào quyền của một trong các hộp SQL của tôi? Nhưng đó là điều mà một liên kết đang bảo tôi làm gì để khắc phục vấn đề này.
Vì vậy, để tóm tắt lại, bạn không sử dụng người dùng cơ sở dữ liệu? Chúng tôi tạo ra một và có thể chuyển đổi giữa nó và SA tùy thuộc vào những gì chúng ta cần làm ... – jcolebrand
Trong chuỗi kết nối tôi đang sử dụng một người dùng cơ sở dữ liệu, mà tôi đã tạo trong khu vực Security -> Logins, thêm nó vào Security -> người dùng của cơ sở dữ liệu, và cho nó quyền dbo. Đó là cách tôi đã làm tất cả các ứng dụng khác của tôi quá. – SventoryMang