無法通過 Access 更新 SQL Server,保留錯誤 (-7776)
我正在嘗試將 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(我猜)似乎不太喜歡
SysStartTime
和SysEndTime
專欄。如果我在視圖中屏蔽它們並在 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… 列中時間戳的精度有關。我還沒有證實降低精度會有所幫助,但有人閱讀該答案可能是值得的