Klausimas:
Turiu "Access" DB ir SQL lentelę, kurioje saugoma informacija. Pagal 7.0 SQL serverio funkcijas leidžiau SQL "Access" DB kaip kitą SQL duomenų bazę. Taip pat parašiau saugomą procedūrą, kuri kopijuoja įrašus iš "Access" DB į SQL lentelę. Veikia iš ISQL / užklausų analizatoriaus, saugoma procedūra veikia ir veikia tinkamai. Iškvietus saugomą procedūrą iš "Dexterity", iš ""SQL Server"" pateikiamas toks klaidos pranešimas: "ANSI_NULLS" ir "ANSI_WARNINGS" parinktys turi būti nustatytos
ryšiui. Taip užtikrinama nuosekli užklausų semantika. Įjunkite šias parinktis ir pakartotinai įveskite užklausą. Ar netgi galiu vykdyti šią saugomą procedūrą iš "Dexterity"?
Atsakymas:
Taip, bet šiek tiek reikės modifikuoti išsaugotą procedūrą. Priežastis, dėl kurios nepavyksta, yra ta, kad norint tinkamai perskaityti SQL lenteles "Dexterity", šios parinktys turi būti išjungtos, kad iškviestumėte išsaugotas "Dexterity" procedūras prieš paleisdami saugomą procedūrą. Vartotojas turi įsitikinti, kad duomenys, kurie pažeidžia šias taisykles, nėra įtraukti į SQL lentelę. Toliau pateiktame pavyzdyje table_access yra prieigos lentelė. Ši table_test yra SQL lentelė.
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
Galime modifikuoti išsaugotą procedūrą, kad mūsų įspėjimai būtų nustatyti taip:
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
Šiuo atveju išsaugota procedūra paveldi atributus, kuriuos ji vadina. Tokiu atveju "Dexterity" theaccess_tableprocedure, kuri įjungia ANSI_NULLS & ANSI_WARNINGS tada iškvirks tikrą saugomą procedūrą ir pereis į mūsų parametrus.
Šis straipsnis buvo "TechKnowledge" dokumento ID:10011