2009-07-13 8 views
3

Ich habe eine SQL Server-Datenbank (2008), in der ich einige CLR-DLLs habe, die SQL für verschiedene Dinge verwendet.Werden CLR-DLLs bei Verwendung der SQL Server-Spiegelung gespiegelt?

Werden diese DLLs gespiegelt, wenn ich SQL Mirroring verwende? Unser DBA sagt nicht, aber ich finde das verrückt und kann nicht viele Informationen online finden.

Ist es möglich, die CLR-DLLs zu spiegeln?

Antwort

4

CLR-Assemblys werden in der Datenbank gespeichert und als Teil der Datenbank gespiegelt. Jede Datenbank hat ihre eigene sys.assemblies-Sicht. Wenn Sie die DMV-Datei master.sys.assemblies abfragen, finden Sie die Assemblys für andere Datenbanken im DMV nicht. Es gibt Probleme, die auftreten können, wenn eine Datenbank mit Baugruppen gespiegelt ist. Wenn Sie zum ersten Mal eine Assembly mit externem Zugriff oder UNSAFE verwenden und das Bit TRUSTWORTY verwenden, um die Assembly in Ihrer Datenbank zuzulassen, ist dies während des Wiederherstellungsprozesses beim Failover deaktiviert, sodass Sie es erneut aktivieren müssen. Wenn Sie die Assembly mit einem Zertifikat signiert haben, müssen Sie das Zertifikat und die Anmeldung, die der Assembly auf dem gespiegelten Server zugeordnet sind, manuell erstellen, da dies im Master und nicht in der Datenbank gespeichert ist. Die Assembly wird dort sein, ebenso wie Ihre SQL-Datenbankobjekte, aber es funktioniert möglicherweise nicht. Möglicherweise müssen Sie auch den Namen des Datenbankbesitzers als Teil des Failovers ändern.

http://sqlblog.com/blogs/jonathan_kehayias/archive/2008/03/06/clr-safety-issues-after-database-restore-to-new-server.aspx

Wenn Sie überprüfen wollen, was ich oben gesagt, ein Backup der Benutzerdatenbank mit einer Baugruppe auf sie, und es wieder auf einem anderen Server. Ihre Assembly wird ein Teil der Datenbank sein.

1

Nur um den offensichtlichen Punkt zu dem hinzuzufügen, was Jonathan sagte: Ihre Assemblys müssen in der gespiegelten Anwendungsdatenbank bereitgestellt werden, nicht in msdb oder einer anderen Datenbank.