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 オプションはありますか?同様のことを試してみましたが、NOLOCK オプションが SQL Server に渡されないようでした。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 Driver][SQL Server]READPAST ロックは、READ COMMITTED または REPEATABLE READ 分離レベルでのみ指定できます。 [SQLSTATE=42000]
with (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 Driver][SQL Server]READPAST ロックは、READ COMMITTED または REPEATABLE READ 分離レベルでのみ指定できます。 [SQLSTATE=42000]
これについてはアイデアが尽きてきました。
Re: QueryBuilder オプションに nolock オプションはありますか?おそらく、分離レベルを設定する権限がない可能性があります。次の T-SQL を実行できますか?
DBCC ユーザーオプション
可能であれば、デフォルトの分離レベルが表示されるので、NOLOCK が必要かどうかを判断できます。

これらのオプションの詳細については Microsoft から提供されていますここ。NOLOCK ではダーティ リード (データベースにコミットされず、元に戻されたり、再度変更される可能性のある変更) が許可されるため、MS では次のことを提案しています。
次のいずれかを使用すると、コミットされていないデータ変更のダーティ リードからトランザクションを保護しながら、ロックの競合を最小限に抑えることができます。
READ COMMITTED 分離レベルREAD_COMMITTED_SNAPSHOTデータベース オプションは ON に設定されています。
のスナップショット分離レベル。
最終的にはこれを解決するでしょう。