Мы обновляем нашу тестовую среду новым сервером и обновленной версией Microsoft SQL Server и столкнулись с проблемой.
На новом сервере наш старый код получит «операция запрещена, когда объект закрыт» при выполнении некоторых хранимых процедур. Это сообщение никогда не появлялось на старом сервере. Когда мы отследили его, проблему можно решить, добавив SET NOCOUNT ON;
к хранимой процедуре.
Я посмотрел на значения по умолчанию в базе данных и не увидел параметров, которые отличались (SQL Server 2008 от SQL Server 2014), связанных с настройками по умолчанию.
Какие настройки я должен рассмотреть, чтобы решить эту проблему глобально, без необходимости добавлять SET NOCOUNT ON
к тысяче сохраненных процедур?
sql-server
sql-server-2008
sql-server-2014
sp-configure
UnhandledExcepSean
источник
источник
SET NOCOUNT ON;
всегда.SET NOCOUNT ON;
в начале хранимой процедуры (послеBEGIN
). Количество хранимых процедур не должно быть проблемой.BEGIN
- это хорошо, но не обязательно.Ответы:
Конфигурация SQL Server имеет соответствующий параметр
user options
, который можно задать с помощьюsp_configure
системной хранимой процедуры. Я написал сообщение в блоге по SQL Server Science, показывающее, как проверять и устанавливать параметры пользователя.Вкратце, вы можете получить «значение конфигурации» со старого сервера, используя это:
Затем установите новый сервер, чтобы использовать те же параметры через это:
(замените <config value> значением со старого сервера).
источник
SET NOCOUNT ON
решит проблему, установив пользовательские опции на 512, это исправит.