0

を使用して SQL Server 2008 データベースに接続していますOleDbConnectionXML1 つの列をデータ型として返しています。これを標準の文字列型に変換して、文字列変数に格納できるようにする必要があります。私が呼び出すとToString()、すべてが得られますSystem.Byte[]System.Text.Encodingクラスを使用すると、得られるのは2つの奇妙な文字だけです。

ExecuteScalarSqlDataAdapterSqlDataReader、およびを試しましたDataTable。すべてが同じ結果をもたらします。

接続タイプまたはデータ タイプを変更できません。

SSIS で ac# スクリプト タスクを使用しています。これは問題ではありませんが。

4

1 に答える 1

0

あなたの設計を理解できれば、データ フローのソースとして機能するスクリプト コンポーネントを使用できます。xml データ型を引き戻すクエリがいくつかあります。スクリプト コンポーネント ソースを使用する理由がない限り、メタ データ管理の問題を解決し、OLE DB Sourceコンポーネントを使用してください。

次のクエリを使用して入力をシミュレートします

SELECT
    CAST(D.le_xml AS xml) AS le_xml
FROM
(    
    SELECT
        Element.name
    FROM
        sys.all_columns AS Element
    FOR   
        XML AUTO, ELEMENTS
) D (le_xml);

これにより、いくつかの XML が生成されます。省略版は私のデータベースのように見えます。

<Element>
  <name>CostCenterCD</name>
</Element>
<Element>
  <name>CostCenterKEY</name>
</Element>

これは私を次のようなパッケージに導きます

ここに画像の説明を入力

OLE DB ソースから出力されるメタ データはDT_NTEXT. TSQL に相当するデータ型はnvarchar(max)、2005 以降のシステム用です。

XML が小さいことがわかっている場合は、派生列を使用して非 LOB 文字列に変換できます。Unicode が必要ない場合は、1 つの派生列で DT_NTEXT を DT_TEXT に変更し、次に DT_TEXT を DT_STR に変更した方がよいことがわかりました。それ以外の場合、変換ルートは DT_NTEXT から DT_WSTR ですが、その列の上限は 4k バイトです。

于 2013-09-26T21:20:56.543 に答える