Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
кластерные индексы мешают обновлению через sp
|
|||
|---|---|---|---|
|
#18+
--Создаю представление 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-е на эту тему написано много, но ничего конкретного как это обйти. Вопрос: почему запрос работает вне процедуры, а внутри процедуры нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2001, 04:42 |
|
||
|
кластерные индексы мешают обновлению через sp
|
|||
|---|---|---|---|
|
#18+
Внутри процедуры нельзя использовать GO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2001, 05:52 |
|
||
|
кластерные индексы мешают обновлению через sp
|
|||
|---|---|---|---|
|
#18+
Глупости, сервер сам выставляет в конце процедуры GO В своем вопросе я показал последовательность действий, а не сам исполняемый скрипт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2001, 06:34 |
|
||
|
кластерные индексы мешают обновлению через sp
|
|||
|---|---|---|---|
|
#18+
Может быть проблема в том что хранимая процедура при компиляции запоминает какие были значения для 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 Так что, что бы вы не выставили. Процедура будет выполняться с теми установками с какими она была скомпилированна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2001, 07:26 |
|
||
|
кластерные индексы мешают обновлению через sp
|
|||
|---|---|---|---|
|
#18+
Нет, я проверял. Проставлял SET QUOTED_IDENTIFIER OFF/ОN SET ANSI_NULLS ON/OFF в теле процедуры вместе с кодом обновления. Не помогает. Люди! У кого работает обновление через хранимую процедуру полей, на которые создан кластерный индекс??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2001, 07:46 |
|
||
|
кластерные индексы мешают обновлению через sp
|
|||
|---|---|---|---|
|
#18+
Работает Как правило сервер сам все правильно включает, за исключение ARITHABORT. И в хранимой процедуре в моем случае я указываю SET ARITHABORT ON. И все работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2001, 09:40 |
|
||
|
|

start [/forum/topic.php?fid=46&fpage=3544&tid=1825479]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
26ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 243ms |
| total: | 338ms |

| 0 / 0 |
