Assembly's implementeren
van toepassing op:SQL Server-
Dit artikel bevat informatie over de volgende gebieden waarmee u assembly's in de database kunt implementeren en ermee kunt werken:
- Assembly's maken
- Assembly's wijzigen
- Assembly's verwijderen, uitschakelen en inschakelen
- Assemblyversies beheren
Assembly's maken
Assembly's worden gemaakt in SQL Server met behulp van de Transact-SQL CREATE ASSEMBLY
-instructie of in SQL Server Management Studio met behulp van de Assembly Assisted Editor. Daarnaast registreert het implementeren van een SQL Server-project in Visual Studio een assembly in de database die is opgegeven voor het project. Zie CLR-databaseobjecten implementerenvoor meer informatie.
- Met Transact-SQL: CREATE ASSEMBLY (Transact-SQL)
- Met SQL Server Management Studio: Assembly-eigenschappen
Assembly's wijzigen
Assembly's worden gewijzigd in SQL Server met behulp van de Transact-SQL ALTER ASSEMBLY
-instructie of in SQL Server Management Studio met behulp van de Assembly Assisted Editor.
- Met Transact-SQL: ALTER ASSEMBLY (Transact-SQL)
- Met SQL Server Management Studio: Assembly-eigenschappen
U kunt een assembly wijzigen wanneer u de volgende acties wilt uitvoeren:
Wijzig de implementatie van de assembly door een nieuwere versie van de binaire bestanden van de assembly te uploaden. Zie Assemblyversies beheren verderop in dit artikel voor meer informatie.
Wijzig de machtigingenset van de assembly. Zie Ontwerpassembly'svoor meer informatie.
De zichtbaarheid van de assembly wijzigen. Zichtbare assembly's zijn beschikbaar voor verwijzingen in SQL Server. Niet-zichtbare assembly's zijn niet beschikbaar, zelfs niet als ze worden geüpload in de database. Standaard zijn assembly's die zijn geüpload naar een exemplaar van SQL Server zichtbaar.
Een foutopsporings- of bronbestand toevoegen of verwijderen dat aan de assembly is gekoppeld.
Assembly's verwijderen, uitschakelen en inschakelen
Assembly's worden verwijderd met behulp van de Transact-SQL DROP ASSEMBLY
-instructie of SQL Server Management Studio.
- Met Transact-SQL: DROP ASSEMBLY (Transact-SQL)
- Met SQL Server Management Studio: Objecten verwijderen
Standaard worden alle assembly's die zijn gemaakt in SQL Server uitgeschakeld. U kunt de clr enabled
optie van de sp_configure
systeem opgeslagen procedure gebruiken om de uitvoering van alle assembly's die zijn geüpload in SQL Server uit te schakelen of in te schakelen. Het uitschakelen van assembly-uitvoering voorkomt common Language Runtime-functies (CLR), opgeslagen procedures, triggers, aggregaties en door de gebruiker gedefinieerde typen worden uitgevoerd en stopt alle typen die momenteel worden uitgevoerd. Als u assembly-uitvoering uitschakelt, wordt de mogelijkheid om assembly's te maken, te wijzigen of te verwijderen niet uitgeschakeld. Zie Serverconfiguratie: clr enabledvoor meer informatie.
Zie sp_configurevoor meer informatie.
Assemblyversies beheren
Wanneer een assembly wordt geüpload naar een SQL Server-exemplaar, wordt de assembly opgeslagen en beheerd in de databasesysteemcatalogussen. Wijzigingen in de definitie van de assembly in .NET Framework moeten worden doorgegeven aan de assembly die is opgeslagen in de databasecatalogus.
Wanneer u een assembly moet wijzigen, moet u een ALTER ASSEMBLY
instructie geven om de assembly in de database bij te werken. Met deze instructie wordt de assembly bijgewerkt naar de nieuwste kopie van .NET Framework-modules met de implementatie.
De WITH UNCHECKED DATA
-component van de ALTER ASSEMBLY
-instructie geeft SQL Server opdracht om zelfs die assembly's te vernieuwen waarop persistente gegevens in de database afhankelijk zijn. U moet met name WITH UNCHECKED DATA
opgeven als er een van de volgende bestaat:
Permanente berekende kolommen die verwijzen naar methoden in de assembly, direct of indirect, via Transact-SQL functies of methoden.
Kolommen van een door de gebruiker gedefinieerd clr-type die afhankelijk zijn van de assembly en het type implementeert een
UserDefined
(niet-Native
) serialisatie-indeling.
Voorzichtigheid
Als WITH UNCHECKED DATA
niet is opgegeven, probeert SQL Server te voorkomen dat ALTER ASSEMBLY
wordt uitgevoerd als de nieuwe assemblyversie van invloed is op bestaande gegevens in tabellen, indexen of andere permanente sites. SQL Server garandeert echter niet dat berekende kolommen, indexen, geïndexeerde weergaven of expressies consistent zijn met de onderliggende routines en typen wanneer de CLR-assembly wordt bijgewerkt. Wees voorzichtig wanneer u ALTER ASSEMBLY
uitvoert om ervoor te zorgen dat het resultaat van een expressie en een waarde die is gebaseerd op die expressie die is opgeslagen in de assembly niet overeenkomen.
Alleen leden van de db_owner- en db_ddlowner vaste databaserol kunnen ALTER ASSEMBLY
uitvoeren met behulp van de WITH UNCHECKED DATA
-component.
SQL Server plaatst een bericht in het windows-toepassingsgebeurtenislogboek dat de assembly is gewijzigd met niet-gecontroleerd gegevens in de tabellen. SQL Server markeert vervolgens tabellen die gegevens bevatten die afhankelijk zijn van de assembly, omdat ze geen controle hebben. De has_unchecked_assembly_data
kolom van de sys.tables
catalogusweergave bevat de waarde 1
voor tabellen die niet-gecontroleerd gegevens bevatten en 0
voor tabellen zonder uitgeschakelde gegevens.
Als u de integriteit van niet-gecontroleerd gegevens wilt oplossen, voert u DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS
uit voor elke tabel met niet-gecontroleerd gegevens. Als DBCC CHECKDB WITH EXTENDED_LOGICAL_CHECKS
mislukt, moet u de tabelrijen verwijderen die niet geldig zijn of de assemblycode wijzigen om problemen op te lossen en vervolgens meer ALTER ASSEMBLY
instructies uitgeven.
ALTER ASSEMBLY
wijzigt de assemblyversie. De cultuur en het openbare-sleuteltoken van de assembly blijven hetzelfde. SQL Server staat het registreren van verschillende versies van een assembly met dezelfde naam, cultuur en openbare sleutel niet toe.
Interacties met computerbreed beleid voor versiebinding
Als verwijzingen naar assembly's die zijn opgeslagen in SQL Server worden omgeleid naar specifieke versies met behulp van uitgeversbeleid of computerbreed administratorbeleid, moet u een van de volgende acties uitvoeren:
Zorg ervoor dat de nieuwe versie waarnaar deze omleiding wordt gemaakt zich in de database bevindt.
Wijzig eventuele instructies in de externe beleidsbestanden van het computer- of uitgeversbeleid om ervoor te zorgen dat ze verwijzen naar de specifieke versie die zich in de database bevindt.
Anders mislukt een poging om een nieuwe assemblyversie te laden naar het exemplaar van SQL Server.
Zie ALTER ASSEMBLY-voor meer informatie.