Ми оновлюємо тестове середовище новим сервером та оновленою версією Microsoft SQL Server, і виникли проблеми.
На новому сервері наш старий код отримає "операція заборонена, коли об'єкт закритий" під час виконання деяких збережених процедур. Це повідомлення ніколи не з’являлося на старому сервері. Коли ми відстежили її, проблему можна вирішити, додавши SET NOCOUNT ON;
до збереженої процедури.
Я переглянув значення за замовчуванням у базі даних і не побачив налаштувань, які відрізнялися б від SQL Server 2008 проти SQL Server 2014).
Яку настройку я повинен шукати, щоб вирішити це глобально, не потрібно додавати SET NOCOUNT ON
до тисячі збережених програм?
SET NOCOUNT ON;
на початку збереженої процедури (після BEGIN
). Кількість збережених процедур насправді не повинна бути проблемою.
BEGIN
- це приємно, але не потрібно.
SET NOCOUNT ON;
завжди, завжди.