Saya mencoba untuk menjatuhkan tabel tetapi mendapatkan pesan berikut:
Psn 3726, Level 16,
Status 1, Baris 3 Tidak dapat menghapus objek 'dbo.UserProfile' karena direferensikan oleh batasan FOREIGN KEY.
Psn 2714, Level 16, Status 6, Baris 2
Sudah ada objek bernama 'ProfilPengguna' dalam database.
Saya melihat sekeliling dengan SQL Server Management Studio tetapi saya tidak dapat menemukan kendala. Bagaimana saya bisa mengetahui kendala kunci asing?
sql
sql-server
sql-server-2008
marc_s
sumber
sumber
Worth noticing:
Jawaban oleh @LittleSweetSeas akan mengembalikan info tentang kunci asing UNTUK tabel referensi tertentu , namun rincian jawaban @ Gayathri-Varma untuk tabel induk tertentu . Keduanya berguna dalam konteks yang berbeda dan keduanya memenangkan balapan mereka sendiri :-)Jawaban:
Ini dia:
Dengan cara ini, Anda akan mendapatkan tabel referensi dan nama kolom.
Diedit untuk menggunakan sys.tables dan bukan sys.objects umum sesuai saran komentar. Terima kasih, marc_s
sumber
sys.tables
daripadasys.objects
INNER JOIN sys.objects AS o ON o.OBJECT_ID = fc.referenced_object_id
denganINNER JOIN sys.tables t ON t.OBJECT_ID = fc.referenced_object_id
Cara lain adalah dengan memeriksa hasil
(atau cukup sorot TableName yang dikutip dan pres ALT + F1)
Dengan berlalunya waktu, saya memutuskan untuk memperbaiki jawaban saya. Di bawah ini adalah tangkapan layar dari hasil yang
sp_help
diberikan. A telah menggunakan AdventureWorksDW2012 DB untuk contoh ini. Ada banyak informasi bagus di sana, dan yang kami cari ada di bagian paling akhir - disorot dengan warna hijau:sumber
Coba ini
sumber
name
nilai yang dikembalikan adalah nama internal (methinks), dan bukan nama kolom sebenarnya di tabel induk. Adakah cara untuk memperbaikinya?ParentTableName
akan selalu sama dengan yang diberikan 'Tablename
' di klausa where (jika disertakan). Ini mungkin disengaja, dan akan lebih berguna ketika ditanyai untuk lebih dari satu tabel.Saya menemukan jawaban ini cukup sederhana dan melakukan trik untuk apa yang saya butuhkan: https://stackoverflow.com/a/12956348/652519
Ringkasan dari tautan, gunakan kueri ini:
Cepat dan sederhana. Saya dapat menemukan semua tabel kunci asing, masing-masing kolom dan nama kunci asing dari 15 tabel dengan cukup cepat.
Seperti yang disebutkan @mdisibio di bawah ini, berikut adalah tautan ke dokumentasi yang merinci parameter berbeda yang dapat digunakan: https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp- fkeys-transact-sql
sumber
EXEC sp_fkeys 'Payroll', 'accounting'
Saya menggunakan skrip ini untuk menemukan semua detail yang terkait dengan kunci asing. Saya menggunakan INFORMATION.SCHEMA. Di bawah ini adalah SQL Script:
sumber
jika Anda ingin melalui SSMS pada jendela objek explorer, klik kanan pada objek yang ingin Anda letakkan, lakukan view dependencies.
sumber
Berikut adalah cara terbaik untuk mengetahui Hubungan Kunci Asing di semua Database.
dan satu cara lagi
sumber
exec sp_helpconstraint 'Table Name'
adalah satu-satunya yang mengembalikan baris apa pun untuk saya. Namun nama yang kontras itu tidak jelas.PRIMARY KEY (clustered) PK__org_soft__3213E83FE6B07364
sumber
--Berikut ini mungkin memberi Anda lebih banyak dari apa yang Anda cari:
sumber
Anda juga dapat mengembalikan semua informasi tentang itu
Foreign Keys
dengan mengikuti jawaban @LittleSweetSeas:sumber
Di SQL Server Management Studio Anda cukup mengklik kanan tabel di objek explorer dan memilih "View Dependencies". Ini akan memberi Anda titik awal yang baik. Ini memperlihatkan tabel, tampilan, dan prosedur yang mereferensikan tabel.
sumber
coba pertanyaan berikut.
ini akan memberikan nama_konstrain, nama_kolom yang akan merujuk dan tabel yang bergantung pada batasan akan ada di sana.
sumber
Anda dapat menggunakan kueri ini untuk menampilkan
Foreign key
konstanta:Diambil dari http://blog.sqlauthority.com/2006/11/01/sql-server-query-to-display-foreign-key-relationships-and-name-of-the-constraint-for-each-table- dalam-database /
sumber
Cara termudah untuk mendapatkan
Primary Key
dan mendapatkanForeign Key
meja adalah:sumber
Di Object Explorer, perluas tabel, dan perluas Keys:
sumber