Приносим извинения, если об этом уже спрашивали. Я искал час и не нашел точной проблемы, с которой я столкнулся.
Я использую SMO для выполнения некоторых запросов к SQL Server, потому что я читал, что он может обрабатывать операторы GO
, а не System.Data.SqlClient
.
Я выполняю этот запрос:
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
UPDATE Program
SET ENABLED = '1'
WHERE Program_ID = '64' AND Program_Name = 'DoesSomething'
Я фиксирую "строки, затронутые":
int numberOfRows = db.ConnectionContext.ExecuteNonQuery(s.Query);
Проблема, с которой я столкнулся, заключается в том, что это каждый раз возвращает значение -1. Я проверяю базу данных за кулисами, и она ОБЯЗАТЕЛЬНО обновляет значение каждый раз, и когда я вручную запускаю запрос в SSMS, я получаю подтверждение (затронуто 1 строка).
После прочтения некоторых других сообщений я пришел к выводу, что проблема может заключаться в первых четырех строках этого запроса. Я удалил операторы GO
, и запрос вернул значение 1 вместо -1.
Большинство запросов / сценариев, которые пишет моя группа, имеют GO
, SET ANSI_NULLS ON
и SET QUOTED_IDENTIFIER ON
в значительной степени стандартные, поэтому они везде (еще одна проблема на другой день - я знаю, что в этом случае это чрезмерно / неактуально). Это как-то влияет на количество строк? Если да, то можете ли вы дать какое-то направление обходного пути или, возможно, другой способ получить этот результат?
И да ... Я знаю, что ExecuteNonQuery
должен возвращать количество затронутых строк. Мне просто нужно знать, почему он не возвращает то, что я думаю (в данном случае 1).
Is this affecting my row count somehow?
Вы доказали, что это так, и у вас есть решение. Я не знаю, почему это имеет значение, но вы сказали, что дополнительные утвержденияexcessive/irrelevant in this case
. - person Dan Wilson   schedule 05.04.2018GO
не оператор (SQL) - это просто разделитель, используемый SQL Server Management Studio (и это причина, по которой использование обычного SQL не работает - посколькуGO
на самом деле не является оператором SQL ....) - person marc_s   schedule 05.04.2018