Dela via


Uppgradera en databas med koppla från och koppla till (Transact-SQL)

gäller för:SQL Server

Det här avsnittet beskriver hur du använder koppla från och koppla till operationer för att uppgradera en databas i SQL Server. När databasen har anslutits till SQL Server är den tillgänglig omedelbart och uppgraderas automatiskt. Detta förhindrar att databasen används med en äldre version av databasmotorn. Metadatauppgradering påverkar dock inte databaskompatibilitetsnivå inställning för en databas. Mer information finns i databaskompatibilitetsnivå efter uppgradering senare i det här avsnittet.

I det här avsnittet

Innan du börjar

Begränsningar och restriktioner

  • Systemdatabaserna kan inte kopplas.

  • Inaktivera och aktivera ägarskapkedja mellan databaser för databasen genom att ställa in dess korsdatabasägarskapskedja alternativ till 0. För information om hur du aktiverar länkning, se ägarskapslänkning mellan databaser, Serverkonfigurationsalternativ.

  • När du kopplar en replikerad databas som kopierades i stället för frånkopplad:

    • Om du kopplar databasen till en uppgraderad version av samma serverinstans måste du köra sp_vupgrade_replication för att uppgradera replikeringen när anslutningen har slutförts. Mer information finns i sp_vupgrade_replication (Transact-SQL).

    • Om du kopplar databasen till en annan serverinstans (oavsett version) måste du köra sp_removedbreplication för att ta bort replikeringen när anslutningsåtgärden har slutförts. Mer information finns i sp_removedbreplication (Transact-SQL).

Rekommendationer

Vi rekommenderar att du inte kopplar eller återställer databaser från okända eller ej betrodda källor. Sådana databaser kan innehålla skadlig kod som kan köra oavsiktlig Transact-SQL kod eller orsaka fel genom att ändra schemat eller den fysiska databasstrukturen. Innan du använder en databas från en okänd eller obetrodd källa kör du DBCC CHECKDB- på databasen på en icke-produktionsserver och undersöker även koden, till exempel lagrade procedurer eller annan användardefinierad kod, i databasen.

Så här uppgraderar du en databas genom att koppla från och ansluta

  1. Koppla från databasen. Mer information finns i Koppla från en databas.

  2. Du kan också flytta den fristående databasfilen eller filerna och loggfilen eller filerna.

    Du bör flytta loggfilerna tillsammans med datafilerna, även om du tänker skapa nya loggfiler. I vissa fall kräver att återansluta en databas dess befintliga loggfiler. Behåll därför alltid alla frånkopplade loggfiler tills databasen har kopplats utan dem.

    Not

    Om du försöker koppla databasen utan att ange loggfilen letar bifoga-åtgärden efter loggfilen på dess ursprungliga plats. Om den ursprungliga kopian av loggen fortfarande finns på den platsen bifogas kopian. Om du vill undvika att använda den ursprungliga loggfilen anger du antingen sökvägen till den nya loggfilen eller tar bort den ursprungliga kopian av loggfilen (när du har kopierat den till den nya platsen).

  3. Bifoga de kopierade filerna till instansen av SQL Server. Mer information finns i Bifoga en databas.

Exempel

I följande exempel uppgraderas en kopia av en databas från en tidigare version av SQL Server. De Transact-SQL-uttrycken körs i ett frågeredigerarefönster som är anslutet till den serverinstans som är kopplad till.

  1. Koppla från databasen genom att köra följande Transact-SQL-instruktioner:

    USE master;  
    GO  
    EXEC sp_detach_db @dbname = N'MyDatabase';  
    GO  
    
  2. Med valfri metod kopierar du data och loggfiler till den nya platsen.

    Viktig

    För en produktionsdatabas bör du helst placera databasen och transaktionsloggen på separata diskar. Dessa styr olika I/O- och filtillväxtkrav och det anses vara en bra idé att hålla dem åtskilda.

    Om du vill kopiera filer över nätverket till en disk på en fjärrdator använder du UNC-namnet (Universal Naming Convention) för fjärrplatsen. Ett UNC-namn har formen \\Servername\Sharename\Path\Filename. Precis som när du skriver filer till den lokala hårddisken måste de behörigheter som krävs för att läsa eller skriva till en fil på fjärrdisken beviljas det användarkonto som används av instansen av SQL Server.

  3. Bifoga den flyttade databasen och eventuellt dess logg genom att köra följande Transact-SQL-instruktion:

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

    I SQL Server Management Studio visas inte en nyligen ansluten databas direkt i Object Explorer. Om du vill visa databasen klickar du på View i Object Explorer, och sedan Uppdatera. När noden Databaser expanderas i Object Explorer visas nu den nyligen anslutna databasen i listan över databaser.

Följ upp: När du har uppgraderat en SQL Server-databas

Om databasen har fulltextindex antingen importerar, återställer, eller återskapar uppgraderingsprocessen dem, beroende på inställningen för egenskapen upgrade_option server. Om uppgraderingsalternativet är inställt på att importera (upgrade_option = 2) eller återskapa (upgrade_option = 0) är fulltextindexen inte tillgängliga under uppgraderingen. Beroende på hur mycket data som indexeras kan det ta flera timmar att importera, och återskapande kan ta upp till tio gånger längre tid. Observera också att när uppgraderingsalternativet är inställt på import återskapas de associerade fulltextindexen om en fulltextkatalog inte är tillgänglig. Om du vill ändra inställningen för egenskapen upgrade_option server använder du sp_fulltext_service.

Databaskompatibilitetsnivå efter uppgradering

Efter uppgraderingen ligger databaskompatibilitetsnivån kvar på kompatibilitetsnivån före uppgraderingen, såvida inte den tidigare kompatibilitetsnivån inte stöds på den nya versionen. I det här fallet är den uppgraderade databaskompatibilitetsnivån inställd på den lägsta kompatibilitetsnivån som stöds.

Om du till exempel kopplar en databas som var kompatibilitetsnivå 90 innan du kopplar den till en instans av SQL Server 2019 (15.x) efter uppgraderingen är kompatibilitetsnivån inställd på 100, vilket är den lägsta kompatibilitetsnivån som stöds i SQL Server 2019 (15.x). Mer information finns i ALTER DATABASE Compatibility Level (Transact-SQL).

Hantera metadata på den uppgraderade serverinstansen

När du kopplar en databas till en annan serverinstans kan du behöva återskapa vissa eller alla metadata för databasen, till exempel inloggningar, jobb och behörigheter, på den andra serverinstansen för att ge användarna och programmen en enhetlig upplevelse. Mer information finns i Hantera metadata när du gör en databas tillgänglig på en annan serverinstans (SQL Server).

Tjänstens huvudnyckel och databashuvudnyckelkryptering ändras från 3DES till AES

SQL Server 2012 (11.x) och högre versioner använder AES-krypteringsalgoritmen för att skydda tjänstens huvudnyckel (SMK) och databasens huvudnyckel (DMK). AES är en nyare krypteringsalgoritm än 3DES som används i tidigare versioner. När en databas först ansluts eller återställs till en ny instans av SQL Server lagras ännu inte en kopia av databashuvudnyckeln (krypterad av tjänstens huvudnyckel) på servern. Du måste använda OPEN MASTER KEY-instruktionen för att dekryptera databashuvudnyckeln (DMK). När DMK har dekrypterats kan du aktivera automatisk dekryptering i framtiden med hjälp av ALTER MASTER KEY REGENERATE-instruktionen för att etablera servern med en kopia av DMK,krypterad med tjänstens huvudnyckel (SMK). När en databas har uppgraderats från en tidigare version bör DMK återskapas för att använda den nyare AES-algoritmen. Mer information om hur du återskapar DMK finns i ALTER MASTER KEY (Transact-SQL). Den tid det tar att återskapa DMK-nyckeln för att uppgradera till AES beror på antalet objekt som skyddas av DMK. Det är bara nödvändigt att återskapa DMK-nyckeln för att uppgradera till AES en gång och har ingen inverkan på framtida regenereringar som en del av en nyckelrotationsstrategi.