2010-08-04 21 views
5

Bir MS SQL Server db kullanıyorum ve bol miktarda görünüm kullanın (bir O/R mapper ile kullanım için). Biraz sıkıntı İsterdim ki üzereschemabinding ve sık sık güncelleştirirken db şema güncelleştirmeleri nasıl işlenir

  • (sunucularında dağıtmak ve bir kaynak kontrol sisteminde koymak için)

ama sorunu çalıştırmak komut ile

  • güncellemesini bağlayıcı kullanımı şema o ne zaman istersem Bir tabloya bir sütun eklemek, önce bu tabloya başvuran tüm görünümleri kaldırmam, tabloyu güncelleştirmem ve daha sonra görünümlerin yeniden oluşturulmasına gerek kalmaz. Bu, güncelleme komut dosyamı çok daha uzun bir zamanda yapar ve ayrıca kaynak kontrol sistemindeki farklara bakmakla, gerçekte ilgili değişikliğin ne olduğunu görmek daha zordur.

    Bunu işlemenin daha iyi bir yolu var mı?

    Hala basit ve kaynak denetlenebilir sql güncelleştirmelerini kullanabilmem gerekir. SQL Server Management Studio'da bulunan bir kod üreticisi yararlı olabilir, ancak bazı dizinler veya (varsayılan) kısıtlamaların isimlerini belirtmeyen kod oluşturma eğiliminde SQL Server Management Studio ile ilgili sorunlar yaşadım. Ancak, komut dosyalarımı tüm sistemlerin isimleri de dahil olmak üzere farklı sistemlerde çalıştırdığımda aynı dbs'ye sahip olmak istiyorum, böylece bu kısıtlamaları daha sonra güncelleştirirken döngüleri atlamak zorunda kalmam.

    Belki de daha akıllı bir SQL kod üreteci bir çözüm olabilirdi?

    Benim iş akışı artık şudur: "cannot ALTER 'XXX' because it is being referenced by object 'YYY'"

    • tip sorgu editörü alter table deyimi
    • çek ben gibi bir hata deyimi alırsanız
    • senaryoya
    • kullanımı SQL Server Managment Studio beni başvurulan nesne için create kod
    • alter deyimi önce drop deyimi takıp
    • kontrolünden sonra ifadesi oluşturmak drop deyimi hatayı oluşturursa ve tekrar

    Bu beni rahatsız ediyor, ama ben sadece şema ve script güncellemelerini kullanmaya devam etmek istersem onunla yaşamak zorundayım ...

  • cevap

    2

    En azından ortadan kaldırabilirsiniz. bağımlılıklarınızı bulmak için birkaç dinamik yönetim işlevini ve sistem görünümlerini sorgulayarak bir adım "hata. This article, bunun nasıl yapılacağına dair iyi bir açıklama sunar. Bunun ötesinde, bence haklısın, kekini yiyemezsin ve şemaya bağlayarak yiyemezsin. Ayrıca, görünümlerin düşürülmesi/oluşturulmasının, bu nesneler üzerinde verilen izinleri kaybetmenize neden olacağından, bu izinlerin komut dosyalarınızda da yer alması gerektiğini unutmayın.

    +1

    Oh, peki. Sanırım onunla yaşayacağım. İdeal olarak şunu istiyorum: a) tablo güncellemelerini gerçekten etkilemiyorsa hata mesajı yok (örneğin yeni bir sütun eklemek, bu tablodaki salt okunur görünümleri etkilememelidir) b) tablo güncellemeleri bozuyorsa hata iletisi (örn. bir görünümde kullanılan bir sütunun bırakılması) Ama sanırım MSSQL bu şekilde çalışmıyor (muhtemelen iyi nedenlerle ...) İzin hatırlatıcısı için teşekkürler! –

    İlgili konular