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
Antwort
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.
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.
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.
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.
Sie haben mein Leben gerettet –
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.
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.
- 1. Tabellenvererbung: Erzwingen von eindeutigen Einschränkungen für Partitionen?
- 2. Erzwingen Validierung für gebundene Steuerelemente von XAML?
- 3. Erzwingen Textrichtung für LeadingMarginSpan2
- 4. Erzwingen von Funktionsbenennungskonventionen
- 5. Racket erzwingen Eingabearten für Funktion
- 6. Erzwingen von Fließkommaberechnungen
- 7. Erzwingen von Matlab zum Anzeigen von Knotenbeschriftungen für große Graphen
- 8. Kann nicht erzwingen Wert von nicht-optionalen Typ 'UIImage' erzwingen
- 9. erzwingen FTPS für Azure AppService WebApp
- 10. Erzwingen Sie weitere Einschränkungen für xsd: any?
- 11. Maximale Länge für String in PostgreSQL erzwingen
- 12. Feldwerte für ein TFS-WorkItem programmgesteuert erzwingen
- 13. Erzwingen der Eindeutigkeit für große Datenbankfelder (BLOB)
- 14. So erzwingen Sie schwarze Rahmen für UIPopoverControllers
- 15. Django: CSRF-Token für alle Antworten erzwingen
- 16. Erzwingen Element Besitzrechte für Content-Provider
- 17. Wie erzwingen Vorlage Überladung für boost :: bind?
- 18. Symfony 2: https für alle Routen erzwingen
- 19. MFMailComposeViewController Tatsächliche Größe für Bildanhang erzwingen
- 20. PostgreSQL: Erzwingen 1: 1 für optionales Plugin
- 21. Cache erzwingen aktualisieren für einen Container
- 22. Mindestens ein Argument für Restparameter erzwingen
- 23. Numerische Eingabe für mobile Website erzwingen
- 24. Erzwingen Hardwarebeschleunigung
- 25. Erzwingen von Lizenzbedingungen in meiner ASP.NET-Anwendung
- 26. Verschachtelte Divs mit Mindesthöhe von 100% erzwingen?
- 27. Erzwingen des Kompilierens von .tag-Dateien
- 28. Erzwingen von ASP.NET GridView-Pager zu zeigen
- 29. Erzwingen von nicht ausgerichteten Bitfeldpackung in MSVC
- 30. Drucker automatisch zum Drucken von Duplikaten erzwingen
Wonach fragen sie die Datenbank durch? – GateKiller
Normalerweise würden sie SQL Server Management Studio verwenden. Ich weiß jedoch, dass einige von ihnen SQuirreL verwenden. – VanOrman
Können Sie klarstellen, was Sie hier erreichen möchten? Versuchen Sie, die Daten in Ihrer Datenbank zu schützen? –