Microsoft Access应用程序执行存储过程,该存储过程在tempDb中创建表并从该临时表返回空记录集。 Microsoft Access数据库的用户现在应该能够将新记录插入此记录集。但插入失败了。
创建和选择临时表的第一步可以正常工作:
CREATE TABLE #MyTempTable
(
ID int DEFAULT (-1) NOT NULL,
Column1 time(0) PRIMARY KEY NOT NULL,
Column2 tinyint CHECK (Column2 <= 100) NOT NULL
);
SELECT * FROM #MyTempTable;
但是,只要用户在Access窗体中添加新记录并尝试保存它,SQL-Server就会返回一条消息,由于使用了临时表,它会忽略数据库“master”。但我无法保存任何记录。
我打开了SQL Profiler,看看Microsoft Access在幕后做了些什么。它会自动生成以下SQL语句:
exec sp_executesql N'INSERT INTO "master".."#MyTempTable" (Column1","Column2")
VALUES (@P1,@P2)',N'@P1 nvarchar(4000),@P2 tinyint',N'Test',10
始终添加默认数据库的名称。 Access认为存在错误。 INSERT不起作用。
是否可以自己定义无限形式的SQL语句? 它只能在SQL Server Management Studio中正常工作,但在Access中不能正常工作。 我正在使用SQL Server 2012和Microsoft Access 2010。
感谢。