2013-06-13 1 views
0

ADO 연결을 통해 SQL Server에 연결하도록 스프레드 시트를 설정했습니다. 일단 뭔가가 Excel에 입력되면 SQL Server에 대한 연결이 열리고 Excel에있는 변수를 가져 와서 데이터베이스에 입력합니다. 이것은 내 코드입니다 :테이블 잠금 - 시간 초과 - Excel VBA를 통한 SQL 서버에 대한 ADO 연결

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의 테이블을 잠시 동안 업데이트하지 못하도록 잠그고 있다는 것입니다. 나는 데이터베이스의 관리자는 아니지만 한 번 살펴보고 테이블을 잠그고있는 사람을 찾을 수 없었습니다. 이 간헐적 인 문제를 만들려면 내 코드에 문제가 있습니까? 내가 무엇을 할 수 있을지?

답변

0

좋아요, 그래서 더 많이 파고 들었습니다. Excel에서 "Get External Data Sources"데이터 연결로 작성된 select 문으로 인해 테이블이 잠긴 것 같습니다. 이제는 SQL 서버가 잠금을 허용하지 못하게 할 수있는 방법이 없으면 테이블을 Excel에서 잠그지 않게하는 방법을 알아야합니다.

VBA를 통해 SQL 서버에 대한 링크를 작성하여 문제를 해결할 수 있다고 생각합니다. 추가 검색 ...

+0

이 문제에 해결책이 있습니까? –

+0

당신은 NOLOCKS를 사용할 수 있습니다 .. 예 : SELECT * FROM Person.Contact WITH (NOLOCK) – Schwimms