В MS SQL 2008 (не уверен, 2005), вы можете написать DLL триггер на событие входа в систему
CREATE TRIGGER trigger_name
ON ALL SERVER
[ WITH <logon_trigger_option> [ ,...n ] ]
{ FOR | AFTER } LOGON
определить имя приложения, вы можете использовать оператор, как это
select program_name from master.dbo.sysprocesses with (nolock)
where spid = @@spid
В моем случае этот запрос возвращает «Microsoft SQL Server Management Studio» Итак, вы можете проверить имя_программы и поднять ошибку. Я не знаю, что произойдет, если вы вызовете ошибку внутри триггера LOGON, но вы можете попробовать это.
Если это не будет работать так, как вы ожидали, то есть пользователю не будет отказано в доступе к базе данных, по крайней мере, вы можете записать запись в таблицу журналов о том, что пользователь пытается получить доступ к базе данных с использованием MS SQL MS, чтобы вы могли принять некоторые административные меры.
Однако этот метод следует рассматривать как только как временное решение. Вы должны использовать «Пользователи», «Роли» и «Схемы», чтобы защитить данные, чувствительные к базе данных. Некоторые данные (пароли, номера кредитных карт) должны храниться в зашифрованных столбцах.
Учтите, что ваши пользователи могут подключаться к базе данных из Access и Excel из любого приложения, поддерживающего ODBC или собственный .NET-клиент. Они могут даже написать небольшой VBScript для подключения через ADO. Таким образом, существует множество различных инструментов и приложений, которые могут показывать пользователям данные в таблицах. И это не очень хороший способ ограничить доступ по имени приложения - его следует ограничить, используя стандартные параметры безопасности.