2016-10-27 54 views
3

私はSQL Server 2014を使用していますが、SSISデザイナSSDT BIとSisual studio 2013を使用しています。SQLの実行タスクで次のクエリを使用して、文字列データ型。オブジェクト型から文字列への変換のSSIS変数

SELECT DISTINCT (STUFF((SELECT CAST(',' + SubTableUser.UserRole AS VARCHAR(MAX)) 
     FROM TableUser AS SubTableUser 
     WHERE SubTableUser.UserID = TableUser.UserID 
     FOR XML PATH('')), 1, 1, '')) AS UserRole 
FROM TableUser 

SQLタスクエラーを実行し

値型(__ComObjectは)のみObject型の変数に変換することができます。 変数 "role"に値を割り当てる際にエラーが発生しました: "変数(DBNull)の型が変数に割り当てられています " User :: role "は現在の変数の型(String)と異なります。 変数型はObject型の変数を除いて厳密です。 "

は、私が「 システム.__ ComObject」の代わりに実際の値をスクリプトタスク String.Format("{0}", Dts.Variables["User::role"])に文字列変数にオブジェクト変数の値を代入し、この値を取得しようとしました。

+0

.Value.ToStringは()文字列に作品割り当てることができますか? –

答えて

0

オブジェクト型の変数は、クエリが一連の行を返すため、datatableとして設定されます。スクリプトタスクからデータテーブルとして読み込みます。そして、文字列変数

に必要な値を割り当てたり、トップ1は、それが単一の行を返すと明確な置き換え、それは(変数ごとに1つのだけの列)

+0

試したDataTableと運がありません。 'OleDbDataAdapter dataAdapter =新しいOleDbDataAdapter(); System.Data.DataTable dataTable = new System.Data.DataTable(); dataAdapter.Fill(dataTable、Dts.Variables ["User :: role"]。Value); foreach(dataRow dataRow in dataTable.Rows) { string RoleName; オブジェクト[] roleArray = dataRow.ItemArray; RoleName = roleArray [0] .ToString(); } ' – user25407

+0

System.Data.DataTable dataTable = new System.Data.DataTable(); dataTable = Dts.Variables ["User :: role"]。値。 – Hadi

+0

スクリプトに変数を追加することを忘れないでくださいReadOnlyVariables [Read More](http://stackoverflow.com/questions/13450289/how-to-access-ssis-package-variables-inside-script-component) – Hadi

関連する問題