0

mdbファイルであるソースとMSSQLデータベースである宛先の2つのオブジェクトを持つ単純なDataFlowがあります。

アイデアは、データをあるものから別のものに移行することです。

問題は、データがAccessクエリから抽出され、1つの列が最大1000文字であり、高度なプロパティのSSISでは、外部列のデフォルトの長さが255であるため、タスクを実行すると切り捨てようとすることです。切り捨て時にスローエラーを無効にすることはオプションではなく、外部列の長さを変更することはできません。メタデータに関するスローとエラーが発生します。

まず第一に、誰もがなぜ説明できますか?

第二に、私は解決策が必要であり、それがちょっと私を夢中にさせているので、私はそれを速く必要とします。

4

3 に答える 3

0

この種の問題は、ssis タスクが最初の 100 行 (afaik) を調べて列の長さを「推測」するために発生します。したがって、1 から 100 までのすべての行の長さが 10 で、行 101 の長さが 11 である場合、長さが 10 と「推測」されたため、タスクは失敗します。

validateExternalMetadataに設定しているため、変更するとエラーがスローされtrueます。この問題を解決するにadvanced optionsは、インポート タスク (アクセス) に移動し、値を に設定しますfalse。つまり、タスクは、入力した変更された値をチェックせずに受け入れます。

于 2012-11-21T17:12:36.647 に答える
0

BI 開発環境内からSSIS インポートおよびエクスポート ウィザードでデータをインポートしようとしましたか? これは、データをインポートするだけでなく、パッケージも保存するため、MsAccess の最も簡単な方法です。インポート中に (ウィザードを使用して) エラーが発生した場合は、詳細な調査に役立つため、投稿してください。また、@stb が提案したように、最初のレコードが 1000 文字を超えていることを確認してください。

于 2012-11-22T10:30:17.157 に答える
0

Access は、MSSQL のビューに相当するクエリをサポートしています。列のサイズは、いくつかの結果を見て定義するのではなく、列のデータ型の既定の列の長さによって定義されます。

目的のデータ型で別のテーブルを作成し、データ フローの前にパッケージに 2 つの SQL スクリプトを入れました。一時テーブル。

次に、この疑似一時テーブルに対して実際のデータ フローが実行されます。

これで私の問題は解決しました。

于 2012-11-22T19:00:50.577 に答える