В программе есть часть кода, который выполняет запрос:Различные результаты при выполнении запроса SQL Server
string SPROC = "#Some MSSQL Query#";
comm.CommandType = CommandType.Text;
comm.CommandText = SPROC;
comm.Parameters.Add(new SqlParameter("@Parameter1", SqlDbType.VarChar, 50)).Value = PARAM1;
comm.Parameters.Add(new SqlParameter("@Parameter2", SqlDbType.VarChar, 20)).Value = PARAM2;
comm.CommandTimeout = CurrentSettings.SQLTimeout;
conn.Open();
SqlDataAdapter adapter = new SqlDataAdapter(comm);
DataSet TempDS = new DataSet();
adapter.Fill(TempDS);
набора данных (TempDS
) таблица должна иметь около 20000 записей (количество строк), но внутри программы он говорит только 20 записей в режиме отладки.
Я запустил сценарий отдельно в той же таблице базы данных, которая используется в строке подключения SQL Server, но в SQL Server Management Studio она возвратила 20000 записей, как это должно быть сделано.
Сценарий выглядит примерно то, что нравится:
Select
[Table1].Column1,[Table2].Column1
From
[Table1]
Inner Join
[Table2] on ([Table2].Column1 = [Table1].Column2)
Where
[Table2].Column1 = @Parameter1
and ([Table1].Column1 in (Select * from dbo.Split(@Parameter2,','))
Это тот же самый текст сценария, который выполняет код, а также.
Означает ли кто-нибудь, почему программный код возвращает только часть записи, тогда как сценарий в SQL Server Management Studio возвращает все записи?
P.S. Я также проверил SQLTimeOut и установлен на 240, поэтому более чем достаточно времени для правильной записи записей. И @ Parameter1 и @ Parameter2 являются строковыми переменными.
string PARAM1 = "Random1"; //in C#
string PARAM2 = "Random2,Random3,Random4,Random5"; //in C#
@Parameter1 = PARAM1
@Parameter2 = PARAM2
Профилировщик первого использования, чтобы просмотреть запрос, отправляемый из вашего приложения в SQL, и убедиться, что это запрос, который вы ожидаете от него. –
Проверьте, что вы фактически используете одну и ту же базу данных при отладке. – Polyfun
Вы пытались запустить хранимую процедуру непосредственно на SQL напрямую, щелкнув правой кнопкой по сохраненной процедуре и выбрав «выполнить»? Если это так, убедитесь, что вы передаете те же значения параметров, что и ваша программа. – DiscipleMichael