In MS SQL 2008 (nicht sicher 2005) Sie eine DLL-Trigger auf Anmeldeereignis
CREATE TRIGGER trigger_name
ON ALL SERVER
[ WITH <logon_trigger_option> [ ,...n ] ]
{ FOR | AFTER } LOGON
zu definieren, einen Anwendungsnamen schreiben können, können Sie eine Anweisung wie folgt
select program_name from master.dbo.sysprocesses with (nolock)
where spid = @@spid
verwenden In meinem Fall gibt diese Abfrage 'Microsoft SQL Server Management Studio' zurück Sie können also Programmname überprüfen und einen Fehler auslösen. Ich weiß nicht, was passiert, wenn Sie einen Fehler innerhalb LOGON auslösen, aber Sie können dies ausprobieren.
Wenn dies nicht in der von Ihnen erwarteten Weise funktioniert, dh dem Benutzer nicht der Zugriff auf die Datenbank verweigert wird, können Sie zumindest einen Datensatz in eine Protokolltabelle schreiben, in der ein Benutzer versucht, mit MS SQL auf die Datenbank zuzugreifen MS, damit Sie einige administrative Maßnahmen ergreifen können.
Diese Methode sollte jedoch als nur als temporäre Lösung betrachtet werden. Sie sollten Benutzer, Rollen und Schemata zum Schutz Ihrer datenbanksensitiven Daten verwenden. Einige Daten (Passwörter, Kreditkartennummern) sollten in verschlüsselten Spalten gespeichert werden.
Berücksichtigen Sie, dass Ihre Benutzer von Access und Excel, von jeder Anwendung, die ODBC oder nativen .NET-Client unterstützt, eine Verbindung mit der Datenbank herstellen können ... Sie können sogar ein kleines VBScript schreiben, um über ADO eine Verbindung herzustellen. Daher gibt es viele verschiedene Tools und Anwendungen, die den Benutzern die Daten in den Tabellen zeigen können. Und es ist keine gute Möglichkeit, den Zugriff nach Anwendungsnamen zu beschränken. Er sollte mit Standardsicherheitsoptionen eingeschränkt werden.