Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
abrashka Member Откуда: Сообщений: 517 |
День добрый! Есть скрипт, который нормально бежит в management studio: DECLARE @List NVARCHAR(MAX) SET @List = '1' UPDATE MyTable1 SET MyCol = NULL FROM MyTable(NOLOCK) LEFT JOIN MyFun(@List) ON a = b WHERE MyCol IS NOT NULL AND a IS NULL CLR функция MyFun разбивает строку на столбик. Если копирую этот код в степ джоба и запускаю на той-же базе, то получаю ошибку: Executed as user: NT AUTHORITY\SYSTEM. UPDATE failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or filtered indexes and/or query notifications and/or XML data type methods and/or spatial index operations. [SQLSTATE 42000] (Error 1934). The step failed. Если в начало скрипта в джобе добавляю: set quoted_identifier on; то джоб бежит без проблем, несмотря на то, что при запуске в студии ничего не добавлял и все было в порядке. Как можно объяснить эту ситуацию? MyDB: Quoted Identifiers Enabled- True MSDB: Quoted Identifiers Enabled- False Спасибо! |
20 апр 14, 14:48 [15907226] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8317 |
В management studio свои настройки соединения. |
21 апр 14, 13:58 [15910747] Ответить | Цитировать Сообщить модератору |
Mind Member Откуда: Лучший город на Земле Сообщений: 2322 |
abrashka, SSMS -> Tools -> Options -> Query Execution -> SQL Server -> ANSI |
22 апр 14, 02:13 [15913649] Ответить | Цитировать Сообщить модератору |
abrashka Member Откуда: Сообщений: 517 |
Mind, Спасибо! в SSMS обозначено SET QUOTED_IDENTIFIER это значит, что можно не писать set quoted_identifier on; при запуске из SSMS? а что же происходит в агенте? там тоже есть какие-то настройки? Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64) Jun 17 2011 00:54:03 Copyright (c) Microsoft Corporation Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) (Hypervisor) |
22 апр 14, 10:27 [15914327] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8317 |
Выполните set quoted_identifier on; go в скрипте создания CLR процедуры на сервере в SSMS. |
22 апр 14, 10:53 [15914485] Ответить | Цитировать Сообщить модератору |
abrashka Member Откуда: Сообщений: 517 |
Владислав Колосов, Я прописываю в джобе set quoted_identifier on; и это решает проблему, но ситуация такая, что на одном сервере такой-же джоб бежит без проблем, а на другом необходимо добавлять set quoted_identifier on; , при чем на обоих серверах в SSMS скрипт бежит без добавления set quoted_identifier on; Подозреваю, что речь идет о настройках агента, которые различны на этих серверах, вопрос- где искать эти настройки? Спасибо! |
22 апр 14, 11:47 [15914837] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Надо не искать, а не задавать нужные настройки явно в скрипте |
||
22 апр 14, 11:53 [15914873] Ответить | Цитировать Сообщить модератору |
abrashka Member Откуда: Сообщений: 517 |
Glory, Сорри, не понял подсказку, что я делаю не так? |
22 апр 14, 11:58 [15914903] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Не пишите в своем скрипте set quoted_identifier on |
||
22 апр 14, 11:59 [15914909] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8317 |
Нет, при создании CLR процедуры необходимо сделать то, что я написал. Что-то вроде SET ANSI_NULLS OFF GO SET QUOTED_IDENTIFIER OFF GO CREATE PROCEDURE ... AS EXTERNAL NAME ... Выполнить это в SSMS. Вы опубликовали CLR процедуру некорректно. Можете ее дропнуть, а затем как выше. |
22 апр 14, 12:01 [15914923] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8317 |
Т.е. ON, если Вам нужно так. |
22 апр 14, 12:02 [15914929] Ответить | Цитировать Сообщить модератору |
abrashka Member Откуда: Сообщений: 517 |
Владислав Колосов, Спасибо за ответы! Процедуру CLR я изменить не могу. Совсем запутался, усложнил вопрос... сорри! Так и не понял, почему один и тот же джоб на одном сервере бежит нормально, а на другом падает... |
22 апр 14, 12:07 [15914961] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Потому что на одном серере вам повезло. А чтобы везло всегда, нужно в своем коннекте явно указывать нужные вам SET-ы. Но вы наверное просто не знаете, какие SET-ы требует ваш скрипт. |
||
22 апр 14, 12:09 [15914978] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8317 |
Процедуру CLR я изменить не могу.
Не можете ее удалить и создать? Тогда Вам придется писать SET в джобе.
Выше я написал - почему. Потому, что процедура была создана не так, как надо на одном из серверов. |
||
22 апр 14, 12:15 [15915018] Ответить | Цитировать Сообщить модератору |
abrashka Member Откуда: Сообщений: 517 |
Glory, Спасибо! Владислав Колосов, Можно как-то "доказать" что на самом деле процедуры создавались с разными SET-ами? В принципе таго быть не должно, но если произошло, то нужно понять почему. Спасибо! |
22 апр 14, 12:55 [15915414] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8317 |
Конечно, посмотрите свойства функции или процедуры, что там у вас, в SSMS. |
22 апр 14, 14:40 [15916264] Ответить | Цитировать Сообщить модератору |
abrashka Member Откуда: Сообщений: 517 |
Владислав Колосов, На обоих серверах одинаково: ALTER FUNCTION MyFunction(@str [nvarchar](max)) RETURNS TABLE ( [IntValue] [int] NULL ) WITH EXECUTE AS CALLER AS EXTERNAL NAME [UserDefinedFunctions].[StringSplitFunctions].[SplitIntList] В свойствах: Property QuotedIdentifierStatus is not available for UserDefinedFunction 'MyFunction'. This property may not exist for this object, or may not be retrievable due to insufficient access rights. |
22 апр 14, 14:57 [15916436] Ответить | Цитировать Сообщить модератору |
o-o
Guest |
смотрите в sys.sql_modules Column name Data type Description |
||
23 апр 14, 00:51 [15919848] Ответить | Цитировать Сообщить модератору |
Mnior Member Откуда: Кишинёв Сообщений: 6723 |
SSMS автоматически вставляет шапку из этих SET-ов, когда показывает код объекта. Эти сеты правдой или неправдой попадают в всевозможные скрипты. И как всегда бывает есть со значениями как ON так и OFF. И вот эти установки постоянно прыгают с объекта на объект и распространяется как раковая опухоль, особенно когда ещё и проггеров коллектив. Решить просто - настроить Аудит. |
||
23 апр 14, 01:08 [15919876] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Гораздо проще запомнить, что скрипт инасталяции любого объекта доложен содержать все нужные SET-ы Тогда не нужно будет ничего не настраивать, не аудитить |
||
23 апр 14, 09:24 [15920307] Ответить | Цитировать Сообщить модератору |
Knyazev Alexey Member Откуда: Екб -> Мск Сообщений: 10234 Блог |
для сборок не сканает...только объекты типа P, RF, V, TR, FN, IF, TF и R есть sys.assembly_modules, но там не принципиальны SETы |
||||
23 апр 14, 10:18 [15920568] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8317 |
Кстати, запускать сервер от имени учётки NT AUTHORITY\SYSTEM - это ай-ай-ай. У нас сборки не требуют SET QUOTED_IDENTIFIER = ON, возможно, дело в другом. |
23 апр 14, 11:39 [15921181] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
Ejhi Member Откуда: Сообщений: 103 |
Добрый день. Можно поподробнее, что значит "повезло"? И где можно посмотреть/задать дефолтные значения параметров подключения SQLAgent? |
||
8 июн 15, 11:54 [17743785] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8317 |
Копка "параметры" при соединении. |
8 июн 15, 12:07 [17743856] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Надо в своих скриптах писать явно команды SET |
||
8 июн 15, 12:11 [17743876] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: [1] 2 вперед Ctrl→ все |
Все форумы / Microsoft SQL Server | ![]() |