Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Запитання.
У мене є бази даних Access і таблиця SQL, у яких зберігаються відомості. Відповідно до функцій зв'язаного сервера SQL 7.0 мені дозволено переглядати базу даних Access SQL базу даних Access як ще одну базу SQL даних. Збережену процедуру копіює записи з бази даних Access до SQL таблиці. Запущено з ISQL/Query Analyzer, збережена процедура виконується та працює належним чином. Під час виклику збереженої процедури з рухливості з'являється таке повідомлення про помилку SQL Server: Для гетерогенних запитів потрібно встановити параметри ANSI_NULLS і ANSI_WARNINGS для
підключення. Це забезпечить узгоджену семантику запитів. Увімкніть ці параметри, а потім повторіть виконання запиту. Чи можна запустити збережену процедуру з орудливості?


Відповідь. Так, але вам доведеться трохи змінити
збережену процедуру. Невдала причина полягає в тому, що для належного читання SQL озвучать таблиці, необхідно вимкнути ці параметри, щоб викликати збережені процедури, що зберігаються в режимі розкиду, ці команди виконуються, перш ніж запускати збережену процедуру. Користувач повинен переконатися, що дані, що порушують ці правила, не вводяться в SQL таблиці. У прикладі нижче нижчий table_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 потім викликає справжню збережену процедуру та передає її в наших параметрах.


Ця стаття: TechKnowledge Document ID:10011

TechKnowledge Content

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×