1

したがって、次のことを行う比較的単純な 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";

したがって、この時点で、すべての接続が正常にテストされ、すべてが機能するように見えます。ただし、パッケージを実行すると、次の問題が発生します。

  1. BIDS に従って、ドロップ シート SQL 実行タスクが正常に完了します。ただし、実際にはシートを Excel ファイルにドロップしません。ただし、シートに含まれるすべてのデータは削除されます。
  2. #1 が原因で、シートが実際にドロップされていないため、Create Sheet Execute SQL Task が失敗します。

これが機能しなくなった理由はありますか?正直なところ、私はインターネットとSOを見てきましたが、これを行う方法を説明している人をまだ見ていません。Excel 2007 でシートをドロップする新しいコマンドはありますか?

4

1 に答える 1

1

これを見つける可能性のある他の人のために:

2 つのSQL実行タスクを 2 つのファイル システムタスクに置き換えることで、データを XLSX ファイルにエクスポートする際の問題を修正しました。1 つは既存のファイルを削除し、もう 1 つは "テンプレート" Excel ファイル (基本的には列ヘッダーを含む空のスプレッドシート) をレポート ディレクトリにコピーします。

次に、データ フロー タスクを使用して、データを新しいテンプレート ファイルにエクスポートします。

私の理想的な解決策ではありません.1つのファイルを持ち、テーブルを再作成するという古い方法を好みます。しかし、どうやらこれは Excel 2007 のオプションではなくなり、テンプレート ファイルを使用したファイル システム タスク メソッドが機能するようです。

この仕事に取り組んでいるときに見つけた最も役立つリソースは次の 2 つです。

SSIS - Excel 2007 接続ガイド

SSIS ファイル システム タスクを使用したファイルのコピー/名前変更

于 2012-09-19T15:32:35.200 に答える