QueryBuilder 옵션에 nolock 옵션이 있습니까?긴 데이터 가져오기 중에 데이터베이스를 묶지 않도록 "with nolock" 문을 포함하여 쿼리 빌더를 실행하는 옵션이 있습니까? QueryBuilder에서 생성한 SQL을 스크립트 창에 복사하고 "with nolock"을 추가하면 오류가 발생했습니다.
데이터 접근Re: QueryBuilder 옵션에 nolock 옵션이 있습니까?"With(NOLOCK)" 메시지를 데이터베이스가 아닌 JMP로 보낸 것 같습니다.다음과 같이 데이터베이스로 보내는 T-SQL의 일부인지 확인하십시오.
Open Database(cnxn_string, "SELECT * FROM example WITH (NOLOCK)");

Re: QueryBuilder 옵션에 nolock 옵션이 있습니까?답장을 보내 주셔서 감사합니다! 내 코드의 예를 첨부했습니다. JMP가 아닌 데이터베이스에 with(nolock)를 보내는 방법을 잘 모르겠습니다. JMP는 데이터베이스에 입력된 내용을 전달하지 않습니까?
New SQL Query(
Version( 130 ),
Connection( "ODBC:DSN=<ENTERDSN>;PWD=<ENTERPASSWORD>" ),
QueryName( "testquery" ),
Select(
Column( "colname1", "t1" ),
Column( "colname2", "t1" ),
Column(
"colname3",
"t1",
Numeric Format( "m/d/y h:m:s", "0", "NO", "" )
),
Column( "colname4", "t1" )
),
From( Table( "table1", Schema( "dbname" ), Alias( "t1" ) ) ),
Where(
GE(
Column(
"colname3",
"t1",
Numeric Format( "m/d/y h:m:s", "0", "NO", "" )
),
3772915200,
UI( Comparison( Base( "Continuous" ) ) )
) & In List(
Column( "colname4", "t1" ),
{"col4val"},
UI( SelectListFilter( ListBox, Base( "Categorical" ) ) )
)
),
With( nolock )
) << Run; </ENTERPASSWORD></ENTERDSN>Re: QueryBuilder 옵션에 nolock 옵션이 있습니까?Connection( "ODBC:DSN=<ENTERDSN>;PWD=<ENTERPASSWORD>, With (nolock)" ),</ENTERPASSWORD></ENTERDSN>
연결 문자열에 with(nolock)를 추가했을 때 여전히 데이터를 가져올 수 있었지만 with(nolock)가 실제로 테이블 잠금을 막았는지 확실하지 않습니다. 생각?
Re: QueryBuilder 옵션에 nolock 옵션이 있습니까?비슷한 것을 시도했지만 SQL Server에 NOLOCK 옵션을 전달하지 않는 것 같습니다.New SQL Query()를 사용할 때 다음과 같이 CustomSQL을 사용합니다.
New SQL Query(
Connection( cnxn_string ),
QueryName( "Important Query" ),
CustomSQL( "SELECT * FROM example WITH (NOLOCK) WHERE [Column 2] > 1" )
) << Run;

New SQL Query() 내에서 CustomSQL을 사용하지 않거나 Open Database() 함수를 사용하지 않고 NOLOCK 옵션을 보내는 방법이 있는지 잘 모르겠습니다.
*편집하다*
현재 New SQL Query()에서 <
Re: QueryBuilder 옵션에 nolock 옵션이 있습니까?거의 다 온 것 같아요. CustomSQL에서 귀하의 제안을 시도했지만 다음 오류가 발생합니다.
SQL 쿼리 실행 오류:
[Microsoft][ODBC SQL Server 드라이버][SQL Server]READ COMMITTED 또는 REPEATABLE READ 격리 수준에서만 READPAST 잠금을 지정할 수 있습니다. [SQLSTATE=42000]
(nolock)을 사용할 수 있도록 격리 수준을 변경하는 방법이 있습니까?
아니면 with (readpast)가 내가 필요한 것을 달성합니까(내 쿼리가 실행되는 동안 프로덕션이 테이블 액세스/수정에서 잠기지 않도록 보장)?
Re: QueryBuilder 옵션에 nolock 옵션이 있습니까?전체 SQL 문 앞에 "SET TRANSACTION ISOLATION LEVEL READ COMMITTED"를 추가할 수 있습니다.
또는
"트랜잭션 레벨 반복 읽기 설정"
마이크로소프트에서: ( 페이지 링크)
커밋 읽기:
문이 수정되었지만 다른 트랜잭션에 의해 커밋되지 않은 데이터를 읽을 수 없도록 지정합니다. 이는 더티 읽기를 방지합니다. 데이터는 현재 트랜잭션 내의 개별 문 사이에서 다른 트랜잭션에 의해 변경될 수 있으므로 반복 불가능한 읽기 또는 팬텀 데이터가 발생할 수 있습니다. 이 옵션은 SQL Server 기본값입니다.
반복 읽기:
문은 수정되었지만 아직 다른 트랜잭션에 의해 커밋되지 않은 데이터를 읽을 수 없으며 다른 트랜잭션은 현재 트랜잭션이 완료될 때까지 현재 트랜잭션이 읽은 데이터를 수정할 수 없도록 지정합니다.
따라서 WITH(NOLOCK)은 기본적으로 READ UNCOMMITTED와 동일하지만 WITH(NOLOCK)이 READ COMMITTED 또는 REPEATABLE READ를 무시하기 때문에 중요하지 않습니다.
New SQL Query(
Connection( cnxn_string ),
QueryName( "Important Query" ),
CustomSQL( "SET TRANSACTION ISOLATION LEVEL READ COMMITTED
SELECT * FROM test1.dbo.example WITH(NOLOCK)
WHERE [Column 2] > 0.5" )
) << Run;

Re: QueryBuilder 옵션에 nolock 옵션이 있습니까?지속적인 응답에 감사드립니다.
"SET TRANSACTION LEVEL REPEATABLE READ"는 구문 오류를 발생시킵니다.
"SET TRANSACTION ISOLATION LEVEL READ COMMITTED"는 구문 오류를 발생시키지 않습니다. 그러나 로그에 다음 오류가 표시될 때 WITH(NOLOCK)가 READ COMMITTED 또는 REPEATABLE READ를 재정의하는 것으로 보이지 않습니다. SQL 쿼리 실행 오류:
[Microsoft][ODBC SQL Server 드라이버][SQL Server]READ COMMITTED 또는 REPEATABLE READ 격리 수준에서만 READPAST 잠금을 지정할 수 있습니다. [SQLSTATE=42000]
나는 이것에 대한 아이디어가 부족합니다.
Re: QueryBuilder 옵션에 nolock 옵션이 있습니까?격리 수준을 설정할 수 있는 권한이 없을 수 있습니다.다음 T-SQL을 실행할 수 있습니까?
DBCC 사용자 옵션
가능한 경우 기본 격리 수준을 알려주고 NOLOCK이 필요한지 결정할 수 있습니다.

이러한 옵션에 대한 Microsoft의 추가 정보 여기 .NOLOCK은 더티 읽기(데이터베이스에 커밋되지 않고 되돌리거나 다시 변경될 수 있는 변경 사항)를 허용하므로 MS는 다음을 제안합니다.
다음 중 하나를 사용하여 커밋되지 않은 데이터 수정의 더티 읽기로부터 트랜잭션을 보호하면서 잠금 경합을 최소화할 수 있습니다.
READ COMMITTED 격리 수준 READ_COMMITTED_SNAPSHOT 데이터베이스 옵션이 ON으로 설정되어 있습니다.
그만큼 스냅 사진 격리 수준.
당신은 결국 이것을 정렬하게 될 것입니다.