Sql server 表锁-超时-通过Excel VBA与SQL server的ADO连接

Sql server 表锁-超时-通过Excel VBA与SQL server的ADO连接,sql-server,vba,locking,timeout,ado,Sql Server,Vba,Locking,Timeout,Ado,我设置了一个电子表格,通过ADO连接连接到SQL Server。它的工作原理是,在Excel中键入某个内容后,打开与SQL Server的连接,然后从Excel文档中获取变量以输入数据库。这是我的代码: SQLConnect = "Provider=sqloledb;Integrated Security=SSPI;" & _ "Data Source=NCCHAR9\PDS_SSQL; Database=MWPMO; " & _ "Persist Security Info=F

我设置了一个电子表格,通过ADO连接连接到SQL Server。它的工作原理是,在Excel中键入某个内容后,打开与SQL Server的连接,然后从Excel文档中获取变量以输入数据库。这是我的代码:

SQLConnect = "Provider=sqloledb;Integrated Security=SSPI;" & _
"Data Source=NCCHAR9\PDS_SSQL; Database=MWPMO; " & _
"Persist Security Info=False;"
Conn1.ConnectionString = SQLConnect
Conn1.CursorLocation = adUseClient
Conn1.Mode = adModeReadWrite
Conn1.Open
Cmd1.ActiveConnection = Conn1
Cmd1.CommandText = "UPDATE Input_Tracker SET " & varCol & " = NULL WHERE [ID] = " & varKey & ""
Cmd1.Execute
Cmd1.CommandText = "INSERT INTO Input_Changes(ID, TableName, ColumnName, OldData, NewData, UserID, DateTime) " _
                 & "VALUES('" & varKey & "','" & tblnm & "','" & varCol & "','" & Oval1 & "','" & varData & "','" & username & "','" & Now() & "')"
Cmd1.ExecuteConn1.Close
Set Conn1 = Nothing

我的问题是,这段代码以某种方式锁定了SQL server中的表,使其不会每隔一段时间更新一次。我不是数据库管理员,但我确实让他们看了一下,但他们找不到任何锁定表的人。创建此间歇问题的代码是否有问题?我能做什么?

好的,所以我做了更多的挖掘,很明显,由于Excel中“Get External Data Sources”数据连接中内置的select语句,表被锁定。现在我想我需要弄清楚如何阻止表通过Excel被锁定,除非有一种方法可以强制SQL server不允许锁定,这是可能的吗


我认为这个问题可以通过VBA编写到SQL server的链接来解决。进一步搜索…

您找到了解决方案吗?您可以使用NOLOCKS。。例如:从联系人中选择*(NOLOCK)