したがって、次のことを行う比較的単純な SSIS ジョブがあります。
SQL タスクの実行 - Excel ファイルからシートをドロップ
drop table `Table`
SQL タスクの実行 - Excel ファイルでシートを作成
CREATE TABLE `Table` (
`Col1` VarChar (255) ,
`Col2` Long ,
`Col3` VarChar (84) ,
`Col4` VarChar (60) ,
`Col5` VarChar (255) ,
`Col6` VarChar (20) ,
`Col7` VarChar (255) ,
`Col8` VarChar (255) ,
`Col9` VarChar(255))
データ フロー タスク - SQL から Excel へのデータのエクスポート
これは、SQL クエリ [OLE DB ソース] を実行し、すべてを Unicode 文字列に変換し、データを Excel 宛先にエクスポートするだけです。
注: このジョブは、BIDS 2005 ではエラーなく完全に実行されます。しかし、最初に BIDS 2008 (32 ビット モード) で実行しようとしたとき、上記のドロップ シートとシート作成SQLタスクの両方で次のエラーが発生しました。
警告: 複数ステップの OLE DB 操作でエラーが発生しました。利用可能な場合は、各 OLE DB ステータス値を確認します。作業は行われませんでした。
Execute SQL TasksのConnectionTypeプロパティをADOに変更し、次の接続文字列を使用することで、これを修正できることがわかりました。
Data Source=\\<filelocation>\<ExcelFileName>.xls;Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 8.0;
この時点で、エラーなしで BIDS 2008 で実行されているパッケージに戻りました。すべてがうまくいきます!
次に、ジョブを Excel 97-2003 .xls ファイルへのエクスポートから Excel 2007 .xlsx ファイルへのエクスポートに更新しようとしました。
したがって、Microsoft によると、 SQL 実行タスクを次の接続文字列を使用するように変更する必要がありました。
Data Source=\\<filelocation>\<ExcelFileName>.xlsx;Provider=Microsoft.ACE.OLEDB.12.0;Extended Properties=Excel 12.0 XML;
また、 Excel Destinationステップ (Microsoft による BIDS 2008 で Excel 2007 形式をサポートしている)の接続マネージャーを次のように更新する必要がありました。
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=\\<file location>\<Excel filename.xlsx;Extended Properties="Excel 12.0 XML;HDR=YES";
したがって、この時点で、すべての接続が正常にテストされ、すべてが機能するように見えます。ただし、パッケージを実行すると、次の問題が発生します。
- BIDS に従って、ドロップ シート SQL 実行タスクが正常に完了します。ただし、実際にはシートを Excel ファイルにドロップしません。ただし、シートに含まれるすべてのデータは削除されます。
- #1 が原因で、シートが実際にドロップされていないため、Create Sheet Execute SQL Task が失敗します。
これが機能しなくなった理由はありますか?正直なところ、私はインターネットとSOを見てきましたが、これを行う方法を説明している人をまだ見ていません。Excel 2007 でシートをドロップする新しいコマンドはありますか?