Bunun gibi sorunlar bize SQL sunucusu yapan kişilerin ürünlerini hiç kullanmadığını gösteriyor. Bu öylesine göze batan bir ihmaldir ki, başka ne basitçe doğru bir şekilde yapmayı unuttuklarını merak etmelidir (diğer DB'lerin yaptığı gibi bu işi yapmak için üstesinden gelmem gereken yaklaşık 30 diğer can sıkıcı meselenin bir listesi var. İlk etapta bunu yapmak için berbat bir sihirbaza ihtiyacımız da dahil olmak üzere [bu sihirbazın aynı DB için aynı tabloları bağlayıp aynı tabloları numaralandırmasını beklerken geçirdiğim zamanım olsaydı geri ... güzel bir tatil için vaktim olur]).
Çok tembelim ve yazmak istemiyorum EXEC sp_msforeachtable ...
bunu her yaptığımda iki kere. Etrafımda çalışmam kısıtlamaları üretim sunucusunda bırakmak ve geliştirici sunucusundan kaldırmaktı. Bu hatayı önleyecektir, ancak bu yöntemin birkaç ÇOK BÜYÜK yan etkisi vardır. İlk olarak, artık dev sunucunuza tam bir yedeklemeyi geri yükleyemezsiniz (hepsini tekrar kaldırmayı tamamlamıyorsanız). İkincisi, bu, verilerinizin tüketicilerinin de bu kısıtlamaları uyguladığından (veya bunları umursamadığınızdan) emin olduğunuzda en iyi sonucu verir. Benim durumumda, sadece bir tüketicimiz (web sitemiz) var, bu nedenle bu kısıtlamaları site koduna da ekledik (yani bir kullanıcı kaydını silmeden önce o kullanıcı için tüm telefon kayıtlarını siliyoruz). Evet, Bu aslında ilk etapta kısıtlama ihtiyacını ortadan kaldırır ve yapmam gereken işi iki katına çıkarır, ancak aynı zamanda kodumun DBMS tabanlı kısıtlamalarla veya bu kod olmadan çalıştığını doğrulama şansı verir (aslında hala prod'da olmalarıdır) sunucuyu yalnızca beklenmedik durum planı olarak). Buna tasarımımda bir kusur diyebilirsin, ancak kusurlu bir DBMS için bir geçici çözüm olarak adlandırmayı tercih ederim. Her halükarda, bunu kendi tasarımı ile baş edemediği için MSSQL'den başka bir yerde yapmak daha hızlı ve daha kolaydır.
sp_msforeachtable
(vesp_MSForEachDb
) belgesiz ve desteklenmiyor. Kullanmamalı / kullanmamalısınız. Tabloları atlayabilir! @AaronBertrand -> sqlblog.com/blogs/aaron_bertrand/archive/2010/12/29/… adresindeki bu gönderiye ve bu bağlantı öğesine bakın - (MS bunu düzeltmeyeceklerini belirten) -> connect.microsoft.com/SQLServer / feedback / details / 264677 /…