サードパーティのデータベースに取り組んでいます。
右クリックしてビューの定義を表示しようとするCREATE TO
とNEW QUERY EDIT WINDOW
、エラーが発生します:
このオブジェクトにはこのプロパティが存在しないか、アクセス権が不十分なために取得できない可能性があります。テキストは暗号化されます。
-- Encrypted text
サードパーティのデータベースに取り組んでいます。
右クリックしてビューの定義を表示しようとするCREATE TO
とNEW QUERY EDIT WINDOW
、エラーが発生します:
このオブジェクトにはこのプロパティが存在しないか、アクセス権が不十分なために取得できない可能性があります。テキストは暗号化されます。
-- Encrypted text
回答:
暗号化されたオブジェクトをその場で復号化するために使用できる別のサードパーティツールは、Red GateのSQLプロンプトです:http : //www.red-gate.com/products/sql-development/sql-prompt/features
ストアドプロシージャにカーソルを合わせると、復号化された作成スクリプトが表示されます。
免責事項:このツールは商用(14日間の無料トライアル付き)であり、Red Gateで働いています。
私はこの問題についてかなり詳細に説明しています。
要するに、オブジェクトは実際には暗号化されておらず、むしろ難読化されています。したがって、元のバックを取得できます。この方法は少し複雑ですが、次の手順で構成されています。
次のように難読化されたコードを選択します。
SELECT @secret = imageval
FROM sys.sysobjvalues
WHERE objid = OBJECT_ID(@object_name);
オブジェクトを、同じ名前で同じobject_idと同じ長さ(バイトを使用ALTER PROCEDURE
)を持つ別のオブジェクトで置き換えます
これで元のコードが得られます。しかし、Kinが述べたように、これを行うことでサポートや法的意味合いさえあるかもしれないので、まず弁護士に相談してください。
モジュールテキストは、RC4ストリーム暗号を使用して暗号化されます。
RC4初期化キーは、次のSHA-1ハッシュから計算されます。
モジュールのオブジェクトサブIDは次のとおりです。
適切な特権を持つユーザーは、次の方法でモジュールを復号化できます。
私の記事の詳細と完全なコード実装:
専用管理者接続(DAC)を使用してSQL Serverに接続し、ストアドプロシージャのSQLテキストを表示できます。以下を使用してDACに接続します。
admin:Your_Servername
あなたには必要に応じて、完全な手順を見つけることができますスタックオーバーフロー上のこの回答でマーティン・スミス。
別の代替方法は、「暗号化されたストアドプロシージャ、ビュー、SQL Server 2005、2008、およびR2の関数の暗号化解除」で説明したサードパーティのスクリプトを使用することです
サイドノートとして -それがサードパーティのデータベースであり、prodでそれを行う場合、ベンダーはそれをサポートしますか?SPまたはビューを暗号化する正当な理由があるかもしれません。おそらくバックアップを取り、それをいじるのが良いでしょう。
元のDDLスクリプトをプレビューするか、暗号化されたオブジェクトを復号化する場合は、ApexSQL Decryptをチェックアウトできます。
これは無料のスタンドアロンツールで、SSMSに統合し、元のDDLスクリプトをプレビューするオプションがあります。また、複数のサーバーにあるオブジェクトを一度に復号化できます。あなたを助けることができるもう1つのツールは、dbForge SQL Decryptorです
一度に複数のストアドプロシージャを復号化するためによく使用する方法...
RedGateのSQL Compareを使用して、データベースを空のデータベース(またはストアドプロシージャがないことがわかっているデータベース)と比較します。展開スクリプトを作成し、SSMSにコピーします。WITH ENCRYPTIONを検索して空白に置き換えます。次に、CREATE PROCEDUREをALTER PROCEDUREに変更します。元のデータベースに対してRedGateスクリプトを実行すると、すべてのストアドプロシージャの暗号化が削除されました。
400以上のストアドプロシージャを持つデータベースがあり、SQLプロンプトは便利ですが、400以上のストアドプロシージャに対して右クリック、コピー、貼り付けをする時間はありませんでした。RedGate SQL Compareを使用して、開始から終了まで約10分で400以上のストアドプロシージャから暗号化を削除できました。