Delen via


Een database bijwerken met loskoppelen en koppelen (Transact-SQL)

van toepassing op:SQL Server-

In dit onderwerp wordt beschreven hoe u loskoppelen en koppelen van bewerkingen gebruikt om een database in SQL Server bij te werken. Nadat deze is gekoppeld aan SQL Server, is de database onmiddellijk beschikbaar en wordt deze automatisch bijgewerkt. Hiermee voorkomt u dat de database wordt gebruikt met een oudere versie van de database-engine. Het upgraden van metagegevens heeft echter geen invloed op het databasecompatibiliteitsniveau instelling van een database. Zie meer informatie in databasecompatibiliteitsniveau na de upgrade verderop in dit onderwerp.

In dit onderwerp

Voordat u begint

Beperkingen en beperkingen

  • De systeemdatabases kunnen niet worden gekoppeld.

  • Koppel en ontkoppel het uitschakelen van eigendomsketens tussen databases door de optie voor eigendomsketen tussen databases op 0 in te stellen. Zie cross db ownership chaining Server Configuration Optionvoor meer informatie over het inschakelen van ketening.

  • Wanneer u een gerepliceerde database koppelt die is gekopieerd in plaats van losgekoppeld:

    • Als u de database koppelt aan een bijgewerkte versie van hetzelfde serverexemplaar, moet u sp_vupgrade_replication uitvoeren om de replicatie bij te werken nadat de koppelbewerking is voltooid. Zie sp_vupgrade_replication (Transact-SQL)voor meer informatie.

    • Als u de database aan een ander serverexemplaar koppelt (ongeacht de versie), moet u sp_removedbreplication uitvoeren om de replicatie te verwijderen nadat de koppelingsbewerking is voltooid. Voor meer informatie, zie sp_removedbreplication (Transact-SQL).

Aanbevelingen

U wordt aangeraden geen databases te koppelen of te herstellen uit onbekende of niet-vertrouwde bronnen. Dergelijke databases kunnen schadelijke code bevatten die onbedoelde Transact-SQL code kan uitvoeren of fouten kan veroorzaken door het schema of de structuur van de fysieke database te wijzigen. Voordat u een database van een onbekende of niet-vertrouwde bron gebruikt, voert u DBCC CHECKDB- uit op de database op een niet-productieserver en onderzoekt u ook de code, zoals opgeslagen procedures of andere door de gebruiker gedefinieerde code, in de database.

Een database bijwerken met behulp van loskoppelen en koppelen

  1. De database loskoppelen. Zie Een database loskoppelenvoor meer informatie.

  2. U kunt eventueel het losgekoppelde databasebestand of de bestanden en het logboekbestand of de logboekbestanden verplaatsen.

    U moet de logboekbestanden samen met de gegevensbestanden verplaatsen, zelfs als u nieuwe logboekbestanden wilt maken. In sommige gevallen vereist het opnieuw koppelen van een database de bestaande logboekbestanden. Bewaar daarom altijd alle losgekoppelde logboekbestanden totdat de database succesvol is aangehecht zonder hen.

    Notitie

    Als u de database probeert bij te voegen zonder het logboekbestand op te geven, zoekt de bijlagebewerking naar het logboekbestand op de oorspronkelijke locatie. Als de oorspronkelijke kopie van het logboek nog steeds op die locatie bestaat, wordt die kopie bijgevoegd. Als u het oorspronkelijke logboekbestand niet wilt gebruiken, geeft u het pad van het nieuwe logboekbestand op of verwijdert u de oorspronkelijke kopie van het logboekbestand (nadat u het naar de nieuwe locatie hebt gekopieerd).

  3. Voeg de gekopieerde bestanden toe aan het exemplaar van SQL Server. Zie Een database koppelenvoor meer informatie.

Voorbeeld

In het volgende voorbeeld wordt een kopie van een database bijgewerkt van een eerdere versie van SQL Server. De Transact-SQL-instructies worden uitgevoerd in een queryeditorvenster dat verbonden is met de serverinstantie waar het aan is gekoppeld.

  1. Koppel de database los door de volgende Transact-SQL instructies uit te voeren:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'MyDatabase';  
    GO  
    
  2. Kopieer met behulp van de gewenste methode de gegevens en logboekbestanden naar de nieuwe locatie.

    Belangrijk

    Voor een productiedatabase plaatst u bij voorkeur de database en het transactielogboek op afzonderlijke schijven. Deze stimuleren verschillende I/O- en bestandsgroeivereisten en het wordt beschouwd als een best practice om ze gescheiden te houden.

    Als u bestanden via het netwerk naar een schijf op een externe computer wilt kopiëren, gebruikt u de UNC-naam (Universal Naming Convention) van de externe locatie. Een UNC-naam heeft de vorm \\Servername\Sharename\Path\Filename. Net als bij het schrijven van bestanden naar de lokale harde schijf, moeten de juiste machtigingen worden verleend voor het lezen of schrijven naar een bestand op de externe schijf aan het gebruikersaccount dat wordt gebruikt door het exemplaar van SQL Server.

  3. Koppel de verplaatste database en eventueel het logboek door de volgende Transact-SQL-instructie uit te voeren:

    USE master;  
    GO  
    CREATE DATABASE MyDatabase   
        ON (FILENAME = 'C:\MySQLServer\MyDatabase.mdf'),  
        (FILENAME = 'C:\MySQLServer\Database.ldf')  
        FOR ATTACH;  
    GO  
    

    In SQL Server Management Studio is een zojuist gekoppelde database niet direct zichtbaar in Objectverkenner. Als u de database wilt weergeven, klikt u in Objectverkenner op Weergave, en vervolgens Vernieuwen. Wanneer het knooppunt Databases is uitgevouwen in Object Explorer, wordt de nieuw gekoppelde database nu weergegeven in de lijst met databases.

Opvolgen: Na het upgraden van een SQL Server-database

Als de database indexen in volledige tekst bevat, importeert, herstelt of herbouwt het upgradeproces deze, afhankelijk van de instelling van de eigenschap upgrade_option server. Als de upgradeoptie is ingesteld op importeren (upgrade_option = 2) of opnieuw opbouwen (upgrade_option = 0), zijn de indexen in volledige tekst niet beschikbaar tijdens de upgrade. Afhankelijk van de hoeveelheid gegevens die wordt geïndexeerd, kan het importeren enkele uren duren en kan het opnieuw samenstellen tot tien keer langer duren. Houd er ook rekening mee dat wanneer de upgradeoptie is ingesteld op importeren, de bijbehorende indexen voor volledige tekst opnieuw worden opgebouwd als er geen volledige tekstcatalogus beschikbaar is. Als u de instelling van de eigenschap upgrade_option server wilt wijzigen, gebruikt u sp_fulltext_service.

Databasecompatibiliteitsniveau na de upgrade

Na de upgrade blijft het compatibiliteitsniveau van de database vóór de upgrade op het compatibiliteitsniveau, tenzij het vorige compatibiliteitsniveau niet wordt ondersteund voor de nieuwe versie. In dit geval is het bijgewerkte databasecompatibiliteitsniveau ingesteld op het laagste ondersteunde compatibiliteitsniveau.

Als u bijvoorbeeld een database koppelt die compatibiliteitsniveau 90 was voordat u deze koppelt aan een exemplaar van SQL Server 2019 (15.x), is het compatibiliteitsniveau na de upgrade ingesteld op 100, het laagste ondersteunde compatibiliteitsniveau in SQL Server 2019 (15.x). Zie ALTER DATABASE Compatibility Level (Transact-SQL)voor meer informatie.

Metagegevens beheren op het geüpgradede serverexemplaar

Wanneer u een database aan een ander serverexemplaren koppelt om gebruikers en toepassingen een consistente ervaring te bieden, moet u mogelijk enkele of alle metagegevens voor de database opnieuw maken, zoals aanmeldingen, taken en machtigingen op het andere serverexemplaren. Zie Metagegevens beheren wanneer een database beschikbaar wordt gemaakt op een ander serverexemplaar (SQL Server)voor meer informatie.

Wijzigingen in de versleuteling van servicehoofdsleutels en databasehoofdsleutels van 3DES in AES

SQL Server 2012 (11.x) en hogere versies maakt gebruik van het AES-versleutelingsalgoritmen om de servicehoofdsleutel (SMK) en de databasehoofdsleutel (DMK) te beveiligen. AES is een nieuwere versleutelingsalgoritmen dan 3DES die in eerdere versies worden gebruikt. Wanneer een database voor het eerst aan een nieuw exemplaar van SQL Server is gekoppeld of hersteld, wordt er nog geen kopie van de hoofdsleutel van de database (versleuteld door de servicehoofdsleutel) opgeslagen op de server. U moet de OPEN MASTER KEY-instructie gebruiken om de databasehoofdsleutel (DMK) te ontsleutelen. Zodra de DMK is ontsleuteld, kunt u in de toekomst automatische ontsleuteling inschakelen met behulp van de ALTER MASTER KEY REGENERATE-instructie om de server in te richten met een kopie van de DMK, versleuteld met de servicehoofdsleutel (SMK). Wanneer een database is bijgewerkt vanaf een eerdere versie, moet de DMK opnieuw worden gegenereerd om het nieuwere AES-algoritme te gebruiken. Zie ALTER MASTER KEY (Transact-SQL)voor meer informatie over het regenereren van de DMK. De tijd die nodig is om de DMK-sleutel opnieuw te genereren om een upgrade naar AES uit te voeren, is afhankelijk van het aantal objecten dat wordt beveiligd door de DMK. Het opnieuw genereren van de DMK-sleutel om een upgrade naar AES uit te voeren, is slechts eenmaal nodig en heeft geen invloed op toekomstige regeneraties als onderdeel van een sleutelrotatiestrategie.