Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Вопрос.
У меня есть 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

Содержимое TechKnow вЕтвь

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×