質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

SSIS

SISS(Microsoft Integration Services) は、企業レベルのデータ統合およびデータ変換ソリューションを構築するためのプラットフォームです。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

15629閲覧

SSIS,SQLServerにおける無効データエラー

piarokaren

総合スコア16

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

SSIS

SISS(Microsoft Integration Services) は、企業レベルのデータ統合およびデータ変換ソリューションを構築するためのプラットフォームです。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2016/10/25 08:13

編集2016/10/25 08:15

###前提・実現したいこと
SQL Server Integration Service(SSIS)にて、
データフロータスク
┗フラットファイルソース

スクリプト コンポーネント

OLE DB 変換先
というフローを作成しており、
スクリプトコンポーネント内では処理対象になっておらず、
OLE DB 変換先のマッピング内で直接フラットファイルソースからマッピングしている列にて、問題が発生しています。

DB:SQL Server 2008

###発生している問題・エラーメッセージ

列 ORT01(varchar 40)に対し、
"Kyongi-do Goyang-si Ilsanseo-gu"
を挿入すると、以下のメッセージが発生し、

エラー: 0xC0202009 (データ フロー タスク, OLE DB 変換先 [167]: SSIS エラー コード DTS_E_OLEDBERROR。OLE DB エラーが発生しました。エラー コード: 0x80004005。 OLE DB レコードを使用できます。ソース: "Microsoft OLE DB Provider for SQL Server" Hresult: 0x80004005 説明: "リンク サーバー '(null)' の OLE DB プロバイダー 'STREAM' から、列 '[!BulkInsert].ORT01' に無効なデータが返されました。"。 )

"Kyongi-do Goyang-si Ilsanseo-gu"
に変更(最初のKを半角から全角に変更)すると、エラーが発生せず、INSERTが成功します。

また、
"511弄4号1304室"
においても同様の問題が発生し、
"511弄4号1304室"
に変更すると問題なく登録できています。

他のデータにも、半角と全角の組み合わせを持つものや、半角のみ、全角のみのデータがあり、それらはエラーが発生していません。

何か思い当たることがあれば、ご教授ください。
宜しくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

varcharなので半角数字換算で40文字まで、半角はShiftJISで2バイトと仮定したとき
正常なデータはKyongi-do Goyang-si I まで入ると思います。
半角が混在したことで文字列の長さが奇数になったときに、自動判定(あふれた部分の切り捨て、エンコードの解釈)がうまくいっていないのかもしれません。
・半角にする文字の数を変えた(1文字でなく2文字を半角に)場合はどうなりますか。
・データ型をvarcharからnvarcharにした場合
・カラムの幅を255や1000など余裕のある長さにした場合
・テキストファイルのエンコーディングや改行コードはどうでしょうか。

Management Studioのインポート/エクスポートウィザードと内部的に同じとすれば
カラムの幅やエンコーディングの自動解釈はあまり賢い動作をしてくれませんので
地道に試行錯誤が必要です。
bcp.exe/sqlcmd.exeのBULK INSERT相当とすればvarcharのままでカラム幅を長く取るのが簡単です。

投稿2016/10/25 09:14

t-takayama

総合スコア167

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問