Почему существует дополнительный "(затронут 1 ряд (ы))"
SSMS показывает дополнительный (1 row(s) affected)
каждый раз, когда я выполняю insert/update
, Например, выполните следующий SQL
declare @a table (a int)
insert into @a values (1), (2)
update @a set a = 3
И SSMS отобразит следующее сообщение.
(Затронуты 2 строки) (Затронут 1 ряд) (Затронуты 2 строки) (Затронут 1 ряд)
Я не нашел триггера базы данных / сервера. Что может вызвать лишнее (1 row(s) affected)
?
3 ответа
Это обычно означает, что у вас есть actual execution plan
опция включена. План выполнения отправляется как дополнительный набор строк, что приводит к дополнительному (1 row(s) affected)
сообщение.
Чтобы отключить фактический план выполнения, нажмите Ctrl+M.
Этого не должно случиться. попытаться заглянуть в actual execution plan
что там происходит.
Я нашел этот пост, так как столкнулся с той же проблемой, но без включенных параметров плана выполнения или каких-либо триггеров.
У меня был очень простой фрагмент кода, который обычно не затрагивал никакие строки:
DECLARE @dbname VARCHAR(50) = 'AdventureWorks'
При тестировании некоторых других функций SQL Server с помощью Management Studio v18.10 приведенный выше код возвращал пару строк вывода, которые не ожидались.
(затронуто 0 строк)(затронуто 1 строка) Время завершения: 2022-01-07T12:04:36.6414442+00:00
В моем случае я отследил его до настроек подключения, где была отмечена / выбрана опция « Включить постоянное шифрование (шифрование столбца) ». Я тестировал Always Encrypted, который использует шифрование параметров.
Он появляется только в том случае, если переменная объявлена и установлена в том же операторе.
Установка для параметра « Включить постоянное шифрование» (шифрование столбца) значения «не выбрано/не проверено» исправило отчеты о затронутых строках.
Добавлено, чтобы помочь другим, кто может найти эту проблему.
Фитц