Мы обновляем нашу тестовую среду новым сервером и обновленной версией Microsoft SQL Server и столкнулись с проблемой.
На новом сервере наш старый код получит «операция запрещена, когда объект закрыт» при выполнении некоторых хранимых процедур. Это сообщение никогда не появлялось на старом сервере. Когда мы отследили его, проблему можно решить, добавив SET NOCOUNT ON;
к хранимой процедуре.
Я посмотрел на значения по умолчанию в базе данных и не увидел параметров, которые отличались (SQL Server 2008 от SQL Server 2014), связанных с настройками по умолчанию.
Какие настройки я должен рассмотреть, чтобы решить эту проблему глобально, без необходимости добавлять SET NOCOUNT ON
к тысяче сохраненных процедур?
SET NOCOUNT ON;
в начале хранимой процедуры (после BEGIN
). Количество хранимых процедур не должно быть проблемой.
BEGIN
- это хорошо, но не обязательно.
SET NOCOUNT ON;
всегда.