Каковы плюсы и минусы OleDB по сравнению с SQLClient?

OLEDB намного быстрее, чем oledb SQLClient, ЗА ИСКЛЮЧЕНИЕМ dotnet доступа через ADO.NET. Драйверы mssql2005 для OLEDB написаны в собственном sql-server-2005 неуправляемом коде, однако, когда sql-server-2005 вы обращаетесь к этим драйверам sql-server-2005 через ADO.NET, вам нужно .net пройти через несколько уровней dotnet (включая уровень абстракции sql-server-2005 и уровень взаимодействия .net-framework COM). Уровень абстракции .net-framework обеспечивает управление ресурсами, например mssql2005 управление дескрипторами .net памяти для обеспечения правильной sql-server-2005 сборки мусора, изменение sql-server-2005 типов данных и параметров mssql2005 на типы .NET и преобразование dot-net буфера oledb в привязки строк mssql2005 и столбцов. Уровень взаимодействия dot-net COM обеспечивает маршалинг dotnet сообщений, передаваемых из .net-framework .NET в COM и наоборот, включая .net указатели блокировки / разблокировки oledb / преобразования.

Не слушайте dotnet никого, кто выдвигает ложные dotnet обвинения в отношении производительности .net OleDB, не понимая, как они mssql2005 ее тестировали и какую среду sql2005 использовали (управляемый sql2005 код или управляемый код). Единственное, что mssql2005 замедляет работу OleDB, - это mssql2005 объем внутренней обработки, необходимой oledb для того, чтобы собственный mssql2005 код хорошо работал с управляемым dot-net кодом. Также имейте в виду, что .net библиотека SqlClient .NET sql2005 имеет свою собственную сантехнику mssql2005 и НЕ ЯВЛЯЕТСЯ НАТИВНОЙ библиотекой dotnet .NET, как думает большинство dot-net людей. Библиотеки SqlClient mssql2005 в .NET используют классы sql-server-2005 SNINativeMethodWrapper и mssql2005 SNIPacket, которые являются .net оболочками, которые упорядочивают dot-net данные между неуправляемым .net кодом (sqlncli.dll) и управляемым sql-server-2005 кодом .NET. Это недокументированная mssql2005 правда и причина того, почему oledb .NET SqlClient никогда не .net сможет превзойти OleDB, если dotnet вы используете OleDB в собственном sql-server-2005 неуправляемом коде.

Таким dotnet образом, если вы используете .net полностью управляемый код, вы .net получите лучшую производительность oledb от System.data.SqlClient. Если dotnet у вас смешанная среда, вы sql-server-2005 получите гораздо лучшую производительность, разговаривая .net напрямую с OleDB или с sqlncli.dll sql2005 (SQL2005) или sqlncli10.dll mssql2005 (SQL 2008). Имейте в виду, что sql2005 и OleDB, и ODBC обновляются dot-net Microsoft, и последние драйверы .net-framework OleDB ДЕЙСТВИТЕЛЬНО взаимодействуют oledb с новейшими неуправляемыми mssql2005 клиентскими библиотеками dot-net собственного SQL. Microsoft .net рекомендует использовать .net-framework OleDB в неуправляемых приложениях, когда dot-net требуется высокая производительность.

Дополнительные mssql2005 сведения см. в разделе «Электронная sql2005 документация по SQL Server sql2005 2008 \ Database Engine \ Разработка sql-server-2005 \ Руководство разработчика mssql2005 \ Программирование собственного mssql2005 клиента SQL Server 2008 \ Собственный .net-framework клиент SQL Server 2008 (OLE mssql2005 DB)».

.net

sql-server-2005

oledb

2022-08-17T03:48:28+00:00