Вопрос.
У меня есть access DB и таблица SQL, которая хранит сведения. В области "Связанные SQL 7.0" я разрешил SQL доступ к access DB как SQL базе данных. Я также написал хранимую процедуру, которая копирует записи из access DB в SQL таблицу. Хранимая процедура выполняется и работает правильно из анализатора ISQL или Query Analyzer. Вызов хранимой процедуры от компании Dexterity приводит к следующему сообщению об ошибке SQL Server: для разнородных запросов требуется настроить параметры ANSI_NULLS и
ANSI_WARNINGS подключения. Это обеспечивает согласованную семантию запросов. В включить эти параметры, а затем повторно запросить запрос. Можно ли даже выполнить хранимую процедуру с дезорбностью?
Ответ. Да, но нам придется немного изменить
хранимую процедуру. Причина сбой заключается в том, что для правильного чтения таблиц SQL в тексте необходимо отключить эти параметры, чтобы перед запуском хранимой процедуры вызывались проблемы с хранимой функцией. Пользователь должен убедиться, что данные, нарушающие эти правила, не SQL таблицу. В приведенного ниже примере table_access таблица Access. В table_test таблицы SQL таблица.
if exists (select * from sysobjects where id =
object_id('dbo.access_update') and sysstat & 0xf = 4)
drop procedure dbo.access_update
GO
create procedure dbo.access_update @O_SQL_Error_State int = NULL output
as
INSERT INTO access_table ( DOCNUMBR, DOCAMNT )
SELECT access_test.DOCNUMBR, access_test.DOCAMNT
FROM access_test
GO
Мы можем изменить хранимую процедуру, чтобы настроить такие предупреждения:
if exists (select * from sysobjects where id =
object_id('dbo.access_update') and sysstat & 0xf = 4)
drop procedure dbo.access_update
GO
create procedure dbo.access_update @O_SQL_Error_State int = NULL output
as
set ANSI_NULLS ON
SET ANSI_WARNINGS ON
exec access_table2 ( DOCNUMBR, DOCAMNT )
GO
В этом случае хранимая процедура наследует атрибуты так, как она вызывается. В этом случае theaccess_tableprocedure включает ANSI_NULLS & ANSI_WARNINGS, а затем вызывает хранимую процедуру и передается в параметрах.
Эта статья посвящена документу TechKnow это ИД:10011