SQL Shieldは インストール直後からご利用いただけます. SQL Shieldは既存のプロシージャに一切影響を与えず, 既存のオブジェクトにも一切変更を与えません. SQL Shieldは導入後に新規作成されたプロシージャで 明示的に新暗号化メソッドを指定した時だけ動作します. つまり新旧暗号化メソッドはお互い干渉することなく, 同居することができます. 新暗号化メソッドを使用する場合は /*sqlshield*/  コメント文を WITH ENCRYPTION 節に挿入する必要があります. このコメント文は大文字小文字の区別があります. Example:

CREATE PROCEDURE MyTest 
WITH /*sqlshield*/ ENCRYPTION
AS
SELECT 2+2

SQL ShieldはSQL ServerサーバもしくはSQL Shieldによって 暗号化されたプロシージャを復号化するメソッドは提供しません.

SQL Shield導入後,ユーザはネイティブとSQL Shieldの どちらの暗号化方式を利用するか選択することができます. ユーザは2種類の外部プロシージャから SQL Shieldの有効化/無効化が可能です. SQL Shield はSQL Serverと共に起動します. インストールの間, SQL Shieldはsqlshield_startupと呼ばれる 特別なプロシージャをマスターDBに設置します. ユーザはこの特別なプロシージャを無効にしたい場合, "exec sqlshield_on"  コメントを挿入する必要があります. SQL Shield をアンロードにしたい場合は, "exec sqlshield_off" コメントを使用します. 以降,新規に生成されたすべてのオブジェクトは ネイティブSQL Server暗号化方式を使用します. SQL Server は復号化済みオブジェクトをキャッシュします. これがユーザがSQL Shieldを停止もしくはアンロードした後でも, 暗号化されたオブジェクトでさえも常に利用可能(実行可能)である理由です. しかし開始されていないオブジェクトは利用不可(実行不可)です. ユーザがSQL Serverを再起動しSQL Shieldを起動しなかった場合, すべてのオブジェクトは利用不可となります. SQL Shieldは プロシージャが復号化されるのを完全に防ぐものではありませんが, 実在するすべての復号化プログラムを無力化します.

MSSQL Server 7.0 の内部制限によって, SQL Shieldで暗号化された格納済みプロシージャとビューは 4,000文字を超えることができません. 4,000文字以上のプロシージャはネイティブSQL暗号化方式で暗号化されます. MSSQL 2000 に同様の制限はありません.

では SQL Server の暗号化プロシージャが どれほど簡単に復号化可能かみてみましょう. まず簡単な暗号化格納プロシージャを生成します:

ウェブ検索から復号化プログラムを取得します.

復号化プログラムを起動し,先程新規に生成したプロシージャ を選択し保存を押します.

復号化プログラムによって生成されたテキストファイルを ノートパッドで開きます.見て下さい. すべての暗号化プロシージャが数クリックで暴かれてしまいました!

それではSQL Shieldはこの問題をどう解決するのか見てみましょう

SQL Shieldをがまだ起動されていない場合は 起動します:

新規格納プロシージャを生成し, "magic" /*sqlshield*/ コメントを挿入します:

実際にこの格納プロシージャを実行し, 問題なく実行されることを確認します.

復号化プログラムを実行し, 上のプロシージャの復号化を試みます:

保存ボタンを押して結果のファイルを見てみます:

どうしょう. 我々の貴重なプロシージャはプロテクトされたままです.

SQL Shieldを使わないとどうなるか, ご覧頂けましたか? master.sqlshield_startupプロシージャの中で SQL Shieldのオートスタートを無効にして SQL Serverを再起動しますと, sqlshield_testがまた実行されます. そうすると以下のエラーが表示されます.

SQL Shield を再起動すると, 格納プロシージャは再び実行可能になります.