Я пытаюсь запустить хранимый процесс SQL из Visual Studio 2008, который принимает табличный параметр UDT в качестве входных данных. Я добавил этот параметр в Visual Studio 2008, но при запуске этой программы появляется «ArgumentException - указанный тип не зарегистрирован на целевом сервере».
Поэтому я решил эту проблему и решил, что мне нужно создать новый класс в Visual Studio 2008, соответствующий свойствам этого типа таблицы из SQL Server 2008. Но я не могу найти в Интернете никаких примеров, связанных с table UDT , И я перепробовал все примеры скалярных UDT, но я не был уверен, как их изменить, чтобы они были основаны на таблицах.
Я также прочитал, что мне может понадобиться создать сборку, хотя я не знаю, требуется ли это только для импорта типа в SQL Server 2008 или его также можно использовать для импорта типа в Visual Studio. Кстати, я не вижу никаких типов, перечисленных в обозревателе серверов в VS 2008, хотя я вижу базу данных и ее SP. Я попытался обновить базу данных, но типы все еще не показывались.
Что мне нужно сделать, это просто. У меня есть таблица 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();
RowsActed показать ноль строк, затронутых после выполнения этого. Что мне не хватает? Можете ли вы указать мне на сайт, демонстрирующий простой пример этого. Или еще дать мне совет? Я также попытался 'param.UdtTypeName = "parseInputFile";' для приведенного выше фрагмента, но это вернуло ту же ошибку. Кстати, «myStringArray» по сути является таблицей. Это серия строк. например myStringArray [0] = "Hello | Bob | How | Do", myStringArray [1] = "I | Am | Fine | And" и т. д.