Frage

Kennt jemand eine Möglichkeit, einen nolock Hinweis auf alle von einem bestimmten Benutzer ausgegeben Transaktionen zu zwingen? Ich mag ein Login für ein Support-Team, um das Produktionssystem abzufragen, aber ich will es schützen, indem sie eine nolock auf alles, was sie tun zwingen. Ich bin mit SQL Server 2005.

War es hilfreich?

Lösung

Dies ist ein schmerzhafter und hacky Weg, es zu tun, aber es ist das, was wir tun, wo ich arbeite. Wir verwenden auch klassische asp, so dass wir Inline-SQL-Aufrufe verwenden. Wir wickeln tatsächlich den SQL-Aufruf in einer Funktion (hier können Sie für einen bestimmten Benutzer überprüfen) und „SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED“ zu Beginn des Gesprächs hinzuzufügen.

Ich glaube, funktionell dies das gleiche wie die kein Sperrhinweis ist. Leider habe ich nicht eine reine SQL Antwort hat, würde ich daran interessiert zu hören, wenn Sie einen guten Weg finden, dies zu tun.

Andere Tipps

Sie können Ihre Support-Mitarbeiter des SQL Management Studio konfigurieren, dass die Standardtransaktionsisolationsstufe auf READ UNCOMMITTED (Extras-> Optionen-> Abfrage Execution-> SQL Server-> Erweitert). Dies ist funktional gleich NOLOCK Hinweise auf alles hat.

Die Nachteile sind, dass Sie diese von Ihrem Support-Team für jedes Mitglied würde zu tun haben, und sie würden die Möglichkeit haben, die Konfiguration auf ihre SQL Management Studio zu ändern.

OK, müssen Sie klären, was Sie versuchen, hier zu tun.

Wenn Sie versuchen, auf die Datenbank zu reduzieren Sperren und möglicherweise Ihre Unterstützung Benutzer mit Daten, die nie wirklich kann in die Datenbank übergeben bekommen. Während so dass sie alles, was sie wollen in die Datenbank schreiben, dann ist nolock der Weg zu gehen. Sie erhalten die zusätzlichen Bonus erhalten, die Ihre Benutzer mit der SET TRANSACTION ISOLATION LEVEL Befehl noch in der Lage sein, ihre Isolationsstufe zu erhöhen.

Wenn Sie versuchen, den Schaden zu begrenzen sie verursachen können, wenn Sachen gegen die DB laufen, schauen Sie sich die Implementierung von Sicherheits, stellen Sie sicher, dass sie nur Lesezugriff auf Ihre Tabellen erlaubt und Blick auf den gesamten Zugriff auf gespeicherte Prozeduren und Funktionen Strippen.

Ich finde NOLOCK auf Stack-Überlauf stark mißverstanden.

Sie können einen Benutzer mit eingeschränkten Rechte für das Support-Team erstellen und dann entweder gespeicherte Prozeduren oder Ansichten mit dem nolock-Tipp schreiben. Dann nur Zugriff auf diejenigen geben und nicht direkt Tabellenwählsignal Zugriff.

Als Espo angedeutet, ich bin ziemlich sicher, dass keine direkte Möglichkeit gibt es zu tun, was Sie fragen. Wie er sagte, können Sie es sort-of erreichen durch den Zugriff des Benutzers auf nur Procs begrenzen, die NOLOCK in ihnen codiert in-gebaut haben.

Leider die Benutzer zu SPs Einschränkung Niederlagen der Zweck dieses. Ich hatte gehofft, es irgendeine Art und Weise war ich erlauben könnte sie alles abfragen und dadurch ihre Fähigkeiten zur Fehlerbehebung zu verbessern. Vielen Dank für Ihre Hilfe Jungs.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top