Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Kopplar bort en databas som för närvarande inte används från en serverinstans och kör UPDATE STATISTICS eventuellt på alla tabeller innan den kopplas bort.
För att en replikerad databas ska kunna kopplas bort måste den vara opublicerad. För mer information, se avsnittet Anmärkningar senare i denna artikel.
Transact-SQL syntaxkonventioner
Syntax
sp_detach_db
[ [ @dbname = ] N'dbname' ]
[ , [ @skipchecks = ] N'skipchecks' ]
[ , [ @keepfulltextindexfile = ] N'keepfulltextindexfile' ]
[ ; ]
Arguments
[ @dbname = ] N'dbname'
Namnet på databasen som ska avkopplas.
@dbname är sysname, med standardvärdet NULL.
[ @skipchecks = ] Inte hoppa över
Specificerar om man ska hoppa över eller köra UPDATE STATISTICS.
@skipchecks är nvarchar(10), med en standard på NULL. För att hoppa UPDATE STATISTICSöver , specificera true. För att explicit köra UPDATE STATISTICS, specificera false.
Som standard UPDATE STATISTICS utförs för att uppdatera information om data i tabeller och index. Prestanda UPDATE STATISTICS är användbart för databaser som ska flyttas till skrivskyddade medier.
[ @keepfulltextindexfile = ] N'keepfulltextindexfile'
Specificerar att fulltextindexfilen som är kopplad till databasen som kopplas bort inte släpps under databasavkopplingsoperationen.
@keepfulltextindexfile är nvarchar(10), med en standard på true.
- Om @keepfulltextindexfile är
false, tas alla fulltextindexfiler som är kopplade till databasen och metadata för fulltextindexet bort, om inte databasen är skrivskyddad. - Om
NULLellertrue, sparas fulltextrelaterad metadata.
Viktigt!
Den här funktionen tas bort i en framtida version av 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.
Returnera kodvärden
0 (lyckades) eller 1 (fel).
Resultatuppsättning
Ingen.
Anmärkningar
När en databas kopplas bort tas all dess metadata bort. Om databasen var standarddatabasen för alla inloggningskonton, master blir den deras standarddatabas.
Anmärkning
För information om hur man ser standarddatabasen för alla inloggningskonton, se sp_helplogins. Om du har nödvändiga behörigheter kan du använda ALTER LOGIN för att tilldela en ny standarddatabas till en inloggning.
Begränsningar
En databas kan inte kopplas bort om något av följande är sant:
Databasen används för närvarande. För mer information, se Få exklusiv tillgång.
Om den replikeras publiceras databasen.
Innan du kan koppla bort databasen måste du inaktivera publicering genom att köra sp_replicationdboption.
Om du inte kan använda
sp_replicationdboption, kan du ta bort replikering genom att köra sp_removedbreplication.En databasögonblicksbild finns på databasen.
Innan du kan koppla bort databasen måste du ta bort alla dess snapshots. För mer information, se Släpp en databas-snapshot.
En databassnapshot kan inte kopplas loss eller bifogas.
Databasen speglas.
Databasen kan inte kopplas bort förrän databasspegelsessionen avslutas. För mer information, se Removal Database Mirroring (SQL Server).
Databasen är misstänkt.
Du måste sätta en misstänkt-databas i nödläge innan du kan koppla bort databasen. För mer information om hur man sätter en databas i nödläge, se ALTER DATABASE.
Databasen är en systemdatabas.
Få exklusiv tillgång
Att koppla bort en databas kräver exklusiv åtkomst till databasen. Om databasen du vill koppla bort är i bruk, innan du kan koppla bort den, ställ in databasen på SINGLE_USER läge för att få exklusiv åtkomst.
Innan du sätter databasen till SINGLE_USER, kontrollera att AUTO_UPDATE_STATISTICS_ASYNC alternativet är inställt på OFF. När detta alternativ är inställt på ON, tar bakgrundstråden som används för att uppdatera statistik en anslutning mot databasen, och du kan inte komma åt databasen i enanvändarläge. Mer information finns i Ange en databas till enanvändarläge.
Till exempel får följande ALTER DATABASE sats exklusiv åtkomst till AdventureWorks2025-databasen efter att alla nuvarande användare kopplat bort sig från databasen.
USE master;
ALTER DATABASE AdventureWorks2022
SET SINGLE_USER;
GO
För att tvinga nuvarande användare ut ur databasen omedelbart eller inom ett angivet antal sekunder kan du också använda alternativet ROLLBACK .
ALTER DATABASE <database_name>
SET SINGLE_USER
WITH ROLLBACK <rollback_option>;
Mer information finns i ALTER DATABASE.
Återanknyt en databas
De fristående filerna finns kvar och kan kopplas till igen genom att använda CREATE DATABASE (med FOR ATTACH alternativet eller FOR ATTACH_REBUILD_LOG ). Filerna kan flyttas till en annan server och bifogas där.
Permissions
Kräver medlemskap i sysadmin-funktionen med fast server eller medlemskap i databasens db_owner-roll .
Examples
Kodexemplen i den här artikeln använder AdventureWorks2025- eller AdventureWorksDW2025-exempeldatabasen, som du kan ladda ned från startsidan Microsoft SQL Server Samples och Community Projects.
Följande exempel frigör databasen AdventureWorks2025 med @skipchecks satt till true.
EXECUTE sp_detach_db 'AdventureWorks2022', 'true';
Följande exempel frigör databasen AdventureWorks2025 och behåller fulltextindexfilerna samt metadata för fulltextindexet. Detta kommando kör UPDATE STATISTICS, vilket är standardbeteendet.
EXECUTE sp_detach_db
@dbname = 'AdventureWorks2022',
@keepfulltextindexfile = 'true';