アプリケーションデータベースの設計仕様の一部として、SSMS/osql/sqlcmdなどから直接呼び出された場合、一連のストアドプロシージャの実行をブロックするように求められました。つまり、アプリケーション自体からのみ実行を許可する必要があります。
私たちのチームがこれが可能かどうか質問したところ、クエリを特定のシステムに制限するデモが表示されました(実際にはクエリを実行できましたが、実行元のテーブルにログが記録されました)。しかし、それを行う手順は暗号化されているため、どのように行われたのかはわかりませんでした。
これをどのように達成しますか?
この情報を取得する複数の方法:
SELECT APP_NAME();
SELECT PROGRAM_NAME();
SELECT [program_name]
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID;
canが接続文字列またはManagement Studioの接続プロパティで偽装されることに注意してください。次のパラメーターを使用して接続すると、上記の3つすべてがfoobar
を返します。