Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

Въпрос:
Имам DB на Access и таблица с SQL, която съхранява информация. Под функциите на Свързания сървър на SQL 7.0 позволих на SQL да вижда базата данни на Access като просто друга SQL данни. Написах и съхранена процедура, която копира записите от DB на Access в таблицата SQL. Изпълнява се от ISQL/Query Analyzer, съхранената процедура се изпълнява и работи правилно. Обаждането на съхранената процедура от Dexterity създава следното съобщение за грешка от SQL Server:
Хетерогенните заявки изискват опциите за ANSI_NULLS и ANSI_WARNINGS да бъдат зададени за връзката. Това гарантира съгласувана семантика на заявките. Разрешете тези опции и след това преиздавайте заявката си. Мога ли дори да изпълнявам тази съхранена процедура от Dexterity?


Отговор:
Да, но ще трябва леко да променим съхранената процедура. Причината, поради която е неуспешно, е, че за да четете правилно таблиците на SQL в Dexterity, тези опции трябва да бъдат изключени, така че повикването на съхранени процедури в Dexterity да издава тези команди, преди да изпълните съхранената процедура. Потребителят трябва да се увери, че данните, които нарушават тези правила, не се въвеждат в 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



В този случай съхранената процедура наследява атрибутите на това, което го нарича. За тази ситуация Dexterity theaccess_tableprocedure, което включва ANSI_NULLS & ANSI_WARNINGS и след това извива реалната съхранена процедура и преминава в нашите параметри.


Тази статия е TechKnowledge Document ID:10011

TechKnowledge Content

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×