所以我有这个可爱的菊花链:
虽然部分单独工作,但我无法从Access更新Azure表。
数据库之间的连接可以单独正常工作。我可以通过在vwSQL中插入值来更新tblAzure。我还可以通过链接的Access表更新SQL服务器中的表,甚至可以通过创建视图并将Access链接到该视图来更新表。我还可以通过在Access中打开的vwSQL看到tblAzure中的值作为链接表。
这是我在尝试更新或附加链接视图时遇到的错误:
ODBC - 在链接表'tblAccess'上插入失败。
[Microsoft] [ODBC SQL Server驱动程序] [SQL Server] OLE DB提供程序“SQLNCLI11”用于链接服务器“azw”返回消息“参数不正确:。”。(#7412)
[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]链接服务器“azw”的OLE DB提供程序“SQLNCLI11”报告错误。提供者报告一个或多个参数无效。 (#7399)
[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]无法执行该操作,因为链接服务器“azw”的OLE DB提供程序“SQLNCLI11”无法启动分布式事务。 (#7391)
有人见过这样的事吗?我尝试将链接属性/服务器选项/分发服务器更改为True,但没有帮助。
基本思想是我需要一个在我们的数据库中完全同步的表,以及可由Access中的用户编辑的表。 (不要问,我继承了太复杂的系统......)
测试脚本
在Azure中:
CREATE TABLE [dbo].[AzureTable](
[AzureTableID] [int] NOT NULL,
[SomeText] [nvarchar](50) NULL,
CONSTRAINT [PK_AzureTable] PRIMARY KEY CLUSTERED ([AzureTableID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
)
GO
INSERT dbo.AzureTable VALUES (1, N'Hello')
在SQL Server中:
(AZW是链接的Azure服务器的名称,HUFU是数据库)
CREATE VIEW dbo.SQLServerView
AS
SELECT *
FROM AZW.HUFU.dbo.AzureTable
GO
INSERT INTO dbo.SQLServerView values (2,'working')
这也有效。
在Access中,我链接视图(我有许多其他链接的表和视图,它们都可以工作)。打开Access链接表(指向SQL Server视图)它显示数据,但无法保存修改,显示上述错误。
我实际上现在有一个解决方法,但这件事让我烦恼,我很想知道这里有什么不对......
答案 0 :(得分:1)
我不确定这是否适用于您的情况,但上次我无法从MS Access更新SQL Server视图时,解决方案是确保代表该视图的Access链接表具有主键。
这是我用来创建PK的方法:
CurrentDb.Execute "CREATE INDEX __uniqueindex ON [" & TableName & "](" & PKFieldName & ")"