在 ADODB 連接字串中將提供程式從 SQLOLEDB 更改為 MSOLEDBSQL 時,我們收到錯誤:
-2147217864 無法定位要更新的行。自上次讀取以來,某些值可能已更改。
連接字串是:
Provider=MSOLEDBSQL;SERVER=servername;APP=Applicationname;DATABASE=databasename;WSID=id;Trusted_Connection=yes;MARS Connection=True;DataTypeCompatibility=80
代碼如下所示:
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset
rs.CursorLocation = adUseClient
rs.Open("SELECT * FROM tableName WHERE 1 = 2", Adoconnection, adOpenStatic, adLockBatchOptimistic, CommandTypeEnum.adCmdText)
rs.AddNew
'Add the fields
...
...
rs.UpdateBatch ''this line throws error
現在,當提供程式的連接字串更改為 SQLOLEDB 時,使用相同的代碼,它運行良好,沒有任何問題。
uj5u.com熱心網友回復:
嘗試向表中添加時間戳或所謂的“rowversion”列。(使用型別時間戳 - 與時間為零)。
此外,如果該表中有任何位列,請確保它們不為空,并確保為該位列設定默認值 (0)。
如果應用程式已鏈接表,則在進行上述更改服務器端后重新鏈接您的表。
uj5u.com熱心網友回復:
我發現了問題,它出在 SQL 觸發器中。
相應的表在觸發器上有一些更新陳述句。SET NOCOUNT ON在觸發器中的更新陳述句之前添加幫助我避免了這個錯誤。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/399425.html
標籤:sql-server vba ms-access 数据库 数据库
