私はバージョンのあるプロジェクトに取り組んでいます。新しいバージョンを公開する準備ができたら、DBAによってデータベースを更新するためのストアドプロシージャを準備します。私は彼にSPを送り、彼はそれらを実行します。ただし、DBAにSPコードを表示させたくありません。DBAにコードを表示せずにストアドプロシージャを転送することは可能ですか?
3 に答える
CLRストアドプロシージャを出荷してアセンブリを難読化すると、機能はかなり隠されてしまいます。
これがCLRストアドプロシージャを使用するための間違った動機になることをお勧めします。
1つのオプションは、暗号化されたテキストファイルでSQLストアドプロシージャを提供することです。暗号化されたSQLテキストを読み取り、復号化してから選択したサーバーに展開する独自のアプリを.NETで記述します。
.NETで作業している場合は、そのようなアプリを作成するのがいかに簡単かがわかります。そのアプリにストアドProcs.DBAを提供するだけで、そのアプリを使用してストアドプロシージャを展開できます。単純なシナリオでは、SQLテキストの復号化に必要な「パスワード」をハードコーディングできますが、より機密性の高いシナリオでは、PKIを使用できます。
他のすべてのソリューションと同様に、このソリューションはリバースエンジニアリングできますが、CLRでストアドプロシージャロジックを書き直すよりも、私見の方が優れたオプションです。
注:WITH ENCRYPTION
ストアドプロシージャを作成するためにオプションを使用すると想定しています。
さて、フィリップがすでにコメントしているように、もし私があなたのストアドプロシージャを実行している人なら、私は自分のDBで何かを実行するのに大きな問題を抱えているでしょう。
コードを一目で読めないようにしたい場合は、難読化を試してください(BASE64でエンコード/デコードされた文字列をすぐに実行する場合は、ほとんどの場合、いずれかの形式を使用できます)
上記のすべてについて、暗号化されたストアドプロシージャが必要になりますが、それはシステムによって異なり、tsqlを十分に理解していません。