2016-06-13 2 views
-1

Ich bin auf der Suche nach einem Skript, das ich auf meinem Server ausführen kann, um Ansichten für alle meine Tabellen in meiner Datenbank ohne Sperren zu erstellen. Vielen Dank!T-SQL Erstellen Sie eine Ansicht ohne Sperre für alle Tabellen in einer Datenbank

+1

Können Sie erklären warum? – Mike

+3

Set [Schlechte Angewohnheiten, um NOLOCK überall hinzuschieben] (http://blogs.sqlsentry.com/aaronbertrand/bad-habits-nolock-everywhere/) - es ist *** NICHT EMPFOHLEN ***, dies überall zu benutzen - ganz im Gegenteil! –

Antwort

0

Obwohl ich zustimme, dass dies eine schlechte Idee ist, kann dennoch etwas durch das Zeigen einiger Beispiele gewonnen/gelernt werden. Aber - ja - das ist möglicherweise eine wirklich schlechte Idee, aber in einer Welt könnte das Sinn machen.

Wenn dies eine einmalige Sache ist, können Sie etwas tun, das einfach die DDL für die Ansichten mit (nolock) erstellen wird. Sie müssen nur kopieren, einfügen und ausführen. Wenn dies dynamisch generiert werden soll, muss ein bisschen mehr genutzt werden.

Noch ein Vorbehalt zu den folgenden - es verwendet select * in der Ansicht ohne Schema verbindlich. Seien Sie bei diesen Arten von Sichten außerordentlich vorsichtig, da sie sich nicht automatisch aktualisieren, wenn sich die zugrunde liegende Tabellenstruktur ändert. Es empfiehlt sich, Spalten in Ansichten vollständig zu qualifizieren, es sei denn, Sie verfügen über andere Sicherheitsvorkehrungen.

select ' 
    create view ' + name + 'MayBeABadIdea as select * from ' + name + ' (nolock); 
    go' 
from sys.objects 
where type = 'U' 
order by name; 
+0

Danke. Ich stimme völlig zu, dass dies jedoch nicht die beste Idee ist; Ich muss in der Lage sein, meine CTI-Datenbank in Echtzeit abzufragen, ohne die Tabellen zu sperren. Leider erfordert das Gesundheitswesen einige Live-Nachschauen von Daten, aber ich möchte auch nicht meine Anrufweiterleitung und Zustellung behindern. –

Verwandte Themen