2012-06-25 49 views
5

Tôi đang viết dịch vụ cửa sổ cần kết nối với máy chủ SQL để truy xuất một số thông tin. Tuy nhiên, máy chủ không cho phép tôi kết nối: login failed for user [domain/username]. Phần lạ là tất cả mọi thứ hoạt động hoàn toàn tốt đẹp từ bên trong SSMS. Tôi có thể đăng nhập, truy vấn cơ sở dữ liệu và mọi thứ hoạt động hoàn hảo. Nó chỉ thông qua các cửa sổ dịch vụ mà nó ném lỗi đó.Lỗi "đăng nhập không thành công cho người dùng [tên người dùng]" cho dịch vụ cửa sổ, nhưng đăng nhập SSMS hoạt động

Để tham khảo, đây là chuỗi kết nối Tôi đang sử dụng:

Data Source=sqlserveraddresshere;Initial Catalog=databasenamehere;User ID=domain\username;Password=password`

tôi nghi ngờ rằng điều này có liên quan, nhưng khi tôi cố gắng sử dụng an ninh tích hợp nó nhận được tên máy tính của tôi thay vì tên người dùng của riêng tôi. Tôi chắc chắn 99% điều này là do phần mềm chống vi-rút và phần mềm theo dõi của chúng tôi đang giả mạo người dùng quản trị viên ở đầu phiên cửa sổ của tôi để thực hiện công việc của mình. Trong mọi trường hợp, chỉ cần nhập tên người dùng và mật khẩu chính xác sẽ hoạt động không phân biệt, đúng không?

Tôi đã xem xét một số câu hỏi khác có cùng lỗi, nhưng tất cả đều không liên quan. Từ những gì tôi có thể nói với tất cả những người có thể nhận được thông qua SSMS có thể truy cập máy chủ SQL của họ thông qua mã, quá. Đây là câu hỏi tương tự nhất mà tôi có thể tìm thấy, mặc dù nó không giúp được gì nhiều: Can't connect to SQL Server: "Login failed for user "."

Ngoài ra, trước khi bạn hỏi, tôi ĐÃ ĐÃ CHẤP NHẬN CHO TYPOS. Trên thực tế, tôi thậm chí đã cố gắng sử dụng tài khoản của người dùng khác để đảm bảo không có điều gì đó thú vị xảy ra với quyền của tôi. Nếu bạn cần tôi đăng bất kỳ mã nào cho tôi biết. Cảm ơn bạn đã giúp đỡ!

UPDATE:

tôi đã thay đổi tài khoản cho các dịch vụ và chuyển trở lại IntegratedSecurity = true. Có vẻ như có gì đó đã thay đổi, bởi vì bây giờ tôi nhận được một lỗi hơi khác:

Cannot open database "mydatabase" requested by the login. The login failed. >Login failed for user 'MYDOMAIN\myUserName'.

+4

Bạn có thể vui lòng kiểm tra nhật ký sự kiện SQL (trong Management Studio, mở rộng máy chủ, mở rộng Quản lý, mở rộng Nhật ký máy chủ SQL) và cung cấp cho chúng tôi lỗi đầy đủ cho thông tin đăng nhập không thành công? Nó phải bao gồm một số lỗi, mức độ nghiêm trọng và trạng thái. –

+0

Việc kiểm tra nhật ký sự kiện SQL đã giúp tôi tìm hiểu điều gì đó mới: máy chủ mà tôi đang cố gắng truy cập được cấu hình chỉ dành cho Xác thực Windows. Tuy nhiên, đăng nhập vẫn không thành công khi tôi sử dụng WA vì nó vẫn gửi tên máy của tôi chứ không phải tên tài khoản. Tôi sẽ làm một số nghiên cứu thêm để thử và giải quyết vấn đề đó ngay bây giờ. Đây là lỗi đầy đủ (có thông tin đăng nhập ẩn danh): không thành công cho người dùng 'DOMAIN \ MACHINE_NAME $'. Lý do: Xác thực truy cập máy chủ dựa trên mã thông báo không thành công với lỗi cơ sở hạ tầng. Kiểm tra các lỗi trước đó. [CLIENT: 10.1.0.188] – VVander

+0

Lỗi có ** Mức độ nghiêm trọng ** và ** Trạng thái ** ở trên thông báo bạn đã đăng không? –

Trả lời

6

Nó hoạt động! Cuối cùng! Trước tiên, sử dụng đề xuất của Kevin (bình luận bên dưới câu hỏi gốc), tôi đã kiểm tra qua Nhật ký Máy chủ SQL (trong Management Studio, mở rộng máy chủ, mở rộng Quản lý, mở rộng Nhật ký Máy chủ SQL). Đây là cách tôi tìm thấy báo cáo lỗi dài hơn đã giúp tôi chẩn đoán vấn đề.

Tắt máy chủ không cho phép bất kỳ điều gì khác ngoài Xác thực Windows, vì vậy đó là lý do tại sao nỗ lực của tôi khi nhập UN/PW theo cách thủ công không thành công.

Tuy nhiên, tôi vẫn gặp sự cố khi máy chủ chuyển tên máy của tôi với tư cách người dùng thay vì tên người dùng của tôi. Điều này đã được sửa với Duncan's suggestion của việc thay đổi người dùng mà dịch vụ chạy dưới tên của tôi (nhấp chuột phải vào Services-> Properties-> Log On Tab).

Cảm ơn mọi người đã giúp đỡ của bạn, được nhiều người đánh giá cao.

+0

Để thêm vào câu trả lời của VVander, trên tab Đăng nhập, chọn nút radio "Tài khoản này" và nhấp vào trình duyệt. Nhập "tên của bạn" và hệ thống sẽ thực hiện tìm kiếm AD để xác thực tên người dùng. sau đó nhập mật khẩu hệ thống của bạn và áp dụng. Bạn sẽ nhận được một tin nhắn giống như "hệ thống chấp nhận tên người dùng/mật khẩu cho dịch vụ này ..". đó là nó. Nó sẽ hoạt động. – bluwater2001

0

Tên người dùng bạn đang chuyển đến SQL Server để đăng nhập là gì? Theo chuỗi kết nối, có vẻ như bạn đang sử dụng tên miền "tên miền \ tên người dùng" như người dùng. Mật khẩu sẽ được cập nhật thành mật khẩu chính xác thay vì "mật khẩu" theo nghĩa đen.

Tôi nhận được lỗi này khá một chút khi tôi bắt đầu lập trình trong C# viết một ứng dụng cơ sở dữ liệu được hỗ trợ. Tôi có một môi trường chế độ hỗn hợp cho ứng dụng của mình và tôi chuyển tên người dùng và mật khẩu SQL Server thay vì những gì tôi sử dụng để đăng nhập vào máy tính của mình. Đây là chính sách bảo mật mà tôi muốn thực thi để các cơ sở dữ liệu kiểm soát những người có thể đăng nhập và những quyền họ nhận được. Điều đó có phù hợp với những gì bạn đang cố gắng làm không? Nếu có, tôi có thể cung cấp hỗ trợ tốt hơn, cũng như mã cụ thể hơn.

+0

Xin lỗi nếu tôi không làm rõ điều này trong câu hỏi gốc. Tôi đã thay đổi các giá trị trong chuỗi kết nối trước khi đăng nó. Trong chương trình của tôi, tôi thực sự đang sử dụng tên người dùng và mật khẩu cần có quyền truy cập vào máy chủ. – VVander

+0

Khi tôi về nhà tối nay, tôi sẽ đăng chuỗi kết nối mà tôi sử dụng với đơn đăng ký của mình. Nó được thiết lập để sử dụng xác thực SQL Server, nhưng tôi đoán nó sẽ phục vụ như là một mô hình bắt đầu cho bất kỳ loại xác thực nào. – EastOfJupiter

+0

Cảm ơn, mọi trợ giúp đều được đánh giá cao. Mặc dù tôi đã sử dụng các ví dụ của connectionstring.com cũng như sử dụng lớp ConnectionStringBuilder của MS trong .NET, nếu chuỗi của bạn khác thì nó có thể giúp ích. – VVander

2

Bạn cần kiểm tra tài khoản người dùng mà dịch vụ đang chạy. Bởi những âm thanh của những thứ nó đang chạy như Local System mà sẽ cố gắng và vượt qua tên máy thông qua như đăng nhập.

Hãy thử thay đổi điều này thành người dùng miền ít đặc quyền nhất (hoặc để thử nghiệm, bạn có thể sử dụng tài khoản của riêng bạn) và sau đó cấp cho người dùng đó thông tin đăng nhập vào Máy chủ SQL. Điều đó sẽ làm các trick.

+0

Ok Tôi đã thay đổi tài khoản cho dịch vụ và chuyển về IntegratedSecurity = true. Dường như có gì đó đã thay đổi, bởi vì bây giờ tôi nhận được một lỗi hơi khác: Không thể mở cơ sở dữ liệu "mydatabase" được yêu cầu bởi thông tin đăng nhập. Đăng nhập thất bại. Đăng nhập không thành công cho người dùng 'MYDOMAIN \ myUserName'. Tôi cũng sẽ thêm câu hỏi này vào câu hỏi gốc. – VVander

+0

Bạn có thể cần tạo người dùng cơ sở dữ liệu để đăng nhập. Nhấp chuột phải vào đăng nhập trong Object Explorer trong SSMS và kiểm tra User Mappings trong khung bên tay trái. Hoặc bạn có thể chạy 'CREATE USER [blah] ĐỂ LOGIN [login]' đối với cơ sở dữ liệu –

+0

Cuối cùng, tôi đã nhập sai tên cơ sở dữ liệu và đó là lý do tại sao đề xuất của bạn không hoạt động lúc đầu và cho tôi lỗi đó. Điều này có thể giúp người khác mặc dù. – VVander

Các vấn đề liên quan