2016-03-09 3 views
2

Вопрос

  1. Как ADO, связанные с OLE DB и что означает, что annoucement of Microsoft to drop OLE DB Providers for SQL Server значит?
  2. Означает ли это, что если мы переключимся на ADO, он не будет работать с SQL Server 2014 и никогда?

Microsoft объявила устаревания в SQL Server Native Client поставщика OLE DB, и что SQL Server 2012 является последней версией из SQL Server для поддержки провайдера.Как ADO связана с OLE DB?

Контекст

Мы магазин Delphi. Мы находимся на Delphi 7 и BDE и хотим уйти от BDE, возможно, перейдем к Delphi XE2 или новее. Наша СУБД - это Microsoft SQL Server. Мы рассматриваем переход к ADO, но беспокоимся о его будущей доказательности в контексте вышеупомянутого объявления.

Означает ли это отношение отношения? :

Delphi <---> ADO <---> OLE DB <---> DBMS 

ли я правильно понимаю, что Microsoft хочет, чтобы перейти к ?:

Delphi <---> ADO <---> OLE DB-bridge-ODBC <---> ODBC <---> DBMS 
+0

Вы беспокоитесь о том, чтобы быть надежным, но вы используете Delphi 7 и BDE? Получите Delphi 10, перейдите в FireDac и сделайте с ним. BDE-> FireDac на самом деле довольно безболезнен, даже проще, чем BDE-> ADO, я чувствую. Зачем переходить на XE2? Это кажется сумасшедшим - если вы собираетесь обновить, то обновите. Зачем останавливаться на полпути? –

+0

В любом случае, по вашему вопросу, MS хочет, чтобы вы использовали ODBC в будущем. Компоненты BDE, ADO и FireDac все могут подключаться через ODBC, поэтому в зависимости от того, что вы используете, вам нужно будет переключиться на ODBC, если при обновлении за пределами SQL Server 2012, если это не так, как вы уже делаете. –

+0

Потому что мы несколько лет назад купили XE2, но в конце концов не сделали этого назад и теперь хотим переключиться. –

ответ

0

Что они означают, что они больше не будут создавать собственный клиент OLEDB провайдер SQL Server. Есть целый ряд поставщиков OLE DB, которые можно использовать для доступа к SQL Server:

  • Microsoft OLE DB Provider для SQL Server (SQLOLEDB)

    Это SQL Server 2000 эрой OLEDB Provider, что поставляется с самой операционной системой.

  • SQL Native Client 9.0 OLE поставщик DB (SQLNCLI)

    • поставляется с SQL Server 2005
    • необходимо вручную установить на клиентских компьютерах
    • может подключиться к SQL Server 7, 2000, и 2005
    • может подключаться к SQL Server 2008, но они рекомендуют использовать новый собственный клиент
  • Сервер Native Client SQL 10,0 OLE DB Provider (SQLNCLI10)

    • поставляется с SQL Server 2008
    • необходимо вручную установить на клиентских компьютерах
    • могут подключаться к SQL Server 2000, 2005, 2008, и 2008 R2
  • Собственный клиент SQL Server 11.0 OLE DB Provider (SQLNCLI11)

    • поставляется с SQL Server 2012
    • необходимо вручную установить на клиентских компьютерах
    • могут подключаться к SQL Server 2005, 2008, 2008 R2, и 2012
    • выбросит ошибка, если используется для подключения к SQL Server 2000

Microsoft собирается прекратить создание нового SQL Server Native Client OLEDB поставщиков. Все вместе они создавали: поставщик

  • SQL Native Client OLE DB
  • SQL ODBC собственного клиента поставщик

Они собираются прекратить создавать драйверы поставщика OLEDB, продолжая при этом о выпуске ODBC водители. Между тем, оригинальный драйвер SQLOLEDB по-прежнему существует (даже в Windows 10). Вы можете продолжать использовать ADO для доступа к SQL Server. ADO - это дружественная оболочка вокруг OLDDB (и неуклюжий зверь API).

И внутри OLE DB вы все равно можете использовать старый OLEDB-драйвер SQLOLEDB SQLOLEDB.

Вы также можете использовать поставщик OLE DB, который оборачивает драйвер ODBC (MSDASQL):

  • АДО
    • OLEDB
      • SQLOLEDB: Microsoft OLE DB Provider для SQL Server
      • SQLNCLI: SQL Native Client 9.0 Поставщик OLE DB
      • SQLNCLI10: SQL Server Native Cl диентом 10,0 OLE DB Provider
      • SQLNCLI11: SQL Server Native клиент 11,0 OLE DB Provider
      • MSDASQL: Microsoft OLE DB для драйверов ODBC
        • {SQL Server}: Sqlsrv32.dll
        • {SQL Server Native Клиент 10,0}: sqlncli10.dll
        • {SQL Server Native Client 11.0}: sqlncli11.dll

Если отойти от старого поставщика SQLOLEDB, и к драйверам ODBC, вы должны остерегаться тонкой Gotcha:

SQL Server не поддерживает несколько открытых наборов записей в одном соединении.Например, если у вас были какое-то мастер-деталь:

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 и не понимаете, что у вас есть эти тонкие «проблемы», ваше приложение очень быстро упадет на мертвые.