6

Kennt jemand eine Möglichkeit, einen Nolock-Hinweis auf alle Transaktionen eines bestimmten Benutzers zu erzwingen? Ich möchte ein Login für ein Support-Team bereitstellen, um das Produktionssystem abzufragen, aber ich möchte es schützen, indem ich einen Nolock für alles, was sie tun, erzwinge. Ich verwende SQL Server 2005.Erzwingen von Nolock-Hinweis für SQL-Server-Logins

+0

Wonach fragen sie die Datenbank durch? – GateKiller

+0

Normalerweise würden sie SQL Server Management Studio verwenden. Ich weiß jedoch, dass einige von ihnen SQuirreL verwenden. – VanOrman

+0

Können Sie klarstellen, was Sie hier erreichen möchten? Versuchen Sie, die Daten in Ihrer Datenbank zu schützen? –

Antwort

8

Dies ist ein schmerzhafter und hacky Weg, es zu tun, aber es ist, was wir tun, wo ich arbeite. Wir verwenden auch klassisches Asp, also verwenden wir Inline-SQL-Aufrufe. Wir wickeln den SQL-Aufruf tatsächlich in eine Funktion ein (hier können Sie nach einem bestimmten Benutzer suchen) und fügen "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" am Anfang des Aufrufs hinzu.

Ich glaube funktionell, das ist das gleiche wie die keine Sperre Hinweis. Entschuldigung, ich habe keine reine SQL-Antwort. Ich würde mich freuen zu hören, ob Sie einen guten Weg finden, dies zu tun.

+0

Dies ist wahrscheinlich der beste Weg, um ihnen zu ermöglichen, zu schreiben, welche SQL sie wollen, aber immer noch die Datenbank zu schützen. – VanOrman

+0

Muss ich bei jeder Abfrage "SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED" ausführen? – Cheung

0

Sie könnten einen eingeschränkten Benutzer für das Supportteam erstellen und dann gespeicherte Prozeduren oder Ansichten mit dem Nolock-Hinweis schreiben. Geben Sie dann nur Zugriff auf diese Tabellen und nicht den direkten Tabellenauswahlzugriff.

0

Wie Espo angedeutet hat, bin ich mir ziemlich sicher, dass es keinen direkten Weg gibt, das zu tun, was du verlangst. Wie Sie bereits sagten, können Sie das erreichen, indem Sie den Zugriff des Benutzers auf nur Procs beschränken, in denen NOLOCK integriert ist.

11

Sie können das SQL Management Studio Ihres Support-Mitarbeiters konfigurieren, um die Standardisolationsstufe für Transaktionen auf READ UNCOMMITTED (Extras-> Optionen-> Abfrageausführung-> SQL Server-> Erweitert) festzulegen. Dies ist funktional das gleiche wie NOLOCK Hinweise auf alles zu haben.

Die Nachteile sind, dass Sie dies für jedes Mitglied Ihres Support-Teams tun müssten, und sie hätten die Möglichkeit, die Konfiguration in ihrem SQL Management Studio zu ändern.

+0

Sie haben mein Leben gerettet –

0

Leider, die Beschränkung der Benutzer auf SPs vereitelt den Zweck dieser. Ich hatte gehofft, dass ich ihnen auf irgendeine Weise erlauben würde, alles abzufragen und dadurch ihre Fähigkeiten zur Fehlersuche zu verbessern. Danke für deine Hilfe.

1

OK, Sie müssen hier klarstellen, was Sie hier versuchen.

Wenn Sie versuchen, das Sperren für die Datenbank zu reduzieren und Ihren Supportbenutzern möglicherweise Daten zur Verfügung zu stellen, die möglicherweise nie wirklich in der Datenbank festgeschrieben werden. Während es ihnen erlaubt, alles, was sie wollen, in die Datenbank zu schreiben, ist Nolock der richtige Weg. Sie erhalten den zusätzlichen Bonus, dass Ihr Benutzer die Isolationsstufe mit dem Befehl SET TRANSACTION ISOLATION LEVEL noch erhöhen kann.

Wenn Sie versuchen, den Schaden, den sie verursachen können, einzuschränken, schauen Sie sich die Implementierung der Sicherheit an, stellen Sie sicher, dass sie nur lesenden Zugriff auf Ihre Tabellen haben und alle Zugriffe auf gespeicherte Prozeduren und Funktionen entfernen.

I Find NOLOCK wird beim Stack-Überlauf stark missverstanden.

Verwandte Themen