Saya sedang mengerjakan basis data pihak ketiga.
Ketika saya mencoba melihat definisi tampilan dengan mengklik kanan, CREATE TO
dan kemudian ke NEW QUERY EDIT WINDOW
, saya mendapatkan kesalahan:
Properti ini mungkin tidak ada untuk objek ini atau mungkin tidak dapat diambil karena hak akses yang tidak memadai. Teks dienkripsi.
-- Encrypted text
Jawaban:
Alat pihak ketiga lain yang dapat Anda gunakan untuk mendekripsi objek terenkripsi dengan cepat adalah Prompt SQL Red Gate: http://www.red-gate.com/products/sql-development/sql-prompt/features
Dengan mengarahkan kursor ke prosedur yang tersimpan, Anda dapat melihat skrip penciptaan yang didekripsi.
Penafian: alat ini komersial (dengan uji coba gratis 14 hari) dan saya bekerja untuk Gerbang Merah.
sumber
Saya memiliki deskripsi yang cukup terperinci tentang masalah ini di sini .
Singkatnya, objek tidak benar-benar dienkripsi, tetapi agak dikaburkan. Karena itu kita dapat mengambil kembali yang asli. Metode ini sedikit terlibat tetapi terdiri dari langkah-langkah ini:
Pilih kode yang dikaburkan seperti ini:
Ganti objek dengan yang lain yang memiliki nama yang sama object_id yang sama dan panjang yang sama dalam byte (misalnya menggunakan
ALTER PROCEDURE
)Itu akan memberi Anda kode asli. Namun, seperti yang disebutkan Kin, mungkin ada dukungan dan bahkan implikasi hukum dengan melakukan ini jadi pastikan untuk berkonsultasi dengan pengacara Anda terlebih dahulu.
sumber
Teks modul dienkripsi menggunakan cipher aliran RC4 .
Kunci inisialisasi RC4 dihitung dari hash SHA-1 dari:
Dikonversi dari uniqueidentifier ke biner (16)
Dikonversi dari integer ke biner little-endian (4)
Dikonversi dari biner smallint ke little-endian (2) .
Sub-ID objek modul adalah:
Pengguna dengan hak istimewa yang sesuai kemudian dapat mendekripsi modul dengan:
Lebih detail dan implementasi kode lengkap dalam artikel saya:
Internal dari
WITH ENCRYPTION
sumber
Anda dapat terhubung ke SQL Server menggunakan Dedicated Administrator Connection (DAC) kemudian melihat teks sql dari prosedur tersimpan. Hubungkan ke DAC menggunakan:
Anda dapat menemukan langkah-langkah lengkap yang diperlukan dalam jawaban ini di Stack Overflow oleh Martin Smith .
Alternatif lain adalah menggunakan beberapa skrip pihak ketiga seperti yang disebutkan dalam mendekripsi prosedur tersimpan yang dienkripsi, tampilan, fungsi dalam SQL Server 2005, 2008, & R2
Sebagai catatan tambahan - jika ini adalah database pihak ketiga dan jika Anda melakukannya dengan paksa, akankah vendor mendukungnya? Mungkin ada alasan bagus untuk mengenkripsi SP atau tampilan. Mungkin lebih baik mengambil cadangan, lalu mengotak-atik itu.
sumber
Jika Anda ingin melihat pratinjau skrip DDL asli atau mendekripsi objek terenkripsi, Anda dapat melihat ApexSQL Decrypt
Ini adalah alat mandiri gratis, dengan opsi untuk mengintegrasikannya ke SSMS, pratinjau skrip DDL asli. Selain itu, Anda dapat mendekripsi objek yang terletak di beberapa server sekaligus. Satu lagi alat yang dapat membantu Anda, adalah dbForge SQL Decryptor
sumber
Metode yang sering saya gunakan untuk mendekripsi beberapa prosedur tersimpan sekaligus ...
Gunakan RedGate's SQL Compare dan bandingkan database Anda dengan database kosong (atau database yang Anda tahu tidak akan memiliki prosedur tersimpan). Buat skrip deploy dan salin ke SSMS. Temukan dan ganti DENGAN ENKRIPSI dengan spasi putih. Kemudian ubah PROSEDUR BUAT menjadi PROSEDUR ALTER. Jalankan skrip RedGate terhadap database asli dan Anda telah menghapus semua enkripsi prosedur tersimpan.
Saya memiliki database dengan 400+ prosedur tersimpan dan sementara SQL Prompt berguna, itu tidak layak waktu saya untuk mengklik kanan, menyalin, menempel pada 400+ prosedur tersimpan. Menggunakan RedGate SQL Compare Saya dapat menghapus enkripsi dari 400+ prosedur tersimpan saya dalam kira-kira 10 menit mulai dari selesai.
sumber