Bài viết SQL Server Pro "Giải mã các đối tượng SQL Server" vẫn hoạt động trong SQL Server 2008.
Bạn cần kết nối qua DAC. Xem tệp "Giải mã các thủ tục, hàm, trình kích hoạt, views.sql được lưu trữ trong SQL 2005" trong tải xuống .
Chỉ để tóm tắt các bước mà nó thực hiện cho định nghĩa thủ tục được lưu trữ sau đây
CREATE PROC dbo.myproc
WITH ENCRYPTION
AS
SELECT 'FOO'
- Lấy văn bản đối tượng được mã hóa từ
imageval
trongsys.sysobjvalues
và lưu trữ nó trong một biến@ContentOfEncryptedObject
- Tính toán
@ObjectDataLength
từDATALENGTH(@ContentOfEncryptedObject)/2
. - Tạo
ALTER PROCEDURE
câu lệnh được đệm đúng độ dài bằng-
ký tự (vì vậy trong trường hợp này làALTER PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS------------
) - Thực thi
ALTER
tuyên bố, truy xuất phiên bản được mã hóa từsys.sysobjvalues
và lưu trữ trong biến@ContentOfFakeEncryptedObject
sau đó quay trở lại thay đổi. - Tạo
CREATE PROCEDURE
câu lệnh được đệm đúng độ dài bằng-
ký tự (vì vậy trong trường hợp này làCREATE PROCEDURE [dbo].[myproc] WITH ENCRYPTION AS-----------
). Điều này được lưu trữ trong biến@ContentOfFakeObject
Sau đó, nó lặp lại cho @i = 1 to @ObjectDataLength
và giải mã định nghĩa một ký tự tại một thời điểm bằng cách sử dụng XOR
sau tính toán.
NCHAR(
UNICODE(SUBSTRING(@ContentOfEncryptedObject, @i, 1)) ^
(
UNICODE(SUBSTRING(@ContentOfFakeObject, @i, 1)) ^
UNICODE(SUBSTRING(@ContentOfFakeEncryptedObject, @i, 1))
)
)