XPボックスでPowerShellアプリケーションを開発し、SybaseサーバーにOLEDB接続してデータを抽出し、SQLServer2008データベースインスタンスに挿入しました。このスクリプトをデバッグし、プロセスが正しく動作することを確認した後、スクリプトを新しいWindows Server2008R2ボックスに移動しました。Sybaseインスタンスに接続するために、XPボックスで行ったようにSybase12.5.2クライアントをインストールしました。ただし、スクリプトの実行は次のメッセージで失敗しました:「0」引数で「open」を呼び出す例外:「'Sybase.ASEOLEDBProvider.2'プロバイダーはローカルマシンに登録されていません。
基本接続文字列はconnectionStrings.comから派生し、XPで機能したため、構文自体に問題があるとは思われません。そのため、次のコマンドを使用してOLEDBdllを手動で登録しました:zippy32 sydaase.dll
エラーなしで登録されました。
スクリプトの適切な行を切り取ると、接続ロジックシーケンスは次のようになります。$ dbConn = new-object System.Data.oldeb.oledbConnection $ dbConn.connectionString = "Provider = Sybase.ASEOLEDBProvider.2; server name = myServer; port address = xxx ;初期カタログ=xxx;ユーザーID=xxx;パスワード=xxxx "
この例では、データをxxxに置き換えました。
XPボックスでこれが問題なく実行された理由はわかりませんが、同じ構成プロセスに従ったにもかかわらず、WindowsServerボックスでは実行できませんでした。