Jautājums:
man ir Access DB un tabula, valoda SQL kurā tiek glabāta informācija. Programmas valoda SQL 7.0 Saistīto serveru līdzekļu sadaļā esmu atļāvis valoda SQL Skatīt Access DB tāpat kā citu valoda SQL bāzi. Esmu uzrakstījis arī saglabātu procedūru, kas kopē ierakstus no Access DB uz valoda SQL tabulu. Palaižot no ISQL/vaicājumu analizētāja, saglabātā procedūra darbojas un darbojas pareizi. Zvanot saglabāto procedūru no Dexterity, no SQL Server tiek parādīts šāds kļūdas ziņojums: Heterogēnajiem vaicājumiem ir nepieciešama
savienojuma ANSI_NULLS un ANSI_WARNINGS opciju iestatīšana. Tas nodrošina konsekventu vaicājuma semantiku. Iespējojiet šīs opcijas un pēc tam nodēviet vaicājumu. Vai varu pat palaist šo saglabāto procedūru no Dexterity?
Atbilde:
Jā, bet mums ir nedaudz jāmodificē saglabātā procedūra. Kļūmes iemesls ir tas, ka, lai pareizi nolasītu valoda SQL tabulas Veiklībā, šīs opcijas ir jāizslēdz, lai, izsaucot saglabātās procedūras Dexterity, problēmas ar šīm komandām, pirms izpildīt saglabāto procedūru. Lietotājam ir jānodrošina, lai dati, kas pārkāpj šīs kārtulas, netiek ievietoti valoda SQL tabulā. Tālāk redzamajā paraugā table_access ir piekļuves tabula. Datu table_test ir valoda SQL tabula.
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
Saglabāto procedūru varam modificēt, lai iestatītu brīdinājumus šādi:
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
Šādā gadījumā iekļautā procedūra manto to zvanu atribūtus. Šajā situācijā Dexterity theaccess_tableprocedure, kas ieslēdz ANSI_NULLS & ANSI_WARNINGS pēc tam izsauc reālo saglabāto procedūru un nodod mūsu parametrus.
Šis raksts bija TechKnowledge dokumenta ID:10011