Saya membuat tabel pada lingkungan pengembangan untuk tujuan pengujian dan ada beberapa sp yang mereferensikan tabel ini. Sekarang saya harus menghapus tabel ini dan juga mengidentifikasi semua sp yang merujuk tabel ini. Saya menghadapi kesulitan untuk menemukan daftar semua sp. Harap sarankan beberapa kueri dengan menganggap bahwa nama tabel adalah 'x' dan database adalah sql server 2005.
sql
tsql
sql-server-2005
DJay
sumber
sumber
Jawaban:
BTW - di sini adalah sumber yang berguna untuk jenis pertanyaan ini: Meminta FAQ Katalog Sistem SQL Server
sumber
ROUTINE_DEFINITION
padaINFORMATION_SCHEMA.ROUTINES
?set @Query = “SELECT * FROM Object_I_Need_To_Find_References…”;
Berikut ini berfungsi pada SQL2008 dan di atasnya. Memberikan daftar prosedur dan fungsi yang tersimpan.
sumber
kadang-kadang pertanyaan di atas tidak akan memberikan hasil yang benar, ada prosedur tersimpan yang tersedia untuk mendapatkan dependensi tabel sebagai:
sumber
Cara non-kueri adalah menggunakan Sql Server Management Studio.
Temukan tabel, klik kanan dan pilih "Lihat dependensi".
EDIT
Tapi, seperti kata komentator, itu tidak terlalu bisa diandalkan.
sumber
Kueri berikut akan mengambil semua nama Prosedur Tersimpan dan definisi yang sesuai dari SP tersebut
sumber
Perlu diingat bahwa ini juga akan muncul SPs di mana nama tabel dalam komentar atau di mana nama tabel adalah substring dari nama tabel lain yang sedang digunakan. Misalnya, jika Anda memiliki tabel bernama "test" dan "test_2" dan Anda mencoba mencari SP dengan "test" maka Anda akan mendapatkan hasil untuk keduanya.
sumber
syscomments
dengan cara ini tidak dapat diandalkan untuk prosedur panjang karena membagi definisi menjadi 4000 karakter di beberapa baris.sys.sql_modules
hindari ini.sys.sql_modules
sebagai gantinya.Kueri di bawah ini hanya berfungsi saat mencari dependensi pada tabel dan bukan pada kolom:
Namun, permintaan berikut adalah pilihan terbaik jika Anda ingin mencari semua jenis dependensi, tidak ketinggalan apa pun. Ini sebenarnya memberikan lebih banyak informasi daripada yang dibutuhkan.
sumber
Ini akan berfungsi jika Anda harus menyebutkan nama tabel.
sumber
Di studio manajemen Anda cukup klik kanan ke tabel dan klik ke 'Lihat Dependensi'
daripada Anda dapat melihat daftar Objek yang memiliki dependensi dengan tabel Anda:
sumber
Pada dasarnya Anda memiliki 2 opsi:
----Pilihan 1
----Pilihan 2
2 kueri ini akan memberi Anda semua prosedur tersimpan yang merujuk tabel yang Anda inginkan. Permintaan ini bergantung pada tabel 2 sys yang merupakan sysobjects dan syscomments. Sysobjects adalah tempat semua nama objek DB Anda disimpan ini termasuk prosedur yang tersimpan.
Syscomments berisi teks untuk semua prosedur Anda.
Jika Anda kueri: SELECT * FROM syscomments
Anda akan memiliki tabel yang berisi id yang merupakan pemetaan ke tabel sysobjects dengan teks yang terkandung dalam prosedur tersimpan sebagai kolom terakhir.
sumber
Coba ini
sumber