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