Azure SQL表 - > SQL Server视图 - >链接访问表:无法更新

时间:2017-01-05 14:29:25

标签: sql-server ms-access database-connection azure-sql-database linked-server

所以我有这个可爱的菊花链:

  • Azure SQL数据库中的表(tblAzure)
  • 在本地SQL Server数据库(vwSQL)中查看tblAzure
  • Access中指向vwSQL(tblAccess)
  • 的链接表

虽然部分单独工作,但我无法从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视图)它显示数据,但无法保存修改,显示上述错误。

我实际上现在有一个解决方法,但这件事让我烦恼,我很想知道这里有什么不对......

1 个答案:

答案 0 :(得分:1)

我不确定这是否适用于您的情况,但上次我无法从MS Access更新SQL Server视图时,解决方案是确保代表该视图的Access链接表具有主键。

这是我用来创建PK的方法:

CurrentDb.Execute "CREATE INDEX __uniqueindex ON [" & TableName & "](" & PKFieldName & ")"