2010-02-12 26 views
30

Tôi đã xáo trộn với điều này trong 2 ngày nay mà không cần đến bất kỳ giải pháp nào gần hơn. Tôi đã đọc 20-30 chủ đề alteast và stil không thể giải quyết điều này.Đăng nhập thất bại cho người dùng 'NT AUTHORITY NETWORK SERVICE'

Hãy giúp tôi.

Tôi đã tắt xác thực ẩn danh, bật tính năng mạo danh asp.net.

Tôi đã thêm <identity impersonate = "true" />

Tôi đã thêm một người dùng vào các thông tin đăng nhập bảo mật được kết nối với cơ sở dữ liệu tôi cố gắng để kết nối với

Đây là connectionstring tôi sử dụng:

Data Source=IPTOSERVER;Initial Catalog=Phaeton;User Id=User;Password=Password; 

errormessage:

Không thể mở cơ sở dữ liệu "Phaeton.mdf" theo yêu cầu e đăng nhập. Đăng nhập thất bại.

Đăng nhập không thành công cho người dùng 'NT AUTHORITY \ NETWORK SERVICE'.

+0

Bạn có thể gửi mã bạn đang sử dụng để kết nối với cơ sở dữ liệu? –

+0

Tôi sử dụng NHIbernate, trang web này đã hoạt động trên máy chủ của tôi trước khi tôi thay đổi thành máy chủ sql thay vì máy chủ sql express –

+0

Vui lòng chỉ cần làm theo Hướng dẫn về ASP.NET và SQL Server, http://msdn.microsoft.com/ vi-us/library/ms978512.aspx Có những cách được khuyến nghị để kết nối với SQL Server. Trân trọng, –

Trả lời

8

Thông báo lỗi bạn đang nhận được cho bạn biết rằng ứng dụng không kết nối được với sqlexpress db chứ không phải máy chủ sql. Tôi sẽ chỉ thay đổi tên của db trong máy chủ sql và sau đó cập nhật chuỗi kết nối cho phù hợp và thử lại.

thông báo lỗi của bạn khẳng định như sau:

Cannot open database "Phaeton.mdf" requested by the login. The login failed. 

Có vẻ với tôi bạn vẫn đang cố gắng để kết nối với cơ sở dữ liệu tập tin dựa, cái tên "Phaeton.mdf" không phù hợp với tên cơ sở dữ liệu sql mới của bạn "Phaeton".

Hy vọng điều này sẽ hữu ích.

+0

cuộc sống tiết kiệm nhờ rất nhiều. Tôi hoàn toàn bị mất rằng cơ sở dữ liệu tôi đã cố gắng sử dụng là sqlexpress. –

2

Yêu cầu đăng nhập SQL Server là DOMAIN\machinename$. Đây là cách gọi NT AUTHORITY\NETWORK SERVICE dường như SQL Server (và các máy chủ tập tin vv)

Trong SQL,

CREATE LOGIN [XYZ\Gandalf$] FROM WINDOWS 
+1

Bạn có thể cụ thể hơn những gì tôi cần làm không? gây ra điều này không làm cho không có ý nghĩa với tôi (nó thực sự không :)) –

2

Bạn nói nó làm việc tốt khi bạn đang sử dụng SQL Express phiên bản. Theo mặc định, các ấn bản tạo ra một cá thể có tên & chạy trong NT Authority \ Network Service.

SQL Server STD theo mặc định, cài đặt phiên bản mặc định & chạy trong NT Authority \ SYSTEM.

Bạn có phiên bản SQL đầy đủ & Phiên bản Express được cài đặt trên cùng một máy không?

  1. Có thể một nơi nào đó chuỗi kết nối vẫn đề cập đến trường hợp được đặt tên 'SQLEXPRESS' thay vì phiên bản mặc định được tạo bởi phiên bản đầy đủ.

  2. Chuỗi kết nối được định nghĩa ở đâu? Trong IIS hoặc mã của bạn? Đảm bảo rằng nếu được xác định ở nhiều nơi, tất cả các điểm đến cùng một cá thể SQL & cơ sở dữ liệu.

  3. Ngoài ra, hãy thử xem lỗi chi tiết có trong nhật ký lỗi SQL Server. Lỗi đăng nhập bản ghi sự kiện không hoàn thành vì lý do secuirty. Điều này cũng sẽ giúp bạn biết liệu kết nối đã được thực hiện với đúng SQL Server chưa.

  4. Cũng đảm bảo rằng máy mà trên đó SQL được cài đặt có thể truy cập & IIS đang cố truy cập cùng một máy. Trong công ty của tôi đôi khi do độ phân giải tên sai, truy vấn thất bại vì hầu hết các máy tính của chúng tôi đã cài đặt SQL & vùng truy vấn trong SQL Server sai.

  5. Đảm bảo rằng cơ sở dữ liệu tồn tại trong SQL Server.Tên được hiển thị trong cơ sở dữ liệu trong SQL Management Studio phải khớp với tên trong chuỗi kết nối.

+0

Tôi chỉ có máy chủ sql trên máy chủ này máy chủ. Tôi chỉ tạo chuỗi kết nối trong tệp Web.Config của mình. Tôi sẽ cố gắng xem xét tệp nhật ký ngay bây giờ và xem liệu tôi có gặp phải bất kỳ lỗi cụ thể nào khác không. cơ sở dữ liệu được kết nối với máy chủ sql và tôi đã tạo một người dùng giả sử sử dụng nó. Nó bằng cách nào đó chỉ tiếp tục đi cho NT Auth .. khi tôi muốn sử dụng sql auth –

80

Tôi đã trải qua một thông báo lỗi tương tự mà tôi nhận thấy trong Windows Event Viewer mà đọc:

Đăng nhập thất bại cho người sử dụng NT AUTHORITY \ NETWORK DỊCH VỤ '. Lý do: Không thể mở cơ sở dữ liệu được chỉ định rõ ràng. [KHÁCH HÀNG: địa phương máy]

Các giải pháp mà giải quyết vấn đề của tôi là:

  1. Đăng nhập vào SQLEXPRESS qua SQL Server Management Studio
  2. Đến "Security" thư mục cơ sở dữ liệu
  3. Nhấp chuột phải vào thư mục Người dùng
  4. Chọn "Người dùng mới ..."
  5. Thêm 'NT AUTHORITY \ NETWORK SERVICE' làm người dùng mới
  6. Trong khu vực thành viên Role dữ liệu, chọn db_owner
  7. Bấm OK

Dưới đây là một ảnh chụp màn hình ở trên: Screenshot of adding new user Network Service as db_owner to SqlExpress

+2

Bỏ phiếu của tôi đầu tiên, trên thực tế ý tưởng này là một trong những cuối cùng làm việc cho tôi cảm ơn, nhưng tên người dùng không quan trọng nó là tên đăng nhập bạn chọn cho nó mà nên được NT AUTHORITY \ NETWORK SERVICE. Một điều nữa là sử dụng \ char trong tên người dùng không được phép với SQL Server Express (2005) của tôi (tôi không chắc chắn nếu như vậy cho SQL nói chung). Cảm ơn một lần nữa! – Mubarek

+0

Ồ thật tuyệt vời! Tôi không thể tin được điều đó. Bỏ phiếu, và nếu tôi có đủ điểm, tôi sẽ cho bạn dấu kiểm. – Lukas

+1

Tôi biết rằng câu hỏi này đã gần bốn tuổi, nhưng tôi thực sự biết ơn vì đã tìm thấy nó. Tôi đã được hassling với cố gắng tìm ra cách để truy cập vào một cơ sở dữ liệu bên ngoài trong ba ngày, được stumped tại các điểm khác nhau trên đường đi. Đây là rào cản cuối cùng! Tôi đã từng làm việc với một kỹ sư thường nói rằng phần khó nhất của việc viết mã đã vượt qua những gargoyles tại cổng. Đây là gargoyle cuối cùng của tôi. Cảm ơn! –

6

Tôi thích giải pháp Jed nhưng vấn đề với điều đó là mỗi khi tôi xây dựng của tôi dự án trong chế độ gỡ lỗi, nó sẽ triển khai dự án cơ sở dữ liệu của tôi và loại bỏ người dùng một lần nữa. vì vậy tôi đã thêm tập lệnh MySQL này vào tập lệnh Post-Deployment. nó thực tế làm những gì Jed nói nhưng tạo ra người dùng mỗi khi tôi triển khai.

CREATE USER [NT AUTHORITY\NETWORK SERVICE] 
    FOR LOGIN [NT AUTHORITY\NETWORK SERVICE] 
    WITH DEFAULT_SCHEMA = dbo; 
Go 

EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\NETWORK SERVICE' 
+0

Bạn đã lưu tôi. Tôi đã sử dụng: NT AUTHORITY \ SYSTEM – ilans

7

Nếu được thông báo lỗi chỉ

là "Đăng nhập thất bại cho người sử dụng NT AUTHORITY \ NETWORK DỊCH VỤ '.", Sau đó cấp sự cho phép đăng nhập cho 'NT AUTHORITY \ NETWORK DỊCH VỤ'

bằng cách sử dụng

"sp_grantlogin 'NT AUTHORITY\NETWORK SERVICE'" 

khác nếu mes lỗi sage giống như

"Không thể mở cơ sở dữ liệu" Phaeton.mdf "do thông tin đăng nhập yêu cầu. Đăng nhập không thành công.Đăng nhập thất bại cho người sử dụng NT AUTHORITY \ NETWORK DỊCH VỤ '."

hãy thử sử dụng

"EXEC sp_grantdbaccess 'NT AUTHORITY\NETWORK SERVICE'" 

vào thư mục "cơ sở dữ liệu Phaeton".

+0

câu trả lời của bạn phù hợp với tôi –

1

Cách tốt nhất là để tạo ra một người dùng cho ứng dụng của bạn Không sử dụng 'NT AUTHORITY \ NETWORK SERVICE' vì người dùng của bạn có lỗ hổng riêng và đó là người dùng có quyền truy cập vào rất nhiều thứ ở cấp hệ điều hành. trong người dùng.

0

Tôi đang sử dụng Entity Framework để repupulate cơ sở dữ liệu của tôi, và người dùng được ghi đè mỗi khi tôi tạo ra cơ sở dữ liệu của tôi.

Bây giờ tôi chạy này mỗi khi tôi tải một DBContext mới:

cnt.Database.ExecuteSqlCommand("EXEC sp_addrolemember 'db_owner', 'NT AUTHORITY\\NETWORK SERVICE'"); 
Các vấn đề liên quan