2010-06-21 36 views
10

Tại MSDN website nó nói, "Đang kết nối đến SQL Azure bằng cách sử dụng OLE DB không được hỗ trợ."Tại sao Microsoft không hỗ trợ kết nối OLE DB với SQL Azure?

Có những nơi khác trên web, nơi folks báo cáo rằng nó hoạt động tốt đối với họ sau khi tinh chỉnh tên máy chủ trong chuỗi kết nối, chẳng hạn như herehere. Ngay cả SQL Server Analysis Services uses OLE DB to connect to SQL Azure!

Tôi phát triển ứng dụng gốc/không được quản lý trong Delphi kết nối với SQL Server bằng ADO thông qua nhà cung cấp OLE DB cho SQL Server. Tôi đang xem xét việc thêm hỗ trợ SQL Azure. Sẽ rất hữu ích nếu tôi có thể sử dụng lại phần lớn mã của mình mà không thay đổi quá nhiều. Tôi có lẽ sẽ không xem xét đi theo hướng này nếu không.

Sẽ rất hữu ích nếu Microsoft rõ ràng hơn về lý do tại sao "OLE DB không được hỗ trợ". Nếu có những hạn chế nhất định trong việc sử dụng OLE DB, chúng là gì? Có lẽ tôi có thể làm việc xung quanh họ, hoặc có lẽ nó sẽ không ảnh hưởng đến tôi.

Microsoft cũng đề cập rằng ODBC được hỗ trợ. Vì vậy, tôi có thể sử dụng "OLE DB nhà cung cấp để ODBC" và kết nối theo cách này? Hoặc là bất kỳ kết hợp nào bao gồm OLE DB "không được hỗ trợ"?

+0

Tôi chỉ nhận thấy trong cuốn sách "Windows Azure Platform" rằng một chuỗi kết nối OLE DB được sử dụng để được cung cấp trên cổng thông tin SQL Azure. Cuốn sách này đã được xuất bản khoảng sáu tháng trước. – Troy

Trả lời

7

Bạn có thể sử dụng nó, tuy nhiên nó chưa được kiểm tra kỹ lưỡng cho tất cả các trường hợp. Về cơ bản, nó sẽ làm việc cho hầu hết mọi thứ, nhưng có thể có một vài trường hợp cạnh mà nó sẽ không hoạt động. Cho đến khi chúng tôi ghi lại những trường hợp đó, nó vẫn không được hỗ trợ. Điều đó đang được nói, nếu bạn đã sử dụng và chạy vào các lỗi, chúng tôi rất muốn biết về nó và ưu tiên để được cố định.

+0

Cảm ơn, dunnry. Những sự giúp đỡ đó. Tôi sẽ thử. Việc sử dụng OLE DB của tôi sẽ khá hạn chế (với các con trỏ firehose và các lệnh cập nhật). Nếu tôi gặp phải sự khác biệt, cách hiệu quả nhất để cho nhóm sản phẩm phù hợp tại Microsoft biết là gì? – Troy

+0

Tôi sẽ liên hệ trực tiếp với nhóm SQL Azure thông qua blog - http://blogs.msdn.com/sqlazure. Ngoài ra, bạn luôn có thể gửi email theo cách của tôi (thông qua dunnry.com) và tôi sẽ chuyển hướng. – dunnry

4

Bạn có thể sử dụng ADO sử dụng SQL Native Client mặc dù thông tin này là khó có thể tìm thấy bạn có thể đọc về nó ở đây http://msdn.microsoft.com/en-us/library/ms130978(SQL.110).aspx và đây http://msdn.microsoft.com/en-us/library/ms131035(SQL.110).aspx.

Trong chuỗi kết nối thay vì sử dụng Provider = SQLOLEDB; chúng ta có thể sử dụng Provider = SQLNCLI10 ;. Ngoài ra, bạn nên sử dụng DataTypeCompatibility = 80 ;. Vì vậy, chuỗi kết nối được hỗ trợ bởi Native Native Client sẽ trông như sau:

"Provider = SQLNCLI10; Server = tcp: MyServerName.database.windows.net; Database = AdventureWorks2008R2; Uid = MyUserName @ MyServerName; Pwd = MyPa $$ w0rd ; Encrypt = Yes; DataTypeCompatibility = 80; "

Bạn cũng có thể thêm "MARS Connection = True;" vào chuỗi kết nối cho nhiều bản ghi.

+2

Cảm ơn; điều này rất hữu ích. Lưu ý bạn có thể ném dấu nháy đơn xung quanh trường mật khẩu nếu nó chứa các ký tự dành riêng như dấu chấm phẩy. xem http://stackoverflow.com/questions/3177861/escape-quote-in-web-config-connection-string –

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