アプリケーション名を定義するには、ログオンイベント
CREATE TRIGGER trigger_name
ON ALL SERVER
[ WITH <logon_trigger_option> [ ,...n ] ]
{ FOR | AFTER } LOGON
にDLLトリガを書くことができます(2005わからない)、あなたはこの
select program_name from master.dbo.sysprocesses with (nolock)
where spid = @@spid
のようなステートメントを使用することができます私の場合、このクエリは 'Microsoft SQL Server Management Studio'を返す program_nameをチェックしてエラーを発生させることができます。 LOGONトリガーでエラーを発生させても何が起きるか分かりませんが、これを試すことができます。
これが期待どおりに動作しない場合、つまりユーザーがデータベースへのアクセスを拒否されない場合、少なくとも、ユーザーがMS SQLを使用してDBにアクセスしようとしているという記録をログ表に書き込むことができますあなたは何らかの管理措置を講じることができます。
ただし、この方法は、としてのみとしてください。データベースの機密データを保護するには、ユーザー、ロールおよびスキーマを使用する必要があります。一部のデータ(パスワード、クレジットカード番号)は暗号化された列に格納する必要があります。
ユーザーがODBCやネイティブ.NETクライアントをサポートするアプリケーションからAccessとExcelからデータベースに接続する可能性があることを考慮してください。ADOを介してそこに接続する小さなVBScriptを作成する場合もあります。そのため、テーブルにデータを表示するツールやアプリケーションが数多くあります。アプリケーション名によるアクセスを制限するのは良い方法ではありません。標準のセキュリティオプションを使用して制限する必要があります。