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。
*
2017/2/20追記。
SQL Server 2014 ではレジストリの値が少し変わった。
SQL Server 2014
HKEY_LOCAL_MACHINE
SOFTWARE\Microsoft\Microsoft SQL Server\120\Tools\ClientSetup
ODBCToolsPath
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
コメント
コメントを投稿