【问题标题】:Table Lock - Timeout - ADO connection to SQL server via Excel VBA表锁定 - 超时 - 通过 Excel VBA 与 SQL 服务器的 ADO 连接
【发布时间】:2013-06-10 03:27:22
【问题描述】:

我有一个电子表格设置为通过 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 中的表,使其无法每隔一段时间更新一次。我不是数据库的管理员,但我确实让他们看了一下,但他们找不到锁定表的人。创建此间歇性问题的代码是否有问题?我能做什么?

【问题讨论】:

    标签: sql-server vba locking timeout ado


    【解决方案1】:

    好的,所以我进行了更多挖掘,显然由于 Excel 中“获取外部数据源”数据连接中内置的 select 语句,该表已被锁定。现在我想我需要弄清楚如何阻止表格通过 Excel 被锁定,除非有一种方法可以强制 SQL 服务器不允许锁定,这可能吗?

    我认为可以通过 VBA 编写指向 SQL Server 的链接来解决此问题。进一步搜索...

    【讨论】:

    • 你找到解决办法了吗?
    • 您可以使用 NOLOCKS.. 例如:SELECT * FROM Person.Contact WITH (NOLOCK)
    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 2020-10-29
    • 2011-05-17
    • 2015-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多