为什么微软不支持使用OLE DB连接SQL Azure?

10
MSDN网站上说:“使用OLE DB连接SQL Azure不受支持。”在网络上还有其他地方的人报告称,在调整连接字符串中的服务器名称后,它对他们很好,例如这里这里。 甚至SQL Server的分析服务使用OLE DB连接SQL Azure
我在Delphi中开发使用ADO通过SQL Server的OLE DB提供程序连接到数据库的本机/非托管应用程序。我正在考虑添加SQL Azure支持。如果我可以在不进行太多更改的情况下重用大部分代码,那将非常有帮助。否则,我可能不会考虑采取这个方向。
如果Microsoft能更清楚地说明“不支持OLE DB”原因,那将非常有帮助。 如果在使用OLE DB时有某些限制,那是什么?也许我可以解决它们,或者它可能不会影响我。
Microsoft还提到支持ODBC。那么我可以使用“OLE DB提供程序到ODBC”并以这种方式连接吗?还是任何包括OLE DB的组合都“不受支持”?

我刚刚在《Windows Azure平台》一书中注意到,SQL Azure门户曾经提供过一个OLE DB连接字符串。这本书大约是六个月前出版的。 - Troy
3个回答

7

您可以使用它,但并未对所有情况进行全面测试。基本上,它应该适用于大多数情况,但可能有一些边缘情况无法正常工作。在我们记录这些情况之前,它仍然不受支持。话虽如此,如果您使用时遇到错误,我们很乐意了解并优先修复。


谢谢,dunnry。这很有帮助。我会尝试一下。我的OLE DB使用将非常有限(仅限于firehose游标和更新命令)。如果我遇到差异,最有效的方法是如何让微软的正确产品团队知道? - Troy
我会直接通过博客 - http://blogs.msdn.com/sqlazure 与 SQL Azure 团队联系。或者,您也可以随时通过我的电子邮件(通过dunnry.com)发送邮件,我会进行转发。 - dunnry


4
您可以使用 SQL Native Client 来使用 ADO,虽然这些信息很难找到,但您可以在这里阅读相关内容:http://msdn.microsoft.com/en-us/library/ms130978(SQL.110).aspxhttp://msdn.microsoft.com/en-us/library/ms131035(SQL.110).aspx
在连接字符串中,我们可以使用 Provider=SQLNCLI10; 替代 Provider=SQLOLEDB;。此外,建议使用 DataTypeCompatibility=80;。因此,SQL Native Client 支持的连接字符串如下:
"Provider=SQLNCLI10;Server=tcp:MyServerName.database.windows.net;Database=AdventureWorks2008R2;Uid=MyUserName@MyServerName;Pwd=MyPa$$w0rd;Encrypt=Yes;DataTypeCompatibility=80;"
您还可以在连接字符串中添加 "MARS Connection=True;" 以获取多个记录集。

2
谢谢,这很有帮助。请注意,如果密码字段包含保留字符(如分号),则可以在其周围添加单引号。请参见https://dev59.com/yHA75IYBdhLWcg3wqK10 - Robert Calhoun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接