2013-08-08 34 views
6

Sử dụng TAdoConnection trong D5 để kết nối với máy chủ Sql cục bộ trên máy tính Windows 7 64 bit bằng tài khoản được mật khẩu, tôi nhận được lỗi "đăng nhập thất bại cho người dùng sa", mặc dù thực tế là tôi đã xây dựng TStoConnection ConnectionString để bao gồm mật khẩu. Vào thời điểm sự kiện BeforeConnect khởi động, ConnectionString không còn chứa mật khẩu nữa. Tôi có thể đặt mật khẩu trong sự kiện WillConnect và kết nối sau đó hoạt động tốt.Mật khẩu TAdoConnection gửi AWOL

Câu hỏi của tôi là, loại bỏ mật khẩu từ ConnectionString là gì? Có lẽ một số tính năng bảo mật được thêm vào trong W7 - Tôi không nhớ là đã gặp phải vấn đề này trên XP.

Btw: Vấn đề này vẫn xảy ra ngay cả khi tôi đặt Thông tin bảo mật liên tục thành true trong ConnectionString - mật khẩu thậm chí không được lưu trữ trong DFM.

+0

Không mở kết nối đó tại thời gian thiết kế (hoặc thực hiện, nhưng với 'Thông tin bảo mật liên tục = True' trong chuỗi kết nối) và nó sẽ được lưu vào DFM. – TLama

+0

Tôi biết nó nên được lưu lại nhưng như tôi đã nói trong "Btw" của tôi, nó không. – MartynA

+0

Không sử dụng nút ConnectionString "Build ...", gọi hộp thoại Windows OLE DB Data Link Properties và nó sẽ ngắt mật khẩu khi bạn đóng nó. Tôi đã chỉ có vấn đề này với SQL Server, nó phải xác nhận chuỗi kết nối với nhà cung cấp thực tế. (SQLNCLI, SQLNCLI10, SQLOLEDB) Xây dựng chuỗi kết nối bằng tay và dán nó vào thuộc tính ConnectionString rồi lưu nó. – TDC

Trả lời

7

ConnectionString của bạn cần bao gồm "Thông tin bảo mật liên tục = True", xem prior topic. Tôi sử dụng hai const, một cho SQL Authentication và một cho Active Directory Authentication và chỉ cần điền vào chỗ trống.

const 
    csCONNECTION = 'Provider=%s;Password=%s;Persist Security Info=True;User ID=%s;Initial Catalog=%s;Data Source=%s'; 
    csADCONNECTION = 'Provider=%s;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=%s;Data Source=%s'; 
Các vấn đề liên quan