Sql server ADO与OLE DB有什么关系? 问题: ADO与OLEDB有什么关系?这意味着什么 这是否意味着,如果我们切换到ADO,它将无法与SQL Server 2014一起工作,而且永远不会工作
Microsoft已宣布弃用SQL Server本机 客户端OLE DB提供程序,并且SQL Server 2012是最新版本 SQL Server以支持提供程序 上下文 我们是一家德尔福商店。我们使用的是Delphi 7和BDE,希望从BDE迁移,也可能迁移到Delphi XE2或更新版本。我们选择的数据库管理系统是Microsoft SQL Server。我们考虑转移到ADO,但担心它的未来证明在上述声明的背景下。 这种关系的想法行吗Sql server ADO与OLE DB有什么关系? 问题: ADO与OLEDB有什么关系?这意味着什么 这是否意味着,如果我们切换到ADO,它将无法与SQL Server 2014一起工作,而且永远不会工作,sql-server,database,delphi,oledb,ado,Sql Server,Database,Delphi,Oledb,Ado,Microsoft已宣布弃用SQL Server本机 客户端OLE DB提供程序,并且SQL Server 2012是最新版本 SQL Server以支持提供程序 上下文 我们是一家德尔福商店。我们使用的是Delphi 7和BDE,希望从BDE迁移,也可能迁移到Delphi XE2或更新版本。我们选择的数据库管理系统是Microsoft SQL Server。我们考虑转移到ADO,但担心它的未来证明在上述声明的背景下。 这种关系的想法行吗 Delphi <---> ADO <-
Delphi <---> ADO <---> OLE DB <---> DBMS
Delphi ADO OLE DB数据库管理系统
我是否正确理解Microsoft希望迁移到:
Delphi <---> ADO <---> OLE DB-bridge-ODBC <---> ODBC <---> DBMS
Delphi-ADO-oledb-bridge-ODBC-DBMS
他们的意思是不再创建SQL Server本机客户端OLEDB提供程序。有许多OLE DB提供程序可用于访问SQL Server:
- 用于SQL Server的Microsoft OLE DB提供程序(SQLOLEDB) 这是操作系统本身附带的SQL Server 2000时代的OLEDB提供程序
- SQL本机客户端9.0 OLE DB提供程序(SQLNCLI)
- SQLServer2005随附
- 必须在客户端PC上手动安装
- 可以连接到SQL Server 7、2000和2005
- 可以连接到SQL Server 2008,但他们建议您使用新的本机客户端
- SQL Server本机客户端10.0 OLE DB提供程序(SQLNCLI10)
- SQL Server 2008随附
- 必须在客户端PC上手动安装
- 可以连接到SQL Server 2000、2005、2008和2008 R2
- SQL Server本机客户端11.0 OLE DB提供程序(SQLNCLI11)
- SQL Server 2012随附
- 必须在客户端PC上手动安装
- 可以连接到SQL Server 2005、2008、2008 R2和2012
- 如果用于连接SQL Server 2000,将引发错误
- SQL本机客户端OLE DB提供程序
- SQL本机客户端ODBC提供程序
- 阿多
- 有机发光二极管
- SQLOLEDB:用于SQL Server的Microsoft OLE DB提供程序
- SQLNCLI:SQL本机客户端9.0 OLE DB提供程序
- SQLNCLI10:SQL Server本机客户端10.0 OLE DB提供程序
- SQLNCLI11:SQL Server本机客户端11.0 OLE DB提供程序
- MSDASQL:用于ODBC驱动程序的Microsoft OLE DB提供程序
- {SQL Server}:SQLSRV32.dll
- {SQL Server本机客户端10.0}:sqlncli10.dll
- {SQL Server本机客户端11.0}:sqlncli11.dll
- 有机发光二极管
sql := 'SELECT * FROM Orders';
qry := DatabaseHelper.Execute(sql);
while not qry.EOF do
begin
//...
//Oh, this order needs to be frobbed.
DatabaseHelper.ExecuteNoRecords('UPDATE ORDERS SET Frob=1 WHERE OrderID='+IntToStr(orderID));
qry.Next;
end;
您刚刚尝试对仍在迭代记录集的连接执行第二项操作。SQL Server不支持这一点。幸运的是,OLEDB提供程序知道这一点,并且会默默地为您打开第二个连接(一个新的spid
和所有东西)来执行该操作
ODBC驱动程序没有这样的帮助。如果你改用ODBC驱动程序,但没有意识到你有这些微妙的“问题”,你的应用程序很快就会死掉。你担心自己是未来的证明,而你却在使用Delphi 7和BDE?获取Delphi 10,迁移到FireDac并完成它。我觉得BDE->FireDac实际上相当无痛,甚至比BDE->ADO更简单。为什么要迁移到XE2?这似乎很疯狂-如果你要升级,那么升级。为什么中途停下来?无论如何,根据您的问题,MS希望您继续使用ODBC。BDE、ADO和FireDac组件都可以通过ODBC进行连接,因此,无论您使用哪种组件,如果升级到SQL Server 2012之后,您都需要更改为ODBC,如果您还没有这样做的话。因为我们几年前购买了XE2,但最终没有在当时采取行动,现在就想切换。好吧,FireDac推出了XE6,将一项早已过时、将近30年历史的技术升级为一项17年历史的老化技术似乎很愚蠢,因为你可以直接跳到今天,一次付清所有技术债务。FireDAC是专有的,就像之前的BDE和介于两者之间的DBExpress一样。共同主题?当propietor决定继续前进时,你必须继续前进,否则就会陷入困境(贬低是提高收入的好方法,迫使客户升级)。我会避免使用Delphi特定的数据访问技术,除非您绝对被迫使用它,例如用于跨平台的FMX支持。使用“原始”ADO或ODBC或多种包装器之一。只有OLEDB的SQL Server本机客户端不推荐使用。您仍然可以通过ADO、ODBC或其他提供程序使用SQL Server。