Es gibt verschiedene Möglichkeiten, den Zugriff auf eine Datenbank einzuschränken:
- Verwenden des LOGON-Triggers - jedoch nur vorübergehend (vor dem Upgrade aktivieren und dann deaktivieren). Weitere Informationen, einschließlich eines Skripts, finden Sie in meiner Antwort
hier .
- Sie können IIS auf den Webservern herunterfahren, damit mit der Anwendung keine Verbindungen hergestellt werden. Dies wird als "Ausfallzeit der Anwendung" bezeichnet.
Halten Sie die Datenbank im Einzelbenutzermodus mit (Beachten Sie, dass dies riskant ist, da eine andere Verbindung zur Datenbank besteht und Sie möglicherweise warten oder die Verbindung verweigern.)
alter database databasename
set single_user with rollback immediately
Sie sind besser dran, Option 2 als sicheres und geplantes Upgrade während Ihres Wartungsfensters zu verwenden.
BEARBEITEN:
Eingeschränkter Benutzer - nur Benutzer mit dbo-Rechten für die Datenbank zulässig (z. B. db_owner, dbcreator, sysadmin). Dies bedeutet, dass mehrere Benutzer weiterhin in der Datenbank angemeldet sein können, solange sie DBO sind.
Einzelbenutzer - nur eine Verbindung zulässig, dh wer zuerst kommt, mahlt zuerst.
Aufgrund der Tatsache, dass Einzelbenutzer zuerst kommen, zuerst bedient werden, ist dies im Falle eines Fehlers oder einer Beendigung Ihrer Verbindungen riskanter.
Wenn Sie sich mit dem Anmeldetrigger befassen, wie @AaronBertrand hervorhob, funktioniert dies nicht für vorhandene Sitzungen. Sie können dies jedoch überwinden, indem Sie zuerst alle Sitzungen beenden und dann den Trigger aktivieren, sodass alle neuen eingehenden Verbindungen über den auslösen.
Ich kann mir keine andere Möglichkeit vorstellen, die Verbindungen zur Datenbank einzuschränken.
Wenn Sie die Datenbank in den eingeschränkten Benutzermodus versetzen, können nur Mitglieder der festen Serverrollen
sysadmin
oderdbcreator
oder Mitglieder der festen Datenbankrolledb_owner
auf die Datenbank zugreifen:Wenn Sie das Schließen bestehender Verbindungen erzwingen möchten:
Und wenn Sie bereit sind, die Dinge wieder normal zu machen:
Quelle: http://www.blackwasp.co.uk/SQLRestrictedUser.aspx
In diesen Fällen wird der Einzelbenutzermodus nicht empfohlen, da beim Aktualisieren der Anwendung möglicherweise mehrere Verbindungen gleichzeitig geöffnet werden müssen.
quelle
Wenn Sie eine bestimmte Gruppe von Benutzern haben, die auf die Datenbank zugreifen, oder nur ein oder zwei Anwendungskonten, die die Datenbankverbindung herstellen, können Sie einfach die Anmeldungen deaktivieren und alle Verbindungen beenden und dann die Anmeldungen erneut aktivieren. wenn du fertig bist.
quelle
Ich bin nicht sicher, ob ich verstehe, ob sich Ihr SQL Server auf demselben Computer befindet wie Apps, die darauf zugreifen.
Wenn nicht, können Sie den Firewall-Port für SQL Server einfach für den gesamten eingehenden Datenverkehr deaktivieren, und Sie sind alle gut. Eine weitere Option besteht darin, die IP-Adresse im SQL Server-Konfigurationsmanager zu deaktivieren, der für den Zugriff auf den Server verwendet wird (und nur die lokale IP 127.0.0.1 zu belassen).
quelle