Masalah seperti ini menunjukkan kepada kita bahwa orang-orang yang membuat SQL server tidak pernah benar-benar menggunakan produk mereka. Ini adalah kelalaian yang mencolok sehingga orang harus bertanya-tanya apa lagi yang mereka lupa lakukan dengan benar (saya punya daftar sekitar 30 masalah menjengkelkan lainnya seperti ini yang harus saya atasi untuk membuat pekerjaan ini seperti yang dilakukan oleh DB lainnya. kotak, termasuk fakta bahwa kita memerlukan penyihir yang buruk untuk melakukan ini di tempat pertama [jika saya punya waktu saya menghabiskan menunggu penyihir ini untuk menghubungkan dan menghitung tabel yang sama untuk DB yang sama, setiap kali, kembali ... Saya punya waktu untuk liburan yang menyenangkan]).
Saya sangat malas dan tidak mau mengetik EXEC sp_msforeachtable ...dua kali setiap kali saya melakukan ini. Pekerjaan saya adalah meninggalkan kendala pada server produksi dan menghapusnya dari server dev. Ini akan mencegah kesalahan tetapi metode ini memiliki beberapa efek samping SANGAT BESAR. Pertama, Anda tidak akan lagi bisa mengembalikan cadangan penuh ke server dev Anda (kecuali Anda tidak perlu menghapus semuanya lagi). Kedua, ini bekerja paling baik ketika Anda yakin bahwa konsumen data Anda juga menegakkan batasan-batasan ini (atau tidak peduli dengan mereka). Dalam kasus saya, kami hanya memiliki satu konsumen (situs web kami) sehingga kami telah membuat batasan ini ke dalam kode situs juga (yaitu sebelum kami menghapus catatan pengguna, kami menghapus semua catatan telepon untuk pengguna itu terlebih dahulu). Iya, ini pada dasarnya meniadakan perlunya kendala di tempat pertama dan menggandakan pekerjaan yang harus saya lakukan tetapi juga memberi saya kesempatan untuk memverifikasi bahwa kode saya bekerja dengan atau tanpa kendala berbasis DBMS (kenyataannya adalah bahwa mereka masih di prod server hanya sebagai rencana kontingensi). Anda bisa menyebutnya cacat dalam desain saya, tetapi saya lebih suka menyebutnya solusi untuk DBMS yang cacat. Bagaimanapun, itu masih lebih cepat dan lebih mudah untuk melakukan ini di tempat lain daripada dari dalam MSSQL karena tidak dapat mengatasi desain itu sendiri.
sp_msforeachtable(dansp_MSForEachDb) tidak berdokumen dan tidak didukung. Anda seharusnya tidak / menghindari menggunakannya. Mungkin melewatkan tabel !! Lihat posting ini dari @AaronBertrand -> sqlblog.com/blogs/aaron_bertrand/archive/2010/12/29/… dan item hubungkan ini - (MS menunjukkan bahwa mereka tidak akan memperbaikinya) -> connect.microsoft.com/SQLServer / feedback / details / 264677 / ...