Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 quoted_identifier хелп плиз!  [new]
abrashka
Member

Откуда:
Сообщений: 536
День добрый!

Есть скрипт, который нормально бежит в 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]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
В management studio свои настройки соединения.
21 апр 14, 13:58    [15910747]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
abrashka,

SSMS -> Tools -> Options -> Query Execution -> SQL Server -> ANSI
22 апр 14, 02:13    [15913649]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
abrashka
Member

Откуда:
Сообщений: 536
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]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
Выполните
set quoted_identifier on;
go

в скрипте создания CLR процедуры на сервере в SSMS.
22 апр 14, 10:53    [15914485]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
abrashka
Member

Откуда:
Сообщений: 536
Владислав Колосов,

Я прописываю в джобе set quoted_identifier on; и это решает проблему, но ситуация такая, что на одном сервере такой-же джоб бежит без проблем, а на другом необходимо добавлять set quoted_identifier on; , при чем на обоих серверах в SSMS скрипт бежит без добавления set quoted_identifier on;

Подозреваю, что речь идет о настройках агента, которые различны на этих серверах, вопрос- где искать эти настройки?


Спасибо!
22 апр 14, 11:47    [15914837]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Glory
Member

Откуда:
Сообщений: 104751
abrashka
вопрос- где искать эти настройки?

Надо не искать, а не задавать нужные настройки явно в скрипте
22 апр 14, 11:53    [15914873]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
abrashka
Member

Откуда:
Сообщений: 536
Glory,

Сорри, не понял подсказку, что я делаю не так?
22 апр 14, 11:58    [15914903]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Glory
Member

Откуда:
Сообщений: 104751
abrashka
Сорри, не понял подсказку, что я делаю не так?

Не пишите в своем скрипте set quoted_identifier on
22 апр 14, 11:59    [15914909]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
Нет, при создании CLR процедуры необходимо сделать то, что я написал.
Что-то вроде

SET ANSI_NULLS OFF
GO

SET QUOTED_IDENTIFIER OFF
GO

CREATE PROCEDURE ...
AS
EXTERNAL NAME ...


Выполнить это в SSMS. Вы опубликовали CLR процедуру некорректно. Можете ее дропнуть, а затем как выше.
22 апр 14, 12:01    [15914923]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
Т.е. ON, если Вам нужно так.
22 апр 14, 12:02    [15914929]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
abrashka
Member

Откуда:
Сообщений: 536
Владислав Колосов,

Спасибо за ответы!
Процедуру CLR я изменить не могу.

Совсем запутался, усложнил вопрос... сорри!

Так и не понял, почему один и тот же джоб на одном сервере бежит нормально, а на другом падает...
22 апр 14, 12:07    [15914961]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Glory
Member

Откуда:
Сообщений: 104751
abrashka
почему один и тот же джоб на одном сервере бежит нормально, а на другом падает...

Потому что на одном серере вам повезло.
А чтобы везло всегда, нужно в своем коннекте явно указывать нужные вам SET-ы.
Но вы наверное просто не знаете, какие SET-ы требует ваш скрипт.
22 апр 14, 12:09    [15914978]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
Процедуру CLR я изменить не могу.


Не можете ее удалить и создать? Тогда Вам придется писать SET в джобе.


автор
Так и не понял, почему один и тот же джоб на одном сервере бежит нормально, а на другом падает...

Выше я написал - почему. Потому, что процедура была создана не так, как надо на одном из серверов.
22 апр 14, 12:15    [15915018]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
abrashka
Member

Откуда:
Сообщений: 536
Glory,
Спасибо!


Владислав Колосов,
Можно как-то "доказать" что на самом деле процедуры создавались с разными SET-ами? В принципе таго быть не должно, но если произошло, то нужно понять почему.
Спасибо!
22 апр 14, 12:55    [15915414]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
Конечно, посмотрите свойства функции или процедуры, что там у вас, в SSMS.
22 апр 14, 14:40    [15916264]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
abrashka
Member

Откуда:
Сообщений: 536
Владислав Колосов,

На обоих серверах одинаково:
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]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
o-o
Guest
abrashka
Можно как-то "доказать" что на самом деле процедуры создавались с разными SET-ами?


смотрите в sys.sql_modules

Column name             Data type      Description   
uses_quoted_identifier bit Module was created with SET QUOTED_IDENTIFIER ON.
23 апр 14, 00:51    [15919848]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6727
abrashka
В принципе таго быть не должно, но если произошло, то нужно понять почему.
Студия SSMS, а точнее незнание психологии.
SSMS автоматически вставляет шапку из этих SET-ов, когда показывает код объекта. Эти сеты правдой или неправдой попадают в всевозможные скрипты. И как всегда бывает есть со значениями как ON так и OFF. И вот эти установки постоянно прыгают с объекта на объект и распространяется как раковая опухоль, особенно когда ещё и проггеров коллектив.

Решить просто - настроить Аудит.
23 апр 14, 01:08    [15919876]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mnior
Решить просто - настроить Аудит.

Гораздо проще запомнить, что скрипт инасталяции любого объекта доложен содержать все нужные SET-ы
Тогда не нужно будет ничего не настраивать, не аудитить
23 апр 14, 09:24    [15920307]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
o-o
abrashka
Можно как-то "доказать" что на самом деле процедуры создавались с разными SET-ами?


смотрите в sys.sql_modules



для сборок не сканает...только объекты типа P, RF, V, TR, FN, IF, TF и R

есть sys.assembly_modules, но там не принципиальны SETы
23 апр 14, 10:18    [15920568]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
Кстати, запускать сервер от имени учётки NT AUTHORITY\SYSTEM - это ай-ай-ай.
У нас сборки не требуют SET QUOTED_IDENTIFIER = ON, возможно, дело в другом.
23 апр 14, 11:39    [15921181]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: quoted_identifier хелп плиз!  [new]
Ejhi
Member

Откуда:
Сообщений: 103
Glory
Потому что на одном серере вам повезло.


Добрый день.
Можно поподробнее, что значит "повезло"?
И где можно посмотреть/задать дефолтные значения параметров подключения SQLAgent?
8 июн 15, 11:54    [17743785]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 9155
Копка "параметры" при соединении.
8 июн 15, 12:07    [17743856]     Ответить | Цитировать Сообщить модератору
 Re: quoted_identifier хелп плиз!  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ejhi
И где можно посмотреть/задать дефолтные значения параметров подключения SQLAgent?

Надо в своих скриптах писать явно команды SET
8 июн 15, 12:11    [17743876]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить