Почему Microsoft не поддерживает соединения OLE DB с SQL Azure?

На веб-сайте Подключение к SQL Azure с помощью OLE DB не поддерживается.

В Интернете есть другие места, где люди сообщают, что они отлично подходят для них после настройки имени сервера в строке соединения, например здесь и здесь. Даже SQL Server Analysis Services использует OLE DB для подключения к SQL Azure!

Я разрабатываю собственное/неуправляемое приложение в Delphi, которое подключается к SQL Server с помощью ADO через поставщика OLE DB для SQL Server. Я рассматриваю возможность добавления поддержки SQL Azure. Было бы очень полезно, если бы я мог повторно использовать большую часть своего кода без особых изменений. Я, вероятно, не стал бы рассматривать это направление иначе.

Было бы полезно, если бы Microsoft поняла, почему "OLE DB не поддерживается". Если в использовании OLE DB существуют определенные ограничения, каковы они? Может быть, я могу обойти их, или, может быть, это не повлияет на меня.

Microsoft также упоминает, что ODBC поддерживается. Могу ли я использовать "OLE DB provider to ODBC" и подключиться таким образом? Или любая комбинация, которая включает OLE DB "не поддерживается"?

Ответ 1

Вы можете использовать его, однако он не был полностью протестирован для всех случаев. По существу, он должен работать для большинства вещей, но может быть несколько краевых случаев, когда он не будет работать. Пока мы не документируем эти случаи, он остается неподдерживаемым. При этом, если бы вы использовали и сталкивались с ошибками, нам было бы интересно узнать об этом и установить приоритет в том, чтобы быть исправленным.

Ответ 3

Вы можете использовать ADO, используя собственный клиент SQL, хотя эту информацию трудно найти, вы можете прочитать об этом здесь http://msdn.microsoft.com/en-us/library/ms130978 (SQL.110).aspx и здесь http://msdn.microsoft.com/en-us/library/ms131035(SQL.110).aspx.

В строке соединения вместо использования Provider = SQLOLEDB; мы можем использовать Provider = SQLNCLI10;. Также рекомендуется использовать DataTypeCompatibility = 80;. Таким образом, поддерживаемая строка подключения к SQL Server будет выглядеть следующим образом:

"Provider = SQLNCLI10; Server = TCP: MyServerName.database.windows.net; Database = AdventureWorks2008R2; Uid = MyUserName @MyServerName; PWD = MyPa $$ w0rd; Encrypt = Да, DataTypeCompatibility = 80;"

Вы также можете добавить "MARS Connection = True"; к строке соединения для нескольких наборов записей.