Dela via


Bifoga en databas

gäller för:SQL Server

Den här artikeln beskriver hur du kopplar en databas i SQL Server med SQL Server Management Studio eller Transact-SQL. Du kan använda den här funktionen för att kopiera, flytta eller uppgradera en SQL Server-databas.

Begränsningar och restriktioner

För en lista över begränsningar och restriktioner, se Database Detach and Attach (SQL Server).

Förutsättningar

Granska alla följande förutsättningar innan du fortsätter:

  • Om du flyttar en databas från en instans till en annan måste databasen först kopplas från alla befintliga SQL-instanser. Om du försöker bifoga en databas som inte har kopplats bort kommer ett fel att returneras. Mer information finns i Koppla från en databas.

  • När du bifogar en databas måste alla datafiler för databasen vara tillgängliga. Dessa filer har ofta tillägg .mdf eller .ndf (för datafiler) och .ldf (för transaktionsloggfiler). Dessutom måste alla filgrupper för FILESTREAM-data finnas och vara tillgängliga. Mer information om hur du bifogar en FILESTREAM-aktiverad databas finns i Flytta en FILESTREAM-Enabled Databas.

  • Om en datafil har en annan sökväg än när databasen först skapades eller senast kopplades, måste du ange filens aktuella sökväg.

  • Databasmotorns tjänstkonto måste ha behörighet att läsa filerna på den nya platsen.

  • Om MDF- och LDF-filer finns i olika kataloger och en av sökvägarna innehåller \\?\GlobalRootmisslyckas åtgärden när du kopplar en databas.

Är Bifoga det bästa valet?

Vi rekommenderar att du, när du flyttar databasfiler inom samma instans, använder den ALTER DATABASE planerade omlokaliseringsproceduren istället för att koppla från och koppla till. Mer information finns i Flytta användardatabaser.

Vi rekommenderar inte att du kopplar från och ansluter för säkerhetskopiering och återställning. Det finns inga säkerhetskopior av transaktionsloggar eller möjlighet till återställning till en specifik tidpunkt tillgängliga när man kopplar bort filer som ska säkerhetskopieras externt från SQL Server.

Säkerhet

Behörigheter för filåtkomst anges under många databasåtgärder, inklusive när en databas kopplas från och återansluts. När en databas kopplas från eller ansluts försöker Database Engine efterlikna Windows-kontot för anslutningen som utför åtgärden för att garantera att kontot har behörighet att komma åt databasen och loggfilerna. För blandade säkerhetskonton som använder SQL Server-inloggningar kan personifieringen misslyckas.

I följande tabell visas de behörigheter som angetts för databasen och loggfilerna efter att en bifogad eller frånkopplad åtgärd har slutförts och om det anslutande kontot kan personifieras av databasmotorn.

Operation Anslutande konto kan efterliknas Filbehörigheter tilldelas till
Lösgöra Ja Endast kontot som utför åtgärden. Ytterligare konton kan läggas till av en operativsystemadministratör om de behövs när databasen har kopplats från.
Lösgöra Nej SQL Server-tjänstkontot (MSSQLSERVER) och medlemmar i den lokala gruppen Windows-administratörer.
Bifoga Ja SQL Server-tjänstkontot (MSSQLSERVER) och medlemmar i den lokala gruppen Windows-administratörer.
Bifoga Nej Tjänstekontot för SQL Server (MSSQLSERVER).

Mer information om filsystembehörigheter som beviljats till tjänst-SID:erna för SQL Server-tjänsten finns i Konfigurera filsystembehörigheter för databasmotoråtkomst.

Försiktighet

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. Mer information om hur du kopplar databaser och information om ändringar som görs i metadata när du bifogar en databas finns i Database Detach and Attach (SQL Server).

Behörigheter

Kräver behörigheten CREATE DATABASE, CREATE ANY DATABASEeller ALTER ANY DATABASE.

Använda SQL Server Management Studio (SSMS)

Innan du flyttar en databas

Om du flyttar en databas, innan du kopplar bort den från den befintliga SQL Server-instansen, använder du sidan för databasegenskaper för att granska filerna som är associerade med databasen och deras aktuella platser.

  1. I SQL Server Management Studio Object Explorer ansluter du till instansen av SQL Server Database Engine och expanderar sedan instansen.

  2. Expandera Databaseroch välj namnet på den användardatabas som du vill koppla från.

  3. Högerklicka på databasnamnet och välj Egenskaper. Välj sidan Filer och granska posterna i tabell över databasfiler:.

Var noga med att ta hänsyn till alla filer som är associerade med databasen innan du kopplar från, flyttar och bifogar. Fortsätt sedan med stegen frånkoppling, filkopiering och bifoga databas i nästa avsnitt. Mer information finns i Koppla från en databas.

Bifoga en databas

  1. I SQL Server Management Studio Object Exploreransluter du till en instans av SQL Server Database Engine och väljer sedan att expandera instansvyn i SSMS.

  2. Högerklicka på Databaser och välj Bifoga.

  3. I dialogrutan Bifoga databaser väljer du Lägg tillför att ange vilken databas som ska kopplas. I dialogrutan Leta upp databasfiler väljer du platsen där databasen finns och expanderar katalogträdet för att hitta och välja databasens .mdf fil. till exempel:

    C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_Data.mdf

    Viktig

    Om du försöker välja en databas som redan är ansluten genereras ett fel.

    databaser som ska kopplas
    Visar information om de valda databaserna.

    <ingen kolumnrubrik>
    Visar en ikon som anger status för bifogningsåtgärden. Möjliga ikoner beskrivs i beskrivningen Status.

    Plats för MDF-fil
    Visar sökvägen och filnamnet för den valda MDF-filen.

    Databasnamn
    Visar namnet på databasen.

    Bifoga som
    Du kan också ange ett annat namn för databasen som ska bifogas som.

    ägare
    Innehåller en listruta med möjliga databasägare som du kan välja en annan ägare från.

    status
    Visar databasens status enligt följande tabell:

    Ikon Statustext Beskrivning
    (Ingen ikon) (Ingen text) Kopplingsåtgärden har inte startats, eller kan vänta för det här objektet. Detta är standardvärdet när dialogrutan öppnas.
    Grön, högerriktad triangel Pågår Kopplingsåtgärden har startats men den är inte slutförd.
    Grön bockmarkering Framgång Objektet har kopplats framgångsrikt.
    Röd cirkel som innehåller ett vitt kors Fel Åtgärden för att koppla stötte på ett fel och slutfördes inte framgångsrikt.
    Cirkel som innehåller två svarta kvadranter (till vänster och höger) och två vita kvadranter (överst och nederkant) Stoppat Det gick inte att slutföra åtgärden eftersom du stoppade åtgärden.
    Cirkel som innehåller en böjd pil som pekar motsols Rullad tillbaka Anslutningsåtgärden lyckades, men den har rullats tillbaka på grund av ett fel vid anslutningen av ett annat objekt.

    Meddelande
    Visar antingen ett tomt meddelande eller hyperlänken "Filen hittades inte".

    Lägg till
    Hitta nödvändiga huvuddatabasfiler. När du väljer en .mdf fil fylls tillämplig information automatiskt i de relevanta fälten i -databaserna att fästa i-rutnätet.

    Ta bort
    Tar bort den valda filen från -databasen för att bifoga till-rutnätet.

    <database_name>databasdetaljer
    Visar namnen på de filer som ska bifogas. Om du vill verifiera eller ändra sökvägen till en fil väljer du knappen Bläddra (...).

    Obs

    Om det inte finns någon fil visas kolumnen Message "Hittades inte". Om en loggfil inte hittas finns den i en annan katalog eller har tagits bort. Du måste uppdatera filsökvägen i -databasdetaljer-rutnätet för att peka på rätt plats eller ta bort loggfilen från rutnätet. Om en .ndf-datafil inte hittas måste du uppdatera sökvägen i rutnätet så att den pekar på rätt plats.

    ursprungligt filnamn
    Visar namnet på den bifogade filen som tillhör databasen.

    filtyp
    Anger filtypen, Data eller Log.

    aktuell filsökväg
    Visar sökvägen till den valda databasfilen. Sökvägen kan redigeras manuellt.

    Meddelande
    Visar antingen ett tomt meddelande eller en hyperlänkFilen hittades inte.

Använd Transact-SQL

Innan du flyttar en databas

Om du flyttar en databas, innan den kopplas från den befintliga SQL Server-instansen, använder du sys.database_files-systemkatalogvyn för att granska filerna som är associerade med databasen och deras aktuella platser. Mer information finns i sys.database_files (Transact-SQL).

  1. I SQL Server Management Studio väljer du Ny fråga för att öppna frågeredigeraren.

  2. Kopiera följande Transact-SQL skript till frågeredigeraren och välj sedan Kör. Det här skriptet visar platsen för de fysiska databasfilerna. Säkerställ att alla filer tas med i beräkningen när du flyttar databasen via koppla från/koppla till.

    USE [database_name] 
    GO  
    SELECT type_desc, name, physical_name from sys.database_files;
    

Var noga med att ta hänsyn till alla filer som är associerade med databasen innan du kopplar från, flyttar och bifogar. Fortsätt sedan med stegen frånkoppling, filkopiering och bifoga databas i nästa avsnitt. Mer information finns i Koppla från en databas.

Så här kopplar du en databas

  1. Anslut till databasmotorn.

  2. I standardfältet väljer du Ny fråga.

  3. Använd kommandot CREATE DATABASE med FOR ATTACH-satsen.

    Kopiera och klistra in följande exempel i frågefönstret och välj Kör. Det här exemplet bifogar alla filer i databasen AdventureWorks2022 och byter namn på databasen till MyAdventureWorks.

    CREATE DATABASE MyAdventureWorks   
        ON (FILENAME = 'C:\MySQLServer\AdventureWorks_Data.mdf'),   
        (FILENAME = 'C:\MySQLServer\AdventureWorks_Log.ldf')   
        FOR ATTACH;  
    

    Databasen kan ha ytterligare datafiler (vanligtvis .mdf eller .ndf) och kräva att ytterligare filer inkluderas i CREATE DATABASE ... FOR ATTACH-instruktionen. Dessutom måste alla filgrupper för FILESTREAM-data också ingå i -instruktionen. Mer information om hur du kopplar en FILESTREAM-aktiverad databas finns i Flytta en FILESTREAM-Enabled Database.

    Not

    Du kan också använda den lagrade proceduren sp_attach_db eller sp_attach_single_file_db. Dessa procedurer tas dock bort i en framtida version av Microsoft SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Vi rekommenderar att du använder CREATE DATABASE ... FOR ATTACH i stället.

När du har uppgraderat en SQL Server-databas

Databaskompatibilitetsnivå

När du har uppgraderat en databas med hjälp av metoden attach blir databasen tillgänglig. Databasen uppgraderas automatiskt till den interna versionsnivån för den nya instansen. Om databasen har fulltextindex importerar, återinitierar eller återskapar uppgraderingsprocessen dem, beroende på inställningen av serveregenskapen Full-Text uppgraderingsalternativ. Om uppgraderingsalternativet är inställt på Importera eller Återskapaä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 10 gånger längre tid. Observera också att när uppgraderingsalternativet är inställt på Importera, om en fulltextkatalog inte är tillgänglig återskapas de associerade fulltextindexen.

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).

Dataändringshantering (CDC)

Om du kopplar en databas från en instans av SQL Server 2014 (12.x) eller tidigare, där CDC (Change Data Capture) har aktiverats, måste du köra följande kommando för att uppgradera CDC-metadata (Change Data Capture):

USE <database name>
EXEC sys.sp_cdc_vupgrade  

Mer information finns i fel när du kopplar en CDC-aktiverad databas till en instans av SQL Server 2016 eller SQL Server 2017 på Windows.

Se även

Nästa steg