ネイティブADO/OLEソースコンポーネントを使用することはできません。あなたは、ソースとして機能するスクリプトコンポーネントを使用してbillinkc私SQL TVP post
string connectionString = @"Data Source=localhost;Initial Catalog=master;Integrated Security=True";
System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(connectionString);
System.Data.DataTable dataTable = null;
// note that my data table does not have to be the same
// as my UDTT, nor do my columns have to have the same name
// Types-yes. Ordinal, probably so
dataTable = new System.Data.DataTable("Sample");
dataTable.Columns.Add("tweep", System.Type.GetType("System.String"));
dataTable.Columns.Add("have_met", System.Type.GetType("System.Boolean"));
// add rows to my data table but really, this could be any source
dataTable.Rows.Add(new object[] { "billinkc", true });
dataTable.Rows.Add(new object[] { "BrentO", true });
dataTable.Rows.Add(new object[] { "buckwoody", false });
// Hooray for #sqlsat35 and meeting Jen & Sean
dataTable.Rows.Add(new object[] { "MidnightDBA", true });
System.Data.SqlClient.SqlConnection connection = null;
System.Data.DataSet results = null;
System.Data.SqlClient.SqlCommand command = null;
System.Data.SqlClient.SqlDataReader dataReader = null;
connection = new System.Data.SqlClient.SqlConnection(connectionString);
try
{
connection.Open();
command = new System.Data.SqlClient.SqlCommand("TwitterAdd");
command.CommandType = System.Data.CommandType.StoredProcedure;
command.Connection = connection;
// Assigning a table valued parameter looks much like any other parameter
System.Data.SqlClient.SqlParameter tvp = command.Parameters.AddWithValue("@tvp", dataTable);
// this is the only special sauce (not required but helpful)
tvp.SqlDbType = System.Data.SqlDbType.Structured;
tvp.TypeName = "dbo.CONTRIVED_EXAMPLE";
dataReader = command.ExecuteReader();
if (dataReader.HasRows)
{
// pseudo logic here
while(dataReader.Read())
{
MyBuffer.AddRow();
MyBuffer.Col1 = dataReader["Col1"].ToString();
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
おかげから
関連ビットを作成するために、.NETを使用する必要があります。私はADO.NET接続マネージャに接続してSQLタスクを実行する際にオブジェクト変数を準備しています。しかし、私がスクリプトタスクの読み込み専用変数を読み込んでいるときに、データセットのテーブルが空であると表示されます。私はSSMSで同じものを実行すると、テーブル型変数のデータを見ることができます。私は、データセットの変数を読み込み、最初のテーブルを使ってSPに渡しています。なぜオブジェクトがnullになるのかわかりません。 –
実行sqlタスクは、ブレークポイントを設定してデータを見ることができないため、オブジェクト変数にデータを設定できないようです。これは、結合された2つのテーブルからいくつかの行をフェッチするselectステートメントです。問題が何であるか分かりません。結果セットを完全な結果セットに設定しました。単一行に変更すると、「単一行結果タイプの結果列に値を設定できません。クエリで空の結果セットが返されました。」 –
複数のコメントを追加して申し訳ありません。私はそれが働くように近づいているように追加しています。今私は奇妙な問題に直面しています。私は実行SQLタスクでDBからのリンク(https://abcd/xyz/ijk.aspx)を格納している変数を持っています。今私は別の実行SQLタスクでオブジェクト変数を作成する際に使用していますが、「https:の近くに不正な構文があります」というエラーが発生しています。私はこれがエスケープシーケンスと何か関係があるか、特別な処理が必要であるとは確信していません。 –