Hỏi:
Tôi có một DB Access và một bảng SQL trữ thông tin. Dưới các tính năng Máy chủ Kết nối của SQL 7.0, tôi đã cho phép SQL xem DB của Access giống như một cơ sở dữ SQL khác. Tôi cũng đã viết thủ tục lưu trữ sao chép các bản ghi từ Access DB vào bảng SQL của bạn. Chạy từ Trình phân tích ISQL/Truy vấn, thủ tục lưu trữ sẽ chạy và hoạt động chính xác. Việc gọi thủ tục lưu trữ từ Dexterity sẽ tạo ra thông báo lỗi sau từ SQL Server: Các truy vấn không đồng nhất yêu cầu các tùy chọn ANSI_NULLS và ANSI_WARNINGS cần được đặt cho kết
nối. Điều này đảm bảo về ngữ pháp truy vấn nhất quán. Bật các tùy chọn này, rồi phát hành lại truy vấn của bạn. Tôi thậm chí có thể chạy thủ tục lưu trữ này từ Dexterity không?
Trả lời:
Có, nhưng chúng tôi sẽ phải sửa đổi một chút quy trình lưu trữ. Lý do không thành công là để đọc bảng SQL đúng cách trong Dexterity, các tùy chọn đó phải được TẮT để quy trình lưu trữ cuộc gọi trong Dexterity phát hành những lệnh này trước khi chạy thủ tục lưu trữ. Người dùng phải đảm bảo dữ liệu vi phạm các quy tắc này không được đưa vào bảng SQL người dùng. Trong mẫu dưới đây, trường table_access là bảng access. Bảng table_test là bảng SQL đầu.
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
Chúng tôi có thể sửa đổi quy trình lưu trữ để đặt cảnh báo như sau:
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
Trong trường hợp này, thủ tục lưu trữ sẽ kế thừa các thuộc tính của nội dung gọi là thủ tục. Đối với trường hợp này, sự khéo léo gọi theaccess_tableprocedure sẽ bật ANSI_NULLS & ANSI_WARNINGS và sau đó gọi thủ tục lưu trữ thực và đi vào các tham số của chúng tôi.
Bài viết này đã được TechKnowledge Document ID:10011