Dela via


Implementera sammansättningar

gäller för:SQL Server

Den här artikeln innehåller information om följande områden som hjälper dig att implementera och arbeta med sammansättningar i databasen:

  • Skapa sammansättningar
  • Ändra sammansättningar
  • Släppa, inaktivera och aktivera sammansättningar
  • Hantera sammansättningsversioner

Skapa sammansättningar

Sammansättningar skapas i SQL Server med hjälp av instruktionen Transact-SQL CREATE ASSEMBLY eller i SQL Server Management Studio med hjälp av den sammansättningsassisterade redigeraren. När du distribuerar ett SQL Server-projekt i Visual Studio registreras dessutom en sammansättning i databasen som har angetts för projektet. Mer information finns i Distribuera CLR-databasobjekt.

Ändra sammansättningar

Sammansättningar ändras i SQL Server med hjälp av Transact-SQL ALTER ASSEMBLY-instruktionen eller i SQL Server Management Studio med hjälp av sammansättningsassisterad redigerare.

Du kan ändra en sammansättning när du vill utföra följande åtgärder:

  • Ändra implementeringen av sammansättningen genom att ladda upp en nyare version av sammansättningens binärfiler. Mer information finns i Hantera sammansättningsversioner senare i den här artikeln.

  • Ändra behörighetsuppsättningen för sammansättningen. Mer information finns i Design-sammansättningar.

  • Ändra sammansättningens synlighet. Synliga sammansättningar är tillgängliga för referens i SQL Server. Icke-visningsbara sammansättningar är inte tillgängliga, även om de laddas upp i databasen. Som standard visas sammansättningar som laddats upp till en instans av SQL Server.

  • Lägg till eller släpp en felsöknings- eller källfil som är associerad med sammansättningen.

Släppa, inaktivera och aktivera sammansättningar

Sammansättningar tas bort med hjälp av Transact-SQL DROP ASSEMBLY-instruktionen eller SQL Server Management Studio.

Som standard inaktiveras alla sammansättningar som skapas i SQL Server från att köras. Du kan använda alternativet clr enabled för den sp_configure system lagrade proceduren för att inaktivera eller aktivera körningen av alla sammansättningar som laddas upp i SQL Server. Om du inaktiverar monteringskörningen förhindras vanliga clr-funktioner (language runtime), lagrade procedurer, utlösare, aggregeringar och användardefinierade typer från att köras och stoppar alla som körs för närvarande. Om du inaktiverar monteringskörning inaktiveras inte möjligheten att skapa, ändra eller släppa sammansättningar. Mer information finns i Server-konfiguration: clr aktiverat.

Mer information finns i sp_configure.

Hantera sammansättningsversioner

När en sammansättning laddas upp till en SQL Server-instans lagras och hanteras sammansättningen i databassystemkatalogerna. Ändringar som görs i definitionen av sammansättningen i .NET Framework ska spridas till sammansättningen som lagras i databaskatalogen.

När du måste ändra en sammansättning måste du utfärda en ALTER ASSEMBLY-instruktion för att uppdatera sammansättningen i databasen. Den här instruktionen uppdaterar sammansättningen till den senaste kopian av .NET Framework-moduler som håller implementeringen.

Satsen WITH UNCHECKED DATA i instruktionen ALTER ASSEMBLY instruerar SQL Server att uppdatera även de sammansättningar som bevarade data i databasen är beroende av. Mer specifikt måste du ange WITH UNCHECKED DATA om något av följande finns:

  • Beständiga beräknade kolumner som refererar till metoder i sammansättningen, antingen direkt eller indirekt, via Transact-SQL funktioner eller metoder.

  • Kolumner av en CLR-användardefinierad typ som är beroende av sammansättningen, och typen implementerar ett UserDefined (icke-Native) serialiseringsformat.

Försiktighet

Om WITH UNCHECKED DATA inte anges försöker SQL Server förhindra att ALTER ASSEMBLY körs om den nya sammansättningsversionen påverkar befintliga data i tabeller, index eller andra beständiga platser. SQL Server garanterar dock inte att beräknade kolumner, index, indexerade vyer eller uttryck överensstämmer med de underliggande rutinerna och typerna när CLR-sammansättningen uppdateras. Var försiktig när du kör ALTER ASSEMBLY för att se till att det inte finns någon matchningsfel mellan resultatet av ett uttryck och ett värde som baseras på uttrycket som lagras i sammansättningen.

Endast medlemmar i db_owner- och db_ddlowner fast databasroll kan köra ALTER ASSEMBLY med hjälp av WITH UNCHECKED DATA-satsen.

SQL Server skickar ett meddelande till händelseloggen för Windows-programmet om att sammansättningen ändrades med omarkerade data i tabellerna. SQL Server markerar sedan alla tabeller som innehåller data som är beroende av sammansättningen som omarkerade data. Den has_unchecked_assembly_data kolumnen i sys.tables katalogvyn innehåller värdet 1 för tabeller som innehåller omarkerade data och 0 för tabeller utan avmarkerade data.

Lös integriteten för omarkerade data genom att köra DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS mot varje tabell som har omarkerade data. Om DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS misslyckas måste du antingen ta bort de tabellrader som inte är giltiga eller ändra sammansättningskoden för att åtgärda problem och sedan utfärda fler ALTER ASSEMBLY-instruktioner.

ALTER ASSEMBLY ändrar sammansättningsversionen. Sammansättningens kultur och offentliga nyckeltoken förblir desamma. SQL Server tillåter inte registrering av olika versioner av en sammansättning med samma namn, kultur och offentliga nyckel.

Interaktioner med en datoromfattande princip för versionsbindning

Om referenser till sammansättningar som lagras i SQL Server omdirigeras till specifika versioner med hjälp av en utgivarprincip eller en administratörsprincip för hela datorn måste du utföra någon av följande åtgärder:

  • Kontrollera att den nya versionen som omdirigeringen görs till finns i databasen.

  • Ändra eventuella instruktioner till de externa principfilerna för datorn eller utgivarprincipen för att se till att de refererar till den specifika version som finns i databasen.

Annars misslyckas ett försök att läsa in en ny sammansättningsversion till SQL Server-instansen.

Mer information finns i ALTER ASSEMBLY.