Проблемы с настройками SQL Server

Dmitriy Sevastianov

В хранимой процедуре есть оператор, к-рый работает только при set ansi_nulls ON, вызов этой процедуры осуществляется через foxpro 8 с помощью драйвера ODBC для SQL Server'a. При вызове этот параметр сбрасывается на OFF и процедура не запускается....что делать ?
9 ответов

Dmitriy Sevastianov

Установка set ansi_nulls сохраняется при создании или редактировании процедуры как ее свойство. И автоматически восстанавливается сервером при запуске процедуры. Так что все равно какое значение имеет set ansi_nulls для коннекта перед _запуском_ процедуры


Dmitriy Sevastianov

дело в том что я пишу команду set ansi nulls on alter procedure и т.д.и не помогает


Dmitriy Sevastianov

дело в том что я пишу команду set ansi nulls on alter procedure и т.д.и не помогаетИ где вы это пишите ? И какую ошибку получаете ? И какая версия SQL ?


Dmitriy Sevastianov

версия sql 2000пишу в query analyserошибку не выдает


Dmitriy Sevastianov

Может быть проще выставлять SET ANSI NULL внутри процедуры, перед оператором?


Dmitriy Sevastianov

Еще раз для Dmitriy Sevastianov и Раз (1) For stored procedures, SQL Server uses the SET ANSI_NULLS setting value from the initial creation time of the stored procedure. Whenever the stored procedure is subsequently executed, the setting of SET ANSI_NULLS is restored to its originally used value and takes effect. When invoked inside a stored procedure, the setting of SET ANSI_NULLS is not changed.


Dmitriy Sevastianov

Еще раз для Dmitriy Sevastianov и Раз (1)
И со второго раза не понял.Создал тестовую процедурку на основе примера из BOL - и понял :)Действительно внутри ХП установки не меняются...Glory, получается что единственный вариант - set ansi nulls on create procedure?


Dmitriy Sevastianov

Все так,но немного не так,во всяком случае если работать с сиквелом черз Дельфи. Он при усатновке соединения сьрасывает етот флаг,и потом ему совершенно все равно с какими флагами была создана процедура,решали ету проблему следующим образом,вызов процедуры обрамляли в set'ы типа set .... ON exec Procset.... OFF Причем так обрамлялся вызов ее на клиенте,мож в фоксе покатит точно так.


Dmitriy Sevastianov

Да. для того чтобы изменить установки ansi_nulls и QUOTED_IDENTIFIER нужно уалить процедуру и создать ее заново.