テーブル値の UDT パラメータを入力として受け取る SQL ストアド プロシージャを Visual Studio 2008 から実行しようとしています。Visual Studio 2008 でこのパラメーターを追加しましたが、このプログラムを実行すると、"ArgumentException - 指定された型がターゲット サーバーに登録されていません" というメッセージが表示されます。だから私はこの問題をグーグルで検索し、Visual Studio 2008 で SQL Server 2008 のこのテーブル タイプのプロパティに一致する新しいクラスを作成する必要があると考えています。しかし、テーブルUDTを含むインターネット上の例は見つかりません。そして、すべてのスカラー UDT の例を試しましたが、これらを変更してテーブルベースにする方法がわかりませんでした。
また、アセンブリを作成する必要があるかもしれないことも読みましたが、これが型を SQL Server 2008 にインポートするためだけに必要なのか、型を Visual Studio にインポートするためにも使用できるのかはわかりません。ところで、データベースとその SP は表示されますが、VS 2008 のサーバー エクスプローラーにはタイプが表示されません。データベースを更新しようとしましたが、タイプはまだ表示されませんでした。私がしなければならないことは簡単です。次のようなテーブルUDTがあります。
CREATE TYPE [dbo].[parseInputFile] AS TABLE(
[NumCols] [int] IDENTITY(1,1) NOT NULL,
[strRow] [varchar](500) NOT NULL,
PRIMARY KEY CLUSTERED
そして、私の C# コードのコード スニペットは次のとおりです。
public static int AppendData(string[] myStringArray)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "dbo.uspAppendTableFromInput";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
SqlParameter param = cmd.Parameters.Add("@InputFileParam", SqlDbType.Udt);
param.UdtTypeName = "AdventureWorks.dbo.parseInputFile";
param.Value = myStringArray;
conn.Open();
RowsAffected = cmd.ExecuteNonQuery();
RowsAffected は、これを実行した後に影響を受けた行がゼロであることを示しています。私は何が欠けていますか?この簡単な例を示すウェブサイトを教えてください。それともヒントをくれますか?「param.UdtTypeName="parseInputFile";」も試しました 上記のスニペットの場合、これは同じエラーを返しました。ところで、「myStringArray」は基本的にテーブルです。ストリングスシリーズです。例: myStringArray[0] = "Hello|Bob|How|Do"、myStringArray[1] = "I|Am|Fine|And" など。