web-dev-qa-db-fra.com

Déplacer les fichiers de base de données SQL Server 2008 vers un nouvel emplacement de dossier

Nom logique

  • my_Data
  • my_Log

Chemin:

  • C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA
  • C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA

Nom de fichier:

  • my.MDF
  • my_1.LDF

Quel serait le script SQL pour déplacer ces fichiers vers un nouvel emplacement: D:\DATA

La base de données est en ligne, je dois donc fermer les connexions existantes.

49
FiveTools

Vous avez oublié de mentionner le nom de votre base de données (est-ce "mon"?).

ALTER DATABASE my SET SINGLE_USER WITH ROLLBACK IMMEDIATE;

ALTER DATABASE my SET OFFLINE;

ALTER DATABASE my MODIFY FILE 
(
   Name = my_Data,
   Filename = 'D:\DATA\my.MDF'
);

ALTER DATABASE my MODIFY FILE 
(
   Name = my_Log, 
   Filename = 'D:\DATA\my_1.LDF'
);

Maintenant, ici, vous devez déplacer manuellement les fichiers de leur emplacement actuel vers D:\Data\(et n'oubliez pas de les renommer manuellement si vous les avez modifiés à l'aide de la commande MODIFY FILE) ... vous pouvez alors remettre la base de données en ligne:

ALTER DATABASE my SET ONLINE;

ALTER DATABASE my SET MULTI_USER;

Cela suppose que le compte de service SQL Server dispose de privilèges suffisants sur le dossier D:\Data \. Sinon, vous recevrez des erreurs lors de la commande SET ONLINE.

85
Aaron Bertrand

Vous pouvez utiliser l'option Détacher/Attacher dans SQL Server Management Studio.

Vérifiez ceci: Déplacer une base de données en utilisant Détacher et attacher

18
Marco Hurtado

Pour ajouter les privilèges nécessaires aux fichiers, ajoutez et accordez les droits à l'utilisateur local suivant: SQLServerMSSQLUser $ COMPUTERNAME $ INSTANCENAME, oùNOM_ORDINATEURetNOM_INSTANCEdoit être remplacé par nom d'ordinateur et MSSQL exemple, respectivement. 

6
Lasse S. Jensen

Quelques notes pour compléter le processus ALTER DATABASE:

1) Vous pouvez obtenir une liste complète des bases de données avec les noms logiques et les chemins complets des fichiers MDF et LDF:

   USE master SELECT name, physical_name FROM sys.master_files

2) Vous pouvez déplacer manuellement les fichiers avec la commande de déplacement CMD:

Déplacer "Source" "Destination"

Exemple:

md "D:\MSSQLData"
Move "C:\test\SYSADMIT-DB.mdf" "D:\MSSQLData\SYSADMIT-DB_Data.mdf"
Move "C:\test\SYSADMIT-DB_log.ldf" "D:\MSSQLData\SYSADMIT-DB_log.ldf"

3) Vous devez modifier le chemin de base de données par défaut pour la création de nouvelles bases de données. Le chemin par défaut est obtenu à partir du registre Windows.

Vous pouvez également modifier avec T-SQL, par exemple, pour définir la destination par défaut sur: D:\MSSQLData

USE [master]

GO

EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', REG_SZ, N'D:\MSSQLData'

GO

EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultLog', REG_SZ, N'D:\MSSQLData'

GO

Extrait de: http://www.sysadmit.com/2016/08/mover-base-de-datos-server-a-otro-disco.html

0
Bull Fulbright

Il s'agit d'une procédure complète pour transférer la base de données et les connexions d'une station à une autre, en scriptant les connexions et en déplaçant les fichiers de données et les fichiers journaux sur la destination. Tout en utilisant des métascripts.

http://zaboilab.com/sql-server-toolbox/massive-database-migration-between-sql-server-instances-the-complete-procedure

Désolé pour la procédure hors site mais les scripts sont très longs. Vous devez:
- Connexions de script avec SID d'origine et mot de passe HASHED
- Créer un script pour sauvegarder la base de données en utilisant des métascripts
- Créer un script pour restaurer la base de données en passant les paramètres de relocalisation en utilisant à nouveau les métascripts
- Exécutez les scripts générés sur les instances source et cible.
Voir les détails et télécharger les scripts en suivant le lien ci-dessus.

0
Paolo