"지속적인 양식"하위 폼이있는 Microsoft Access 응용 프로그램이 있습니다. 내 응용 프로그램에서 해당 양식에 액세스 할 때 SQL Server에 "많은"잠금 (1000 개 이상)이 있음을 발견했습니다. [master 데이터베이스보기 sys.dm_trans_locks에서 1000 개의 레코드를 선택하여 찾았습니다.어떻게 데이터베이스를 잠근 액세스를 금지합니까?
양식의 데이터 소스는 qryProspect 요약이라는 Pass Through Query입니다. 그것은 차례 차례로 SQL "EXEC qryProspectSummary"를 사용하여 필요한 데이터를 반환하는 저장 프로 시저를 호출합니다.
저장 프로 시저 "qryProspectSummary"는 일부 선택 항목과 합집합을 사용하고 여러 테이블에 조인하는 복잡한 선택 문입니다. SQL Server Management Studio에서 실행하면 올바른 결과가 생성되고 데이터베이스의 일부가 잠기지 않습니다.
데이터 소스 레코드 세트 유형을 "스냅 샷"으로 설정했습니다.
Access에서 이러한 모든 잠금을 제거하지 못하게하려면 어떻게해야합니까? 데이터 스냅 샷으로 간주되는 작업에 대한 다중 사용자 작업을 효과적으로 파기합니다.
NOLOCK (http://msgroups.net/microsoft.public.sqlserver.server/nolock-on-view-stored-proce/40229)을 보았습니까? – Fionnuala
NOLOCK이 있음을 알고 있습니다. 그러나 SQL Server에 대한 요청에서 프로필을 실행했을 때 한 가지 발견 한 사실은 잠금이 실행 중 SQL Server가 아닌 저장 프로 시저에서 결과를 가져 오는 즉시 ACCESS에서 수행되었음을 나타냅니다. 저장 프로 시저 액세스 잠금이 양식을 닫을 때까지 잠금 장치가 그대로 유지됩니다. – akc42