bcpコマンドのパス

SQLServerでは数万行のCSVファイルをinsert文で取り込むと時間がかかってし方がない、高速化したいというときに、bcpというコマンドを使うことがある。

bcpコマンドは、SQLServerのバージョンによって動作が違うところもあって、パソコンに2つのバージョンのSQLServerがセットアップされていると、エラーが起きたりして困る。

そこで、bcpコマンドのパスを探してフルパスで指定して実行するという手段で解決したりする。


bcp.exeのあるフォルダのパスはレジストリに記録されている。

SQL Server 2008
HKEY_LOCAL_MACHINE
SOFTWARE\Microsoft\Microsoft SQL Server\100\Tools\ClientSetup

Path

SQL Server 2005
HKEY_LOCAL_MACHINE
SOFTWARE\Microsoft\Microsoft SQL Server\90\Tools\ClientSetup

Path

そして、SQLServerのバージョンはレジストリの下記のところに記録されている。
XXXはインスタンス名。
SOFTWARE\Microsoft\Microsoft SQL Server\XXX\MSSQLServer\CurrentVersion

値が90ならSQLServer2005、100なら2008。


まあ、bcpコマンドなんて使わないのが幸せ。



2017/2/20追記。

SQL Server 2014 ではレジストリの値が少し変わった。

SQL Server 2014
HKEY_LOCAL_MACHINE
SOFTWARE\Microsoft\Microsoft SQL Server\120\Tools\ClientSetup

ODBCToolsPath

コメント

このブログの人気の投稿

varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。