mit Nolock-Option in QueryBuilder-Option?Gibt es eine Option zum Ausführen von Query Builder einschließlich einer „with nolock“-Anweisung, um eine Datenbank während eines langen Datenabrufs nicht zu belasten? Das Kopieren des von QueryBuilder generierten SQL in ein Skriptfenster und das Hinzufügen von „with nolock“ führte zu einem Fehler.
DatenzugriffBetreff: Mit Nolock-Option in QueryBuilder-Option?Anscheinend haben Sie die Nachricht „With(NOLOCK)“ an JMP und nicht an die Datenbank gesendet.Stellen Sie sicher, dass es Teil des T-SQL ist, das Sie an die Datenbank senden, etwa so:
Open Database(cnxn_string, "SELECT * FROM example WITH (NOLOCK)");

Betreff: Mit Nolock-Option in QueryBuilder-Option?Danke für die Antwort! Ich habe ein Beispiel meines Codes angehängt. Ich bin mir nicht sicher, wie ich das mit (nolock) an die Datenbank statt an JMP senden soll? Gibt JMP die eingegebenen Daten nicht an die Datenbank weiter?
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>Betreff: Mit Nolock-Option in QueryBuilder-Option?Connection( "ODBC:DSN=<ENTERDSN>;PWD=<ENTERPASSWORD>, With (nolock)" ),</ENTERPASSWORD></ENTERDSN>
Als ich with (nolock) in der Verbindungszeichenfolge hinzugefügt habe, konnte ich die Daten immer noch abrufen, bin mir aber nicht sicher, ob with (nolock) tatsächlich das Sperren der Tabelle verhindert hat. Gedanken?
Betreff: Mit Nolock-Option in QueryBuilder-Option?Ich habe etwas Ähnliches versucht und die NOLOCK-Option schien nicht an SQL Server übergeben zu werden.Wenn ich New SQL Query() verwende, verwende ich CustomSQL, etwa so:
New SQL Query(
Connection( cnxn_string ),
QueryName( "Important Query" ),
CustomSQL( "SELECT * FROM example WITH (NOLOCK) WHERE [Column 2] > 1" )
) << Run;

Ich bin mir nicht sicher, ob es eine Möglichkeit gibt, die NOLOCK-Option zu senden, ohne CustomSQL in New SQL Query() zu verwenden oder die Funktion Open Database() zu verwenden.
*bearbeiten*
Wenn Sie die <
Betreff: Mit Nolock-Option in QueryBuilder-Option?Ich glaube, wir haben es fast geschafft. Ich habe Ihren Vorschlag in CustomSQL ausprobiert, erhalte jedoch die folgende Fehlermeldung:
Fehler beim Ausführen der SQL-Abfrage:
[Microsoft][ODBC SQL Server-Treiber][SQL Server]Sie können die READPAST-Sperre nur in den Isolationsstufen READ COMMITTED oder REPEATABLE READ angeben. [SQLSTATE=42000]
Gibt es eine Möglichkeit, die Isolationsstufe so zu ändern, dass sie mit (nolock) verwendet werden kann?
Oder wird mit (readpast) das erreicht, was ich brauche (sicherstellen, dass die Produktion nicht daran gehindert wird, auf die Tabelle zuzugreifen bzw. diese zu ändern, während meine Abfrage ausgeführt wird)?
Betreff: Mit Nolock-Option in QueryBuilder-Option?Sie können der gesamten SQL-Anweisung „SET TRANSACTION ISOLATION LEVEL READ COMMITTED“ voranstellen.
oder
„SET TRANSACTION LEVEL REPEATABLE READ“
Von Microsoft: ( Link zur Seite)
LESEN SIE VERPFLICHTET:
Gibt an, dass Anweisungen keine Daten lesen können, die geändert, aber nicht von anderen Transaktionen festgeschrieben wurden. Dies verhindert Dirty Reads. Daten können durch andere Transaktionen zwischen einzelnen Anweisungen innerhalb der aktuellen Transaktion geändert werden, was zu nicht wiederholbaren Lesevorgängen oder Phantomdaten führt. Diese Option ist die SQL Server-Standardeinstellung.
WIEDERHOLBARES LESEN:
Gibt an, dass Anweisungen keine Daten lesen können, die von anderen Transaktionen geändert, aber noch nicht festgeschrieben wurden, und dass keine anderen Transaktionen Daten ändern können, die von der aktuellen Transaktion gelesen wurden, bis die aktuelle Transaktion abgeschlossen ist.
WITH(NOLOCK) ist also im Grunde dasselbe wie READ UNCOMMITTED, spielt aber keine Rolle, da WITH(NOLOCK) READ COMMITTED oder REPEATABLE READ überschreibt.
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;

Betreff: Mit Nolock-Option in QueryBuilder-Option?Ich schätze die anhaltenden Antworten.
„SET TRANSACTION LEVEL REPEATABLE READ“ löst einen Syntaxfehler aus.
„SET TRANSACTION ISOLATION LEVEL READ COMMITTED“ löst keinen Syntaxfehler aus. Es scheint jedoch nicht, dass WITH(NOLOCK) READ COMMITTED oder REPEATABLE READ überschreibt, da ich die folgende Fehlermeldung im Protokoll erhalte: Fehler beim Ausführen der SQL-Abfrage:
[Microsoft][ODBC SQL Server-Treiber][SQL Server]Sie können die READPAST-Sperre nur in den Isolationsstufen READ COMMITTED oder REPEATABLE READ angeben. [SQLSTATE=42000]
Mir gehen die Ideen dafür aus.
Betreff: Mit Nolock-Option in QueryBuilder-Option?Möglicherweise verfügen Sie nicht über die Berechtigungen zum Festlegen der Isolationsstufe.Können Sie das folgende T-SQL ausführen?
DBCC-Benutzeroptionen
Wenn Sie können, wird Ihnen die Standardisolationsstufe angezeigt, und Sie können entscheiden, ob NOLOCK erforderlich ist.

Weitere Informationen zu diesen Optionen von Microsoft Hier .Da NOLOCK Dirty Reads zulässt (Änderungen, die nicht in die Datenbank übernommen werden und möglicherweise rückgängig gemacht oder erneut geändert werden), schlägt MS Folgendes vor:
Sie können Sperrkonflikte minimieren und gleichzeitig Transaktionen vor schmutzigen Lesevorgängen nicht festgeschriebener Datenänderungen schützen, indem Sie eine der folgenden Methoden verwenden:
Die READ COMMITTED-Isolationsstufe mit dem READ_COMMITTED_SNAPSHOT Datenbankoption auf EIN gesetzt.
Der SCHNAPPSCHUSS Isolationsstufe.
Irgendwann wirst du das klären.