sp_detach_db (Transact-SQL)

 

CETTE RUBRIQUE S’APPLIQUE À :ouiSQL Server (à partir de la version 2008)nonAzure SQL DatabasenonAzure SQL Data WarehousenonParallel Data Warehouse

Détache d'une instance de serveur une base de données qui n'est pas en cours d'utilisation, et exécute accessoirement UPDATE STATISTICS sur toutes les tables avant de détacher la base de données.

System_CAPS_ICON_important.jpg Important


Pour détacher une base de données répliquée, celle-ci ne doit pas être publiée. Pour plus d’informations, consultez la section « Remarques » plus loin dans cette rubrique.

Topic link icon Conventions de la syntaxe Transact-SQL

  
sp_detach_db [ @dbname= ] 'database_name'   
    [ , [ @skipchecks= ] 'skipchecks' ]   
    [ , [ @keepfulltextindexfile = ] 'KeepFulltextIndexFile' ]   

[ @dbname = ] 'database_name'
Nom de la base de données à détacher. database_name est un sysname valeur, avec NULL comme valeur par défaut.

[ @skipchecks = ] 'skipchecks'
Indique si UPDATE STATISTIC doit être ignoré ou exécuté. skipchecks est un nvarchar (10) valeur, avec NULL comme valeur par défaut. Pour ignorer UPDATE STATISTICS, spécifiez true. Pour exécuter explicitement UPDATE STATISTICS, spécifiez false.

Par défaut, UPDATE STATISTICS est exécuté pour mettre à jour les informations relatives aux données des tables et des index. L'exécution de UPDATE STATISTICS est utile pour les bases de données qui doivent être placées sur des supports en lecture seule.

[ @keepfulltextindexfile= ] 'KeepFulltextIndexFile»
Spécifie que le fichier d'index de texte intégral associé à la base de données à détacher ne sera pas supprimé pendant l'opération de détachement de la base de données. KeepFulltextIndexFile est un nvarchar (10) valeur par défaut de true. Si KeepFulltextIndexFile est false, tous les fichiers d’index de texte intégral associé à la base de données et les métadonnées de l’index de recherche en texte intégral sont supprimées, sauf si la base de données est en lecture seule. Si NULL ou true, liée au texte intégral métadonnées sont conservées.

System_CAPS_ICON_important.jpg Important


Le@keepfulltextindexfile paramètre sera supprimé dans une future version de SQL Server. Évitez d'utiliser ce paramètre dans de nouveaux travaux de développement, et modifiez dès que possible les applications qui utilisent actuellement ce paramètre.

0 (réussite) ou 1 (échec)

Aucun

Lorsqu'une base de données est détachée, toutes ses métadonnées sont supprimées. Si la base de données a été à la base de données par défaut de tous les comptes de connexion master devient leur base de données par défaut.

System_CAPS_ICON_note.jpg Remarque


Pour plus d’informations sur l’affichage de la base de données par défaut de tous les comptes de connexion, consultez sp_helplogins ( ; Transact-SQL ) ;. Si vous avez les autorisations requises, vous pouvez utiliser ALTER LOGIN pour attribuer une nouvelle base de données par défaut à une connexion.

Impossible de détacher une base de données si une des opérations suivantes est vraie :

  • La base de données est en cours d'utilisation. Pour plus d'informations, consultez « Obtention d'un accès exclusif », plus loin dans cette rubrique.

  • Si la base de données est répliquée, elle est publiée.

    Avant de pouvoir détacher la base de données, vous devez désactiver la publication en exécutant sp_replicationdboption.

    System_CAPS_ICON_note.jpg Remarque


    Si vous ne pouvez pas utiliser sp_replicationdboption, vous pouvez supprimer la réplication en exécutant sp_removedbreplication.

  • Un instantané existe sur la base de données.

    Avant de pouvoir détacher la base de données, vous devez supprimer tous ses instantanés. Pour plus d’informations, consultez Supprimer un instantané de base de données (Transact-SQL).

    System_CAPS_ICON_note.jpg Remarque


    Un instantané de base de données ne peut pas être détaché ni attaché.

  • La base de données fait l'objet d'une mise en miroir.

    La base de données ne peut pas être détachée tant que la session de mise en miroir de la base de données n'a pas été interrompue. Pour plus d’informations, consultez Removing Database Mirroring (SQL Server).

  • La base de données est suspecte.

    Vous devez placer une base de données suspecte en mode urgence avant de pouvoir la détacher. Pour plus d’informations sur la manière de mettre une base de données en mode urgence, consultez ALTER DATABASE (Transact-SQL).

  • La base de données est une base de données système.

Un accès exclusif à la base de données est nécessaire pour procéder au détachement de la base de données. Si la base de données que vous voulez détacher est en cours d'utilisation, avant de procéder à son détachement, passez-la en mode SINGLE_USER pour obtenir un accès exclusif.

Par exemple, les éléments suivants ALTER DATABASE instruction Obtient un accès exclusif à la AdventureWorks2012 une fois que tous les utilisateurs actuels vous déconnecter de la base de données de base de données.

USE master;  
ALTER DATABASE AdventureWorks2012  
SET SINGLE_USER;  
GO  

System_CAPS_ICON_note.jpg Remarque


Pour forcer actuelle aux utilisateurs de la base de données immédiatement ou après un nombre spécifié de secondes, également utilisent l’option ROLLBACK : ALTER DATABASE database_name SET SINGLE_USER WITH ROLLBACK rollback_option. Pour plus d’informations, consultez ALTER DATABASE (Transact-SQL).

Les fichiers détachés restent et peuvent être rattachés à l'aide de CREATE DATABASE (avec l'option FOR ATTACH ou FOR ATTACH_REBUILD_LOG). Vous pouvez les déplacer sur un autre serveur et les y attacher.

Nécessite l’appartenance au sysadmin rôle serveur fixe ou l’appartenance à la db_owner le rôle de la base de données.

L’exemple suivant détache le AdventureWorks2012 avec la base de données skipchecks défini sur true.

EXEC sp_detach_db 'AdventureWorks2012', 'true';  

L'exemple suivant détache la base de données AdventureWorks2012 et conserve les fichiers d'index de texte intégral et les métadonnées de l'index de texte intégral. Cette commande exécute UPDATE STATISTICS, ce qui correspond au comportement par défaut.

exec sp_detach_db @dbname='AdventureWorks2012'  
    , @keepfulltextindexfile='true';  

ALTER DATABASE ( ; Transact-SQL ) ;
Attachement et de détachement de base de données ( ; SQL Server ) ;
CRÉER une base de DONNÉES ( ; SQL Server Transact-SQL ) ;
Détacher une base de données

Ajouts de la communauté

AJOUTER
Afficher: