Sql-Server

無法通過 Access 更新 SQL Server,保留錯誤 (-7776)

  • May 20, 2021

我正在嘗試將 Access 用作 SQL Server 2017 數據庫的前端。我感興趣的對像是 6 個臨時表和一個加入它們的視圖。我創建了一個 ODBC 使用者數據源並連結了表和視圖。對於視圖,我創建了一個更新基礎表的而不是更新觸發器,它工作得很好。

由於基礎表的主鍵是標識,我認為直接針對基礎表而不是通過視圖插入/刪除會更容易(SET IDENTITY_INSERT ON通過 SQL 操作視圖時我必須這樣做)。

我可以毫無問題地向其中一個表添加一行,但是當我嘗試刪除或更新表中的一行時,我收到一條錯誤消息“Reserverat fel (-7776). Det finns inget meddelande för felet”。粗略地翻譯為“保留錯誤(-7776)。沒有錯誤消息”。

我每隔 20 年左右定期訪問 Windows 世界,所以我不知道從哪裡開始尋找可能是什麼錯誤的任何線索。有什麼見解嗎?

有趣的是,如果我創建一個連接兩個表的視圖(其中一個表的主鍵在視圖中也是唯一的),我可以更新視圖,並且基礎表也更新(沒有代替觸發器必要的)。

也可以插入一個新行(對於刪除,我似乎需要一個而不是觸發器)。所以我想這是一種解決方法,但我可以更新視圖而不是表格似乎很奇怪。

Access(我猜)似乎不太喜歡SysStartTimeSysEndTime專欄。如果我在視圖中屏蔽它們並在 Access 中連結視圖,則更新和插入都有效。例子:

DROP VIEW dbo.PHYTOCLASS_DIVISION;
CREATE VIEW dbo.PHYTOCLASS_DIVISION as 
select  d.DivisionName
       , c.ClassID
       , c.ClassName
       , c.DivisionID as classDivisionId
       , c.ModifiedBy
       , c.ModifiedDate
       , c.Avslutad
from dBotnia20200929.dbo.PHYTODIVISION d
join dBotnia20200929.dbo.PHYTOCLASS c
       on d.DivisionID = c.DivisionID;

對於像這樣的簡單連接,SQL Server 計算出如何處理插入/更新,因此不需要觸發器而不是觸發器。

is-is-possible-to-update-sql-server-2016-temporal-tables-from-access中的答案表明問題與 Sys… 列中時間戳的精度有關。我還沒有證實降低精度會有所幫助,但有人閱讀該答案可能是值得的

引用自:https://dba.stackexchange.com/questions/291762