Henüz var olmayan nesnelere referansta bulunan saklı yordamlar oluşturabilirsiniz (örneğin, tablolar ve işlevler). Henüz varolan nesnelerde henüz bulunmayan sütunlara başvuran saklı yordamlar oluşturamazsınız. Bu, ertelenmiş ad çözümlemesinin çift kenarlı kılıcıdır - SQL Server, bazı durumlarda şüphenin avantajını sağlar, ancak hepsi değil. SET STRICT_CHECKS ON;
Bunun çalıştığı yerler ve kırıldığı yerler hakkında fikir edinmek için Erland'ın fikirlerine bakın :
http://www.sommarskog.se/strict_checks.html
(Ve senin peşinde olduğun şeyin karşıt kutuplarını nasıl istediğini - varlığına bakılmaksızın her şeyin derlenmesine izin vermek istiyorsun ve her bir sütunun veya tablonun kontrol edilmesini istiyor.)
SET DEFERRED_NAME_RESOLUTION OFF;
İstendiği gibi bir ayar yoktur :
http://connect.microsoft.com/sql/127152
Ve böyle bir ayar yok IGNORE ALL_RESOLUTION;
.
Bunu aşağıdakiler de dahil olmak üzere birkaç şekilde çözebilirsiniz:
(a) etkilenen saklı yordam (lar) da dinamik SQL kullanın.
(b) CREATE PROCEDURE
içinde hiçbir şey olmayan bir saplama oluşturun , daha sonra komut dosyanızın geri kalanını çalıştırın, ardından ALTER PROCEDURE
gerçek gövdeye sahip olanı çalıştırın (özünde prosedürü iki aşamada dağıtın).
(c) dağıtım aracınızı işlem sırası hakkında daha akıllı hale getirin. Tablo değişiklikleri bir işlevin varlığını gerektiriyorsa, bu değişiklikleri en son komut dosyasını yazın. RedGate'in SQL Compare gibi şema karşılaştırma araçları, uygun bağımlılık sırasında sizin için komut dosyaları oluşturma konusunda oldukça iyidir. Hangi aracı kullandığınızdan bahsetmezsiniz, ancak bunu yapmazsa ...
(d) Martin Smith'in burada ilginç bir çözümü var , ama onunla oynamadım.