powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / кластерные индексы мешают обновлению через sp
7 сообщений из 7, страница 1 из 1
кластерные индексы мешают обновлению через sp
    #32014230
ban_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
--Создаю представление
SET NUMERIC_ROUNDABORT OFF
GO
SET ANSI_NULLS ON
GO
SET ANSI_PADDING ON
GO
SET ANSI_WARNINGS ON
GO
SET ARITHABORT ON
GO
SET CONCAT_NULL_YIELDS_NULL ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE VIEW dbo.v_mat_remains WITH SCHEMABINDING AS
SELECT ACC.ACC_ID,
SUM(CASE WHEN J.ACC_DB=ACC.ACC_ID THEN J.J_QTY ELSE -J.J_QTY END) AS QTY,
COUNT_BIG(*) AS COUNT
FROM dbo.JOURNAL J
INNER JOIN dbo.ACCOUNTS ACC ON J.ACC_DB=ACC.ACC_ID OR J.ACC_CR=ACC.ACC_ID
WHERE J.J_QTY IS NOT NULL
GROUP BY ACC.ACC_ID
GO

--ВСТАВКА ИНДЕКСА
CREATE UNIQUE CLUSTERED INDEX v_mat_remains_Ind ON v_mat_remains (ACC_ID)
GO

--запускаю из QA
UPDATE JOURNAL SET J_QTY=10 WHERE DOC_ID=22171
--все работает на ура
--создаю процедуру
CREATE PROCEDURE iv_test @id int AS
UPDATE JOURNAL SET J_QTY=10 WHERE DOC_ID=@id
GO

--Проверяю в процедуре
exec iv_test 22171
--получаю ошибку
Server: Msg 1934, Level 16, State 1, Procedure __iv_test, Line 9
UPDATE failed because the following SET options have incorrect settings:
'ANSI_NULLS., QUOTED_IDENTIFIER'.

--Ошибка проявляется даже если установить
ALTER DATABASE testdb SET QUOTED_IDENTIFIER ON

В BOL-е на эту тему написано много, но ничего конкретного как это обйти.
Вопрос: почему запрос работает вне процедуры, а внутри процедуры нет ?
...
Рейтинг: 0 / 0
кластерные индексы мешают обновлению через sp
    #32014233
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внутри процедуры нельзя использовать GO.
...
Рейтинг: 0 / 0
кластерные индексы мешают обновлению через sp
    #32014237
ban_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Глупости, сервер сам выставляет в конце процедуры GO
В своем вопросе я показал последовательность действий, а не сам исполняемый скрипт.
...
Рейтинг: 0 / 0
кластерные индексы мешают обновлению через sp
    #32014242
BiSas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может быть проблема в том что хранимая процедура при компиляции запоминает какие были значения для
SET QUOTED_IDENTIFIER и для SET ANSI_NULLS. Поэтому когда генерится скрипт процедуры то он выглядит так:


SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

CREATE PROCEDURE <Наименование процедуры>
as
<Тело процедуры>
GO

SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS ON
GO

Так что, что бы вы не выставили. Процедура будет выполняться с теми установками с какими она была скомпилированна.
...
Рейтинг: 0 / 0
кластерные индексы мешают обновлению через sp
    #32014247
ban_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нет, я проверял. Проставлял
SET QUOTED_IDENTIFIER OFF/ОN
SET ANSI_NULLS ON/OFF

в теле процедуры вместе с кодом обновления. Не помогает.

Люди! У кого работает обновление через хранимую процедуру полей, на которые создан кластерный индекс???
...
Рейтинг: 0 / 0
кластерные индексы мешают обновлению через sp
    #32014259
DiMa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Работает
Как правило сервер сам все правильно включает, за исключение ARITHABORT.
И в хранимой процедуре в моем случае я указываю SET ARITHABORT ON. И все работает.
...
Рейтинг: 0 / 0
кластерные индексы мешают обновлению через sp
    #32014400
ban_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вы бы не могли мне показать или прислать для сравнения результат выполнения на вашем сервере
exec sp_server_info
exec sp_helpsort
exec sp_dboption 'выша база'
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / кластерные индексы мешают обновлению через sp
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]