2009-02-05 16 views
12

Durum:Bir derlemeyi ve bağımlı derlemelerini MS-SQL'de nasıl güncelleştiririm?

Bir Trigger.dll ve bir Trigger.XmlSerializer.dll var.

MSSQL'e kaydetmek için CREATE MONTAJI'nı kullanıyorum.

Şimdi, her ikisinin de yeni sürümlerini derledim.

Güncelleştirmek için ALTER ASSEMBLY kullanmak istiyorum, ancak her seferinde yalnızca bir tane güncelleştirebilirsiniz. Bağımlılığı olan birini güncellemeye çalışırsanız, şikayetçi olur. Bunu yapmanın hilesi nedir?

Tüm tetikleyicileri, vb. Bırakmam gerektiğinden ve veritabanı kapalı kalmadığından, yeniden oluşturmak ve yeniden oluşturmak istemiyorum.

+0

Sizin sql sürümünüz nedir? – Avram

cevap

5

microsoft support belgesine göre bunları hile ile kullanabilirsiniz.

Notlar

  • Bu adımlar yükseltme veya "yükseltme veya eski sürüme nasıl bir montaj" bölümünde açıklanan senaryosunda montaj A düşürün.
  • Bu örnek, iki derlemenin sürümlerinin hem 1.0.0.0 hem de derlemelerin C# ile yazıldığını varsayar. Bu adımları izlediğinizde, A ve B aksamını 2.0.0.0 sürümüne yükseltmeye çalışın.

A aksamını yükseltmek veya yükseltmek için, aşağıdaki adımları izleyin.

  1. B Grubunun 1.0.0.0 sürümünü bir klasöre yedekleyin.
  2. Yapı B'yi değiştirin ve daha sonra 2.0.0.0 sürümüne yeniden derleyin.
  3. SQL Server 2005'te B Grubunu yükseltmek için ALTER ASSEMBLY deyimini kullanın.
  4. Montaj A'yı değiştirin ve sonra derleme 2.0.0.0 sürümüne yeniden derleyin. Bunu yaptığınızda, 1. adımda yaptığınız yedeklemeden B montajının 1.0.0.0 sürümüne bakın. Bunu yapmak için,/referans anahtarıyla birlikte Csc.exe derleyici aracını kullanın. Örneğin, aşağıdaki komutu kullanın: csc/target: library /out:AssemblyA.dll AssemblyA.cs AssemblyInfo.cs /reference:"BackupFolder\AssemblyB.dll " Not Montaj meta verisindeki montaj B sürümünü doğrulamak için Ildasm.exe yardımcı programını kullanarak A, açık derleme. Daha sonra, MANIFEST bölümündeki başvurulan derleme için meta veri bilgilerini doğrulayın.
  5. SQL Server 2005.
1

Tabloyu düşürmekten ve yeniden yaratmanın tek yolu olmasından korkuyorum.

Bunun temel nedeni, derlemeyi yeni bir sürüme güncelleştirdiğinizde, bir derlemede türünde depolanan değerlerin kullanılamaz olmasıdır.

0

İki öneri montaj A yükseltmek için ALTER ASSEMBLY deyimini kullanın:

1) Genellikle gömmek ve bunları içselleştirmek ILMerge kullanarak bağımlılıkları önleyebilirsiniz. Bu yüzden alter derleme bildirimi çoğu durumda yeterli olmalıdır. Kendimi henüz SQLCLR ile denemedim ama ben onu bir verecektim.

2) Belki de XML serileştirme meclisleri gerekli değildir?This article suggests it is only necessary when calling external web services inside SQL Server. Windows'da kendi bağımsız hizmetlerinizi yazmaktan çok (çok daha kolay kurulum, yönetme ve sürdürme) değil, tüm iş hizmetlerinizi MS SQL Server ürününe dahil etmek isteyen kişilerden biri değilse, kendi içinde şüpheli bir tasarım, Yani "data katman her şeyi yapar" anti-pattern'den daha fazla n-Tier kalıbı. DLL'niz Triggers.dll olarak adlandırıldığı gibi herhangi bir tür bildirir ya da bir web hizmeti proxy olduğunu önermez. Eğer XML serileştiricilerini kullanmak için başka bir neden kaçırırsam yeterince adil, lütfen ilginizi çekmeyin.

İlgili konular