新規記事の投稿を行うことで、非表示にすることが可能です。
2020年01月30日
MSOLEDBSQL SQLOLEDB SQLNCLI プロバイダー
Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL)
2017年4月にSQL Server Native Client (SQLNCLI) が非推奨となり、
新しい開発作業には、Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL)を使用しなければならなくなりました。
このMSOLEDBSQLは、Windows 付属の SQLOLEDB OLE DB プロバイダー(SQLOLEDB)とは別物です。
Windows付属の SQLOLEDB OLE DB プロバイダーはもともとメンテナンスモードとなっており、
MSOLEDBSQLを利用する場合は、OLE DB Driver for SQL Server (MSOLEDBSQL) をダウンロードしてインストールする必要があります。
なお、2019年10月時点ではバージョン18.3.0.0が公開されています。
Microsoft OLE DB Driver for SQL Server
インストール時の注意点として、
必ず管理者特権でログオンしてインストールする必要があります。
アプリケーションに組み込んで利用する場合の接続文字列は以下のようになります。
Provider=MSOLEDBSQL;Server=myServerAddress;Database=myDataBase;UID=myUsername;PWD=myPassword;
また、SQL Server 2005 (9.x) 以降の機能を必要としない場合には、
接続文字列に DataTypeCompatibility=80 を指定することで、
SQL Server 2005 (9.x) の機能しか使用しないようになります。
Provider=MSOLEDBSQL;DataTypeCompatibility=80;Server=myServerAddress;Database=myDataBase;UID=myUsername;PWD=myPassword;
Microsoft OLE DB Driver 18.3.0 for SQL ServerがサポートされるOSは、
Windows Server 2016、Windows 10、Windows Server 2012 R2、Windows Server 2012、Windows 8.1、Windows Server 2019です。
ネイティブ コード API を使用するアプリケーションが Microsoft SQL Server 2012、SQL Server 2014、SQL Server 2016, SQL Server 2017、
Analytics Platform System、Azure SQL Database、および Azure SQL Data Warehouse に接続するためのランタイム サポートを含む、
単一のダイナミック リンク ライブラリ (DLL) です。(Microsoftサイトの直訳なので、少し意味が分かり難いです。)
当方で試したところ、SQL Server 2005、SQL Server 2008 R2 でも利用可能でした。
SQL Server Native Client と Microsoft OLE DB Driver for SQL Server の速度比較
Microsoftが推奨しないという訳なので、MSOLEDBSQLを利用するしか仕方が無いのですが、
念のため、これまで利用していたSQL Server Native Client との速度差がどれ位なのか調べてみました。
調査はDelphi製アプリケーションを作成し、
SQLOLEDB、SQLNCLI11.0、MSOLEDBSQLを用いて、
SQL Server 2008 R2データベースに対して、
1000行、2000行、5000行、10000行、20000行のレコード操作(SELECT、DELETE、INSERT)を各5回行う方式を取りました。、
速度単位はミリ秒(1000分の1秒)です。
調査結果
SQLNCLI>MSOLEDBSQL>SQLOLEDB の順となり、
SQLOLEDBの速度が極端に遅いことがわかります。
MSOLEDBSQLとSQL Server Native Clientだと、
わずかながら、SQL Server Native Clientの方が速いようです。
まとめ
OLE DB Driver は3つの世代があり、
SQLNCLI(SNAC)、SQLOLEDB、MSOLEDBSQLの
どれを利用すればいいのかわかりにくいのが現状です。
特に、突然非推奨になったり、非推奨が取り消されたりと、
これも混乱を招く原因となっています。
さらに、Microsoftによる情報公開もしばらく経たないと出てこないので、これにも注意が必要です。
再度整理すると、
2017年4月に非推奨となったのが、
Microsoft OLE DB Provider for SQL Server (SQLOLEDB) と
SQL Server Native Client OLE DB プロバイダー (SQLNCLI) です。
新しい開発には利用しないようにしてください。
2018年にOLE DBの非推奨が取り消しとなりリリースされたのが、
Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) です。
その為、Microsoft OLE DB Driver for SQL Server (MSOLEDBSQL) が
今後最新の機能として更新されます。
従って、これまで SQLOLEDBやSQLNCLIを利用していたアプリは、
MSOLEDBSQLに対応していくしかなさそうです。
また、MSOLEDBSQLはWindowsに付属していないので、
別途ダウンロード&インストールを行う必要があります。
以下のMicrosoftのドキュメントサイトに情報が掲載されているので、必ず確認するようにしてください。
Microsoft OLE DB Driver for SQL Server
2020年01月24日
データベース接続文字列
データベース | タイプ | 接続文字列 | 備考 |
---|---|---|---|
XLS | JET | Provider=Microsoft.Jet.OLEDB.4.0;excel8.0;DATABASE=C:\MyExcelData.xls; | 無 |
XLS | ACE | Provider=Microsoft.ACE.OLEDB.12.0;DataSource=c:\MyExcelFile.xls;ExtendedProperties=Excel8.0;HDR=YES; | (MicrosoftACEをインストールする必要があります) |
XLS | ODBC | Provider=MSDASQL.1;ExtendedProperties=DBQ=C:\MyExcelFile.xls;DefaultDir=C:\;Driver={MicrosoftExcelDriver(*.xls)};DriverId=790; | 無 |
MDB | JET | Provider=Microsoft.Jet.OLEDB.4.0;DataSource=MyDatabaseFile.mdb; | 無 |
MDB | ODBC | Provider=MSDASQL.1;ExtendedProperties=DBQ=MyDatabaseFile.mdb;Driver={MicrosoftAccessDriver(*.mdb)};DriverId=25; | 無 |
XLSXXLSBXLSM | ACE | Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:\MyData\myExcel2007file.xlsx;ExtendedProperties=Excel12.0;HDR=YES; | (MicrosoftACEをインストールする必要があります.Excel2007ファイルに使用します) |
XLSXXLSBXLSM | ACE | Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:\MyData\myExcel2010file.xlsx;ExtendedProperties=Excel14.0;HDR=NO; | (MicrosoftACEをインストールする必要があります.Excel2010ファイルに使用します) |
XLSXXLSBXLSM | ODBC | Driver={MicrosoftExcelドライバー(*.xls*.xlsx*.xlsm*.xlsb)};DBQ=C:\MyExcelFile.xlsx; | (MicrosoftExcel2007ODBCドライバーをインストールする必要があります) |
ACCDB | ACE | Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:\MyData\myAccess2007file.accdb;PersistSecurityInfo=False; | (MicrosoftACEをインストールする必要があります) |
ACCDB | ACE | Provider=Microsoft.ACE.OLEDB.12.0;DataSource=C:\MyData\myAccess2007file.accdb;JetOLEDB:DatabasePassword=MyDbPassword; | (MicrosoftACEをインストールする必要があります) |
ACCDB | ODBC | Driver={MicrosoftAccessDriver(*.mdb*.accdb)};Dbq=C:\MyAccessDB.accdb; | (MicrosoftAccessaccdbODBCドライバーをインストールする必要があります) |
ACCDB | ODBC | Driver={MicrosoftAccessDriver(*.mdb*.accdb)};Dbq=C:\MyAccessDB.accdb;SystemDB=C:\MyAccessDB.mdw; | (MicrosoftAccessaccdbODBCドライバーをインストールする必要があります) |
Interbase(GDB) | |||
FireBird(FDB) | OLEDB | provider=sibprovider;location=localhost:;datasource=C:\My_db.gdb;userid=SYSDBA;Password=masterkey; | (SIBPROviderInterbaseOLEDBProviderをインストールする必要があります) |
Interbase(GDB) | |||
FireBird(FDB) | ODBC | Driver={INTERSOLVInterBaseODBCDriver(*.gdb)};Server=localhost;Database=localhost:C:\My_db.gdb;Uid=myUsername;Pwd=myPassword; | (IntersolvInterBaseODBCDriverをインストールする必要があります) |
Interbase(GDB) | |||
FireBird(FDB) | ODBC | Driver={EasysoftIB6ODBC};Server=localhost;Database=localhost:C:\My_db.gdb;Uid=myUsername;Pwd=myPassword; | (EasysoftODBCドライバーをインストールする必要があります) |
Interbase(GDB) | |||
FireBird(FDB) | ODBC | DRIVER=Firebird/InterBase(r)driver;Uid=myUsername;Pwd=myPassword;DBNAME=C:\My_db.gdb; | (IBPhoenixOpenSourceODBCDriverをインストールする必要があります) |
Interbase(GDB) | |||
FireBird(FDB) | ODBC | DRIVER=Firebird/InterBase(r)driver;Uid=myUsername;Pwd=myPassword;DBNAME=C:\My_db.fdb; | (IBPhoenixOpenSourceODBCDriverをインストールする必要があります) |
HTML(HTM) | JET | Provider=Microsoft.Jet.OLEDB.4.0;ExtendedProperties=HTMLImport;DATABASE=C:\MyHTMLFile.html; | 無 |
VisualFoxPro(DBC) | OLEDB | Provider=vfpoledb;DataSource=C:\MyData\MyVFPDbFile.dbc;CollatingSequence=machine; | (VFPOLEDBプロバイダーをインストールする必要があります) |
VisualFoxPro(DBC) | ODBC | Driver={MicrosoftVisualFoxProDriver};SourceType=DBC;SourceDB=C:\MyData\MyVFPDbFile.dbc; | (MicrosoftVisualFoxProODBCドライバーをインストールする必要があります) |
Lotus(WJ2WK1) | JET | Provider=Microsoft.Jet.OLEDB.4.0;ExtendedProperties=LotusWJ2;DATABASE=C:\MyLotusFolder; | 無 |
Lotus(WJ2WK1) | JET | Provider=Microsoft.Jet.OLEDB.4.0;ExtendedProperties=LotusWK1;DATABASE=C:\MyLotusFolder; | 無 |
dBase(DBF) | JET | Provider=Microsoft.Jet.OLEDB.4.0;dBase5.0;DATABASE=C:\MyDBaseFolder; | 無 |
dBase(DBF) | JET | Provider=Microsoft.Jet.OLEDB.4.0;dBaseIV;DATABASE=C:\MyDBaseFolder; | 無 |
dBase(DBF) | ACE | Provider=Microsoft.ACE.OLEDB.12.0;DataSource=c:\MyDBaseFolder;ExtendedProperties=dBASEIV; | (MicrosoftACEをインストールする必要があります) |
dBase(DBF) | ODBC | Provider=MSDASQL.1;ExtendedProperties=DefaultDir=C:\MyDBaseFolder;Driver={MicrosoftdBaseDriver(*.dbf)};DriverId=277; | 無 |
FoxPro(DBF) | OLEDB | Provider=VFPOLEDB.1;DataSource=D:\MyFoxProFolder;CollatingSequence=MACHINE | (VFPOLEDBProviderをインストールする必要があります) |
Paradox(DB) | JET | Provider=Microsoft.Jet.OLEDB.4.0;Paradox4.X;DATABASE=C:\MyParadoxFolder; | 無 |
Paradox(DB) | ACE | Provider=Microsoft.ACE.OLEDB.12.0;DataSource=c:\MyParadoxFolder;ExtendedProperties=dBASEIV; | (MicrosoftACEをインストールする必要があります) |
Paradox(DB) | ODBC | Provider=MSDASQL.1;ExtendedProperties=DefaultDir=C:\MyParadoxFolder;Driver={MicrosoftParadoxDriver(*.db)};DriverId=26; | 無 |
TXTCSVASCTAB | JET | Provider=Microsoft.Jet.OLEDB.4.0;TEXT;DATABASE=C:\MyCSVFolder; | 無 |
TXTCSVASCTAB | ODBC | Provider=MSDASQL.1;ExtendedProperties=DefaultDir=C:\MyCSVFolder;Driver={MicrosoftTextDriver(*.txt;*.csv)};DriverId=27;Extensions=asccsvtabtxt; | 無 |
TXTCSVASCTAB | UDL | ファイル名=c:\MyDataLinkFile.udl; | 無 |
AdaptiveServerAnywhere | OLEDB | Provider=ASAProv;Datasource=myASADatabase; | (AdaptiveServerAnywhereOLEDBプロバイダーをインストールする必要があります) |
AdaptiveServerAnywhere | ODBC | Driver=AdaptiveServerAnywhere7.0;ENG=server.database_name;UID=myUsername;PWD=myPassword;DBN=myDataBase;LINKS=TCPIP(HOST=serverNameOrAddress); | (AdaptiveServerAnywhereODBCドライバーをインストールする必要があります) |
DB2 | OLEDB | Provider=DB2OLEDB;NetworkTransportLibrary=TCPIP;NetworkAddress=xxx.xxx.xxx.xxx;InitialCatalog=MyCatalog;PackageCollection=MyPkgCol;DefaultSchema=mySchema;UserID=myUsername;Password=myPassword; | (MicrosoftOLEDBProviderforDB2をインストールする必要があります) |
DB2 | OLEDB | Provider=IBMDADB2;Database=myDatabase;Hostname=myServerAddress;Protocol=TCPIP;Port=50000;Uid=myUsername;Pwd=myPassword; | (IBMOLEDBProviderforDB2をインストールする必要があります) |
DB2 | ODBC | Driver={IBMDB2ODBCDRIVER};Database=myDbName;Hostname=myServerAddress;Port=myPortNum;Protocol=TCPIP;Uid=myUserName;Pwd=myPwd | (IBMDB2DriverforODBCをインストールする必要があります) |
Informix | OLEDB | Provider=Ifxoledbc;DataSource=dbName@serverName;UserID=myUsername;Password=myPassword; | (IBMInformixOLEDBプロバイダーをインストールする必要があります) |
Ingres | ODBC | Provider=MSDASQL;DRIVER=Ingres;SRVR=xxxxx;DB=xxxxx;Uid=myUsername;Pwd=myPassword;ExtendedProperties=SERVER=xxxxx;DATABASE=xxxxx;SERVERTYPE=INGRES; | (IngresのODBCドライバーをインストールする必要があります) |
SQLServer | OLEDB | Provider=sqloledb;DataSource=myServerAddress;InitialCatalog=myDataBase;UserId=myUsername;Password=myPassword; | (SQLServer用MicrosoftOLEDBプロバイダーをインストールする必要があります) |
SQLServer | OLEDB | Provider=SQLNCLI;Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; | (SQLNativeClient9.0OLEDBプロバイダーをインストールする必要があります.SQLServer2005で使用してください) |
SQLServer | OLEDB | Provider=SQLNCLI10;Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; | (SQLServerNativeClient10.0OLEDBプロバイダーをインストールする必要があります.SQLServer2008で使用してください) |
SQLServer | OLEDB | Provider=SQLNCLI11;Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; | (SQLServerNativeClient11.0OLEDBプロバイダーをインストールする必要があります.SQLServer2012で使用してください) |
SQLServer | ODBC | Driver={SQLServer};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; | (MicrosoftSQLServerODBCドライバーをインストールする必要があります) |
SQLServer | ODBC | Driver={SQLNativeClient};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; | (SQLNativeClient9.0ODBCドライバーをインストールする必要があります.SQLServer2005で使用してください) |
SQLServer | ODBC | Driver={SQLServerNativeClient10.0};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; | (SQLServerNativeClient10.0ODBCドライバーをインストールする必要があります;SQLServer2008で使用してください) |
SQLServer | ODBC | Driver={SQLServerNativeClient11.0};Server=myServerAddress;Database=myDataBase;Uid=myUsername;Pwd=myPassword; | (SQLServerNativeClient11.0ODBCドライバーをインストールする必要があります.SQLServer2012で使用してください) |
MySQL | OLEDB | Provider=MySQLProv;DataSource=mydb;UserId=myUsername;Password=myPassword; | (MySQLOLEDBProviderをインストールする必要があります) |
Oracle | OLEDB | Provider=msdaora;DataSource=MyOracleDB;UserId=myUsername;Password=myPassword; | (Oracle用MicrosoftOLEDBプロバイダーをインストールする必要があります) |
Oracle | OLEDB | Provider=OraOLEDB.Oracle;DataSource=MyOracleDB;UserId=myUsername;Password=myPassword; | (OracleProviderforOLEDBをインストールする必要があります) |
Oracle | ODBC | Driver={Oracle用MicrosoftODBCドライバー};ConnectString=OracleServer.world;Uid=myUsername;Pwd=myPassword; | (Oracle用MicrosoftODBCドライバーをインストールする必要があります) |
PervasivePSQL | OLEDB | Provider=PervasiveOLEDB;DataSource=myServerAddress; | (PervasiveOLEDBプロバイダーをインストールする必要があります) |
PervasivePSQL | ODBC | Driver={PervasiveODBCクライアントインターフェイス};ServerName=myServerAddress;dbq=@dbname; | (PervasiveODBCクライアントインターフェイスをインストールする必要があります) |
PostgreSQL | OLEDB | Provider=PostgreSQLOLEDBProvider;DataSource=myServerAddress;location=myDataBase;UserID=myUsername;password=myPassword; | (PostgreSQLOLEDBプロバイダーをインストールする必要があります) |
PostgreSQL | ODBC | Driver={PostgreSQL};Server=IPアドレス;Port=5432;Database=myDataBase;Uid=myUsername;Pwd=myPassword; | (PostgreSQLODBCドライバーをインストールする必要があります) |
SQLite | ODBC | Driver=SQLite3ODBCDriver;Database=C:\MyData\My_db.db; | (SQLite3ODBCドライバーをインストールする必要があります) |
SQLBase | OLEDB | Provider=SQLBaseOLEDB;Datasource=myServerAddress;Location=myDataBase;UserId=myUsername;Password=myPassword; | (SQLBaseOLEDBDataProviderをインストールする必要があります) |
2020年01月06日
2020年の年賀状
明けましておめでとうございます。
今年もよろしくお願いします。
さて早速なのですが、
昨年2019年までは毎年100枚程度の年賀状を送っていたのですが、
LINEやメールでやりとりしてるのに本当に必要?という思いが強くなり、
今回はお送りいただいた年賀状に対してお返しの年賀状を送ることにしました。
でもって、1月1日元日には30枚程度、3日〜5日で20枚、本日6日は1枚と、
合計51枚の年賀状が届きましたので、
お送りいただいた順に即日返信しました。
少し分析してみたのですが、
毎年やりとりしていた方も今年は無いようなので、メールにて確認したところ、
先方も同じ考えで減らしてみたそうです。
それと、年賀状1枚当たりのコストも計算してみました。
年賀状は値上がりして63円。
EPSONの4色格安プリンタが8000円(本体)、だいたい3年で壊れているので、8000円÷36か月で222円。
インク代が一枚印刷するのに30円。
ということで、年賀状一枚当たり315円です。
51枚なので、16065円と、かなり割高です。
これを最近のWEBで注文できる年賀状にしたとすると、
だいたい50枚程度なら(3000円+63円×51)で6200円程度です。
年賀状アプリなら、基本料金1980円+送料+ハガキ代+1枚5円手数料で、
これまた6000円程度です。
年に一度の年賀状印刷のためだけにプリンタを保有する必要も無いので、
これは便利かもしれません。
今年もよろしくお願いします。
さて早速なのですが、
昨年2019年までは毎年100枚程度の年賀状を送っていたのですが、
LINEやメールでやりとりしてるのに本当に必要?という思いが強くなり、
今回はお送りいただいた年賀状に対してお返しの年賀状を送ることにしました。
でもって、1月1日元日には30枚程度、3日〜5日で20枚、本日6日は1枚と、
合計51枚の年賀状が届きましたので、
お送りいただいた順に即日返信しました。
少し分析してみたのですが、
毎年やりとりしていた方も今年は無いようなので、メールにて確認したところ、
先方も同じ考えで減らしてみたそうです。
それと、年賀状1枚当たりのコストも計算してみました。
年賀状は値上がりして63円。
EPSONの4色格安プリンタが8000円(本体)、だいたい3年で壊れているので、8000円÷36か月で222円。
インク代が一枚印刷するのに30円。
ということで、年賀状一枚当たり315円です。
51枚なので、16065円と、かなり割高です。
これを最近のWEBで注文できる年賀状にしたとすると、
だいたい50枚程度なら(3000円+63円×51)で6200円程度です。
年賀状アプリなら、基本料金1980円+送料+ハガキ代+1枚5円手数料で、
これまた6000円程度です。
年に一度の年賀状印刷のためだけにプリンタを保有する必要も無いので、
これは便利かもしれません。