12

これは状況です:

Trigger.dll と Trigger.XmlSerializer.dll があります。

CREATE ASSEMBLY を使用して、MSSQL に登録します。

今、私は両方の新しいバージョンをコンパイルしました。

ALTER ASSEMBLY を使用して更新したいのですが、一度に 1 つしか更新できません。依存関係のあるものを更新しようとすると、エラーが発生します。これを行うためのトリックは何ですか?

すべてのトリガーなどを削除する必要があり、データベースのダウンタイムがあるため、削除して再作成したくありません。

4

3 に答える 3

1

テーブルを落とし、それを作り直すことが唯一の方法だと私は恐れています。

これの主な理由は、アセンブリを新しいバージョンに更新すると、アセンブリのタイプに格納されている値が使用できなくなるためです。

于 2009-02-05T10:58:47.983 に答える
0

2 つの提案:

1) 通常、ILMerge を使用して依存関係を埋め込み、内部化することで、依存関係を回避できます。したがって、ほとんどの場合、alter assembly ステートメントで十分です。まだSQLCLRで試したことはありませんが、試してみます。

2) おそらく、XML シリアライゼーション アセンブリは必要ないのでしょうか? この記事では、SQL Server 内で外部 Web サービスを呼び出す場合にのみ必要であると示唆しています。Windows で独自のスタンドアロン サービスを作成するだけでなく、すべてのビジネス サービスを MS SQL Server 製品内でホストしたいという人でない限り (インストール、管理、保守がはるかに簡単です)、それ自体が疑わしい設計です。つまり、「データ層がすべてを行う」アンチパターンよりも多くの n 層パターンです。あなたの DLL は Triggers.dll と呼ばれているため、型を宣言していることや、Web サービス プロキシであることは示唆されていません。XMLシリアライザーを使用する他の理由を見逃した場合は、それで十分です。興味があるので詳しく説明してください。

于 2013-09-27T08:51:53.637 に答える