sql-server - Azure SQL 表 -> SQL Server View -> 链接 Access 表 : can't update

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

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

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

虽然各个部分可以单独工作,但我无法从 Access 更新 Azure 表。

数据库之间的连接单独工作正常。我可以通过将值插入 vwSQL 来更新 tblAzure。我还可以通过链接的 Access 表更新 SQL Server 中的表,甚至可以通过创建表的 View 并将 Access 链接到该 View 来更新表。我还可以通过在 Access 中作为链接表打开的 vwSQL 查看 tblAzure 中的值。

这是我尝试更新或附加链接 View 时收到的错误:

ODBC--insert on a linked table 'tblAccess' failed.

[Microsoft][ODBC SQL Server Driver][SQL Server]OLE DB provider "SQLNCLI11" for linked server "azw" returned message "The parameter is incorrect:.".(#7412)
[Microsoft][ODBC SQL Server Driver][SQL Server]OLE DB provider "SQLNCLI11" for linked server "azw" reported an error. One or more arguments were reported invalid by the provider. (#7399)
[Microsoft][ODBC SQL Server Driver][SQL Server]The operation could not be performed because OLE DB provider "SQLNCLI11" for linked server "azw" was unable to begin a distributed transaction. (#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是DB)

CREATE VIEW dbo.SQLServerView
AS
SELECT *
FROM AZW.HUFU.dbo.AzureTable
GO

INSERT INTO dbo.SQLServerView values (2,'working')

这也有效。

在 Access 中,我链接 View (我有许多其他链接的表和 View ,它们都可以工作)。打开Access链接表(指向SQL Server View )可以显示数据,但无法保存修改,显示上述错误。

我现在实际上有一个解决方法,但这件事困扰着我,我很想了解这里出了什么问题......

最佳答案

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

这是我用来创建 PK 的内容:

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

关于sql-server - Azure SQL 表 -> SQL Server View -> 链接 Access 表 : can't update,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41487546/

相关文章:

c# - 在 ASP.NET 网站中使用 File.CreateFile 将文件插入 Sql Server 2012 FileTable 时访问被拒绝

sql-server - SimpleMembership 数据库应该在 mvc4 中分开吗

sql-server - 数据库设计工具

php - 如何在 CodeIgniter 中创建 'VIEW(SQL)' 并从中选择数据?

python - 如何判断 Python SQLite 数据库连接或游标是否关闭?

c# - 如何从 C# 读取数组列表并将其写入 javascript 对象

excel - VBA如何确定正在使用哪个应用程序

excel - Access 2013 VBA 自动化 Excel 丢失窗口

PHP PDO 驱动程序

mysql - 如何从VS2010的服务器资源管理器连接Linux中的mysql数据库