여러분 -이 주제를 다시 해쉬하는 것에 대해 사과드립니다. 이미 스택에 대해 많은 것을 알고 있습니다.트랜잭션 격리 수준 스냅 샷에 대한 원격 액세스가 지원되지 않습니다 -이 조건부입니까?
하지만 흥미로운 곳에서 나 자신을 발견하고 도움을 받기를 바랍니다.
상위 수준 질문 : SQL SERVER에보기를 분리 수준 스냅 샷으로 묶어야하는지 결정할 수 있습니까?
나는 그것이 미친 질문처럼 들리지만 나는 마주하고있는 문제마다 모든 길을 다 써 버리려고 노력하고 있다고 알고있다.
나는 링크 서버을 통해 다른 데이터베이스에서 데이터를 검색하기 위해 35 개의 쿼리를 실행하는 응용 프로그램과 함께 작업하고 있습니다. 쿼리는 각각 하나의 테이블에 대해 간단한 선택입니다. 모든 DB 작업은 SQL SERVER에 대해 수행되며 검색 코드는 ADO.NET/c# 등입니다.
34 개의 쿼리가 완벽하게 작동하지만이 나쁜 사과가 있습니다.이 경우에는 트랜잭션 격리가 발생합니다. 수준의 스냅 샷 문제.
또한 응용 프로그램의 외부 데이터 검색을 테스트했고 나는 "문제"쿼리에 아래의 조각을 구현할 때, 나는 또한 문제가 얻을 : 나는을 을하지 않을 때, 그러나
using (var trans = conn.BeginTransaction(IsolationLevel.Snapshot))
을 이 질문에 구현하면 모든 것이 잘됩니다. "Shapshot"의 유무에 관계없이 다른 쿼리에 대해서도이 테스트를 수행했으며 결과는 예측 가능합니다. "Shapshot"을 사용하면 쿼리 프로세스가 없습니다 ... 구현되지 않은 경우 모든 쿼리 프로세스가 ...
내 결과에 따르면 응용 프로그램이 데이터 검색 전략을 변경해야 할 것이라고 제안했습니다. Locking is handled by the database level (MS SQL Server/Oracle) and not by "us". Generally, locking is row level but the optimizer may choose something different
불행하게도 나는 데이터 검색에 대한 책임 보일러 플레이트 애플리케이션 코드 네이티브 액세스 할 수없는 그들의 지식 기반 당
, 나는이 발견했다. 이 특정 쿼리/테이블에는 응용 프로그램이 대체 검색 전략을 사용하도록 트리거하는 열 또는 쿼리/테이블 명명 중 하나 이상의 키워드가 있다고 의심됩니다. 개발자 포럼에 따라이 질문을 던졌고 회신을 기다리고 있습니다 ...
어쨌든 the optimizer may choose something different
- 옵티 마이저 또는 데이터베이스 최적화 도구에 대한 언급이 있습니다. SQL SERVER를 "판단 호출"을하도록 설정할 수 있습니까? 성명서가 명확하지 않습니까, 아니면 SQL Server와 그 기능이 충분하지 않습니까?
나는 그것이 미친 질문처럼 보입니다. 그러나 나는 정말로 모든 가능한 길을 여기에서 두드리고 싶습니다. 불신자를 일시 중지하고 그 미친 게시물을 유감스럽게 생각하여 주셔서 감사합니다.
기술 자료에서 찾은 견적은 격리 수준 (직렬화 가능, 스냅 샷 등)이 아닌 잠금 기술 (행 수준 대 테이블 수준)에 관한 것입니다.응용 프로그램은 단일. 제점 조회에 대한 스 냄샷 격리 레벨을 지정해야합니다. 코드를 변경하지 않으면이 문제를 해결할 수 있다고 생각하지 않습니다. – user1935361
동의 - 분명히 민감한 성격 때문에 "평가"라는 단어가있는 객체가 있으면 응용 프로그램이 트랜잭션을 작성하게됩니다. 뷰 이름을 변경하면 데이터가 클라이언트에 성공적으로 반환됩니다. – flaZer