2009-02-24 72 views
5

Tôi gặp phải lỗi này khi cố gắng kết nối với máy chủ SQL từ xa bằng chuỗi kết nối này.Kết nối với máy chủ mssql từ máy từ xa cho phép Đăng nhập không thành công cho người dùng ''

Lỗi:

ODBC error: 28000118452[Microsoft][ODBC SQL Server Driver][SQL Server]Login failed for user ''. The user is not associated with a trusted SQL Server connection.

kết nối chuỗi:

"DRIVER={SQL Server};SERVER=testserver,1433;Trusted_Connection={Yes};"

Note chuỗi kết nối cùng này hoạt động tốt nếu tôi chỉ định máy tính cục bộ.

Câu hỏi của tôi: Tại sao máy chủ SQL từ xa nghĩ tên người dùng của tôi trống "?

Tôi đã đăng nhập hợp lệ bằng API WNetAddConnection Win32 vào máy từ xa trước tiên.

Chỉnh sửa: Tôi gặp lỗi tương tự khi kết nối từ studio Quản lý. Nhưng tôi nghĩ chương trình của tôi sẽ có cơ hội làm việc cao hơn kể từ khi tôi thiết lập kết nối với máy từ xa trước.

Chỉnh sửa2: Lưu ý Tôi thực sự cần một giải pháp sử dụng xác thực Windows. Tôi đã có nó làm việc với xác thực SQL.

+0

bạn có đang sử dụng xác thực tích hợp cửa sổ hoặc người dùng sql không? tôi không thấy nó trong chuỗi kết nối .. –

+0

xác thực cửa sổ, bạn có thể sử dụng Trusted_connection cho điều đó. –

+0

Cũng vậy nếu tôi sử dụng Bảo mật tích hợp = SSPI –

Trả lời

1

Suy nghĩ:

1.) là cả hai máy trong lĩnh vực giống nhau không? Tôi nghĩ có lẽ vì tài liệu tham khảo của bạn để tạo kết nối với WNet * ...

Nếu không, Bảo mật tích hợp sẽ cung cấp cho bạn các sự cố.

Chỉnh sửa: Tôi thấy rằng cả hai máy không nằm trong cùng một miền. Để sử dụng an ninh tích hợp, lĩnh vực mà các SQL Server là trong phải tin tưởng vào miền máy tính cục bộ của bạn là trong

Một Edit:. Corroboration for the above statement.

Từ liên kết: Thông báo lỗi này có thể xuất hiện nếu người dùng đăng nhập là một tài khoản miền từ một miền khác, không tin cậy từ miền của SQL Server. Bước tiếp theo cho việc này là di chuyển máy khách vào cùng miền với SQL Server và thiết lập nó để sử dụng tài khoản miền hoặc thiết lập sự tin tưởng lẫn nhau giữa các miền. Thiết lập sự tin tưởng lẫn nhau là một thủ tục phức tạp và cần được thực hiện với rất nhiều sự quan tâm về bảo mật và an toàn.

2.) Kiểm tra để đảm bảo SPN được đặt đúng trên máy chủ.

Look HERE để được hướng dẫn hơn, nhưng về cơ bản bạn cần làm:

-L setspn servername

một trong những SPN cần để trông giống như:

MSSQLSvc/servername: 1433

3 .) Một chỉnh sửa khác: Nếu không có máy nào trong miền, tất cả những gì bạn cần làm là có userid/mật khẩu cục bộ khớp trên cả hai máy.

Ví dụ: người dùng có tên là brian trên cả hai máy và cả mật khẩu người dùng đều là 'letmein'.

+0

1) Họ không phải trên một tên miền và có diff u/p. wnet api hoạt động tốt ngay cả khi bạn đang làm việc với 2 máy không nằm trong miền. –

+0

Máy chủ SQL không sử dụng api WNet * mặc dù. – Moose

+0

Hi Moose; Bạn có thể cho tôi một gợi ý về nơi để bắt đầu tìm kiếm về việc thiết lập sự tin tưởng này giữa các máy tính? –

-1

Tôi nghĩ rằng lỗi có thể là do phần UserId không được điền (chính xác cho Windows Auth).

Hãy thử một chuỗi kết nối như:

Server=myServerAddress;Database=myDataBase;Trusted_Connection=True;

Một thay thế mà được coi là giống hệt nhau:

Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=SSPI;

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