Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Здравствуйте!

Прилинковал Server 2000 к 2008. При запуске процедуры с обращением к данным прилинкованного сервера получаю ошибку:
"Для выполнения гетерогенных запросов в параметрах соединения необходимо установить параметры ANSI_NULLS и ANSI_WARNINGS. Это гарантирует согласованность семантики запросов. Установите указанные параметры и затем повторите запрос."

Подскажите, пожалуйста, в какой момент устанавливать эти параметры?
12 мар 15, 12:10    [17374341]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
Glory
Member

Откуда:
Сообщений: 104751
ArkadyL
Подскажите, пожалуйста, в какой момент устанавливать эти параметры?

В любой. Главное, чтобы он был ДО запуска гетерогенного запроса. И не изменения до запуска гетерогенного запроса.

https://msdn.microsoft.com/en-us/library/ms187926.aspx - Interoperability
12 мар 15, 12:25    [17374497]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Что-то установление этих параметров внутри процедуры не влияет на появление ошибки. Кроме того, на стадии установления соединения с основным сервером они и так были назначены.

К сообщению приложен файл. Размер - 35Kb
12 мар 15, 14:10    [17375277]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
Glory
Member

Откуда:
Сообщений: 104751
ArkadyL
они и так были назначены.

А как вы проверили, какими они были на момент выполнения запроса ?

ArkadyL
Что-то установление этих параметров внутри процедуры

Вы предложенную ссылку открывали ?
12 мар 15, 14:13    [17375305]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Прочёл, даже по-русски для, как надеялся, большей ясности. Я устанавливал их и до создания процедуры, и внутри, но безрезультатно. В сообщении об ошибке не говорится, какими их рекомендуется сделать. На обоих серверах одинаковыми? Как понимать фразу "необходимо установить параметры ANSI_NULLS и ANSI_WARNINGS"? Эти параметры и так ведь установлены хотя бы по умолчанию.
Glory
А как вы проверили, какими они были на момент выполнения запроса?

А они обязаны иметь какое-то определённое значение?
12 мар 15, 15:07    [17375721]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
Glory
Member

Откуда:
Сообщений: 104751
ArkadyL
Прочёл, даже по-русски для, как надеялся, большей ясности.

Ничего вы не прочитали
The Database Engine saves the settings of both SET QUOTED_IDENTIFIER and SET ANSI_NULLS when a Transact-SQL procedure is created or modified. These original settings are used when the procedure is executed. Therefore, any client session settings for SET QUOTED_IDENTIFIER and SET ANSI_NULLS are ignored when the procedure is running.

ArkadyL
А они обязаны иметь какое-то определённое значение?

Вы и текст своего сообщения об ошибке что ли не читали ?
"Для выполнения гетерогенных запросов в параметрах соединения необходимо установить параметры ANSI_NULLS и ANSI_WARNINGS."
12 мар 15, 15:13    [17375758]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Glory
Вы и текст своего сообщения об ошибке что ли не читали?
"Для выполнения гетерогенных запросов в параметрах соединения необходимо установить параметры ANSI_NULLS и ANSI_WARNINGS."

Этот текст я читал неоднократно и последнее время только и задаюсь вопросом, где же их всё-таки установить. Как и приведённую цитату из справки.

These original settings are used when the procedure is executed

Значит какие-то установки всё-таки есть. Но в сообщении об ошибке нет намёка, какими бы их надобно сделать.

ANSI_WARNINGS я устанавливал внутри процедуры с обоими значениями, но ошибка не исчезает.
12 мар 15, 15:41    [17376025]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
Glory
Member

Откуда:
Сообщений: 104751
ArkadyL
Но в сообщении об ошибке нет намёка, какими бы их надобно сделать.

Мда. Они должны быть "установлены". Вы не понимаете смысла этого слова ?

ArkadyL
Этот текст я читал неоднократно и последнее время только и задаюсь вопросом, где же их всё-таки установить.

Мда
"Для выполнения гетерогенных запросов в параметрах соединения необходимо установить параметры ANSI_NULLS и ANSI_WARNINGS."

ArkadyL
ANSI_WARNINGS я устанавливал внутри процедуры с обоими значениями, но ошибка не исчезает.

И вы уверяете, что что-то там читали ? Да вы 3 предложения не можете осилить
The Database Engine saves the settings of both SET QUOTED_IDENTIFIER and SET ANSI_NULLS when a Transact-SQL procedure is created or modified. These original settings are used when the procedure is executed. Therefore, any client session settings for SET QUOTED_IDENTIFIER and SET ANSI_NULLS are ignored when the procedure is running.
12 мар 15, 15:44    [17376054]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Glory
ArkadyL
Подскажите, пожалуйста, в какой момент устанавливать эти параметры?

В любой. Главное, чтобы он был ДО запуска гетерогенного запроса. И не изменения до запуска гетерогенного запроса.

Не осилить, а осмыслить. Можно так писать, что и с одним предложением не справиться.
Может, перефразировать вопрос так. В каком месте процедуры (или всей программы) устанавливать эти параметры?
И о параметрах соединения с каким сервером говорится?
12 мар 15, 16:03    [17376248]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
Glory
Member

Откуда:
Сообщений: 104751
ArkadyL
В каком месте процедуры (или всей программы) устанавливать эти параметры?

В любом. Главное ДО запуска гетерогенного запроса.

ArkadyL
И о параметрах соединения с каким сервером говорится?

Разумеется с тем, на котором вы собрались выполнять ваш код.
12 мар 15, 16:05    [17376273]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Так ведь они установлены как раз во время создания соединения при запуске клиентского приложения, и все процедуры с запросами к таблицам основного сервера выполняются без предупреждения. А если в процедурине присутствует запрос к линкованному серверу - с упомянутым предварительным предупреждением. Вот, например, на картинке, прикреплённой ранее, рекомендуемые настройки дополнительно сделаны в одном из любых мест до выполнения запроса.
12 мар 15, 16:19    [17376410]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
Glory
Member

Откуда:
Сообщений: 104751
ArkadyL
Так ведь они установлены

Это вы сами лично своим кодом сделали ? Или просто так считаете ?
Или может вы сделали проверку настроек соедиения прямо перед строкой выполнения гетерогенного запроса ?

ArkadyL
Вот, например, на картинке, прикреплённой ранее, рекомендуемые настройки дополнительно сделаны в одном из любых мест до выполнения запроса.

Я вам рекомнедую перечитывать абзац

The Database Engine saves the settings of both SET QUOTED_IDENTIFIER and SET ANSI_NULLS when a Transact-SQL procedure is created or modified. These original settings are used when the procedure is executed. Therefore, any client session settings for SET QUOTED_IDENTIFIER and SET ANSI_NULLS are ignored when the procedure is running.

до полного простветления
12 мар 15, 16:23    [17376451]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
Glory
Member

Откуда:
Сообщений: 104751
И кроме того, рекомендую поразмышлять, каким образом на вашей картинке команда SET ANSI_WARNINGS OFF _устанавливает_ параметер.
12 мар 15, 16:45    [17376633]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Помогла установка SET ANSI_WARNINGS ON, но не в любом месте до выполнения запроса, а отдельной командой (не в самой процедуре) . Если прописать её в самой процедуре, то почему-то первый раз её запуск при каждом новом запуске приложения вызывает пресловутое предупреждение.
12 мар 15, 17:40    [17377080]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
Glory
Member

Откуда:
Сообщений: 104751
ArkadyL
Помогла установка SET ANSI_WARNINGS ON,

Так вот это и называется "необходимо установить параметры ANSI_NULLS и ANSI_WARNINGS"

ArkadyL
но не в любом месте до выполнения запроса, а отдельной командой (не в самой процедуре) . Если прописать её в самой процедуре, то почему-то первый раз её запуск при каждом новом запуске приложения вызывает пресловутое предупреждение.

Наверное потому, что кто-то путает комнаду создания процедуры с командой запуска процедуры
12 мар 15, 17:44    [17377106]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381
ansi_warnings перед компиляцией запроса должен устанавливаться, на самом деле. так что, в самой процедуре, в которой запрос происходит, особого смысла устанавливать его нет. надо или в соединении, или во внешней процедуре.
12 мар 15, 18:28    [17377328]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
ArkadyL
Member

Откуда: СПб
Сообщений: 164
Glory
Так вот это и называется "необходимо установить параметры ANSI_NULLS и ANSI_WARNINGS"

Наконец-то нашло просветление: ON - установить параметры, OFF - не устанавливать параметры.
13 мар 15, 10:14    [17379163]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
Кесарь
Member

Откуда:
Сообщений: 676
ArkadyL
Наконец-то нашло просветление: ON - установить параметры, OFF - не устанавливать параметры.


А это потому что все эти сообщения мягко говоря не по русски написаны. А некоторые даже не понимают, в чём проблема: "а чо, всё понятно написано".

"Установить" - это именно что "установить". Любое значение. А вот установить определённое значение это либо "включить", либо "выключить".


Ну и конечно же MS такой MS. Сервер пишет: "Необходимо установить"... Так установи! Какого хрена этой чушью должен я заниматься? Тебе, серверу это надо, ты и включай. Такое впечатление, что господа авторы всего этого дела в параллельном мире пребывают, когда пишут всё это.
29 май 15, 21:47    [17708643]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31961
Кесарь
ArkadyL
Наконец-то нашло просветление: ON - установить параметры, OFF - не устанавливать параметры.
А это потому что все эти сообщения мягко говоря не по русски написаны. А некоторые даже не понимают, в чём проблема: "а чо, всё понятно написано".
Корректнее было бы написать в сообщении об ошибке: "необходимо установить в ON параметры ..."
Кесарь
Ну и конечно же MS такой MS. Сервер пишет: "Необходимо установить"... Так установи! Какого хрена этой чушью должен я заниматься? Тебе, серверу это надо, ты и включай. Такое впечатление, что господа авторы всего этого дела в параллельном мире пребывают, когда пишут всё это.
Тут не соглашусь. Незачем серверу в коннекте тыщи раз в секунду менять такие установки туда-обратно. Программист этим должен управлять.
30 май 15, 01:22    [17709252]     Ответить | Цитировать Сообщить модератору
 Re: Ошибка: "Для выполнения гетерогенных запросов ... параметры ANSI_NULLS и ANSI_WARNINGS"  [new]
Glory
Member

Откуда:
Сообщений: 104751
Кесарь
А это потому что все эти сообщения мягко говоря не по русски написаны. А некоторые даже не понимают, в чём проблема: "а чо, всё понятно написано".

"Установить" - это именно что "установить". Любое значение. А вот установить определённое значение это либо "включить", либо "выключить".

Это потому, что в оригинале сообщения написаны по английски.
И в оригинале он выглядит так

Msg 7405, Level 16, State 1, Line 1
Heterogeneous queries require the ANSI_NULLS and ANSI_WARNINGS options to be set for the connection. This ensures consistent query semantics. Enable these options and then reissue your query.

Надеюсь enable/disable у вас соответствует "включить"/"выключить" ?
так что понимают те "некоторые", которые именно читают сообщения, а не просматривают их
31 май 15, 14:02    [17712271]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить