webentwicklung-frage-antwort-db.com.de

Verschieben Sie die SQL Server 2008-Datenbankdateien in einen neuen Ordner

Logischer Name

  • my_Data
  • my_Log

Pfad:

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

Dateiname:

  • my.MDF
  • my_1.LDF

Was wäre das SQL-Skript zum Verschieben dieser Dateien an einen neuen Speicherort: D:\DATA

Die Datenbank ist live, also müsste ich bestehende Verbindungen schließen.

49
FiveTools

Sie haben vergessen, den Namen Ihrer Datenbank anzugeben (ist es "mein"?).

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'
);

Jetzt müssen Sie die Dateien manuell von ihrem aktuellen Speicherort nach D:\Data\verschieben (und nicht vergessen, sie manuell umzubenennen, wenn Sie sie im Befehl MODIFY FILE geändert haben). Dann können Sie die Datenbank wieder online stellen:

ALTER DATABASE my SET ONLINE;

ALTER DATABASE my SET MULTI_USER;

Dies setzt voraus, dass das SQL Server-Dienstkonto über ausreichende Berechtigungen für den Ordner D:\Data\verfügt. Andernfalls erhalten Sie Fehler beim Befehl SET ONLINE.

85
Aaron Bertrand

Sie können die Option zum Trennen/Anhängen in SQL Server Management Studio verwenden.

Überprüfen Sie dies: Verschieben Sie eine Datenbank mithilfe von Detach und Attach

18
Marco Hurtado

Um die erforderlichen Berechtigungen für die Dateien hinzuzufügen, fügen Sie dem lokalen Benutzer Folgendes hinzu: SQLServerMSSQLUser $ COMPUTERNAME $ INSTANCENAME, wobeiCOMPUTERNAMEundINSTANZNAMEdurch den Namen von Computer und MSSQL ersetzt werden müssen jeweils. 

6
Lasse S. Jensen

Einige Anmerkungen zur Ergänzung des ALTER DATABASE-Prozesses:

1) Sie können eine vollständige Liste von Datenbanken mit logischen Namen und vollständigen Pfaden von MDF und LDF-Dateien erhalten:

   USE master SELECT name, physical_name FROM sys.master_files

2) Sie können die Dateien mit dem CMD-Befehl zum Verschieben manuell verschieben:

"Quelle" "Ziel" verschieben

Beispiel:

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) Sie sollten den Standard-Datenbankpfad für die Erstellung neuer Datenbanken ändern. Der Standardpfad wird aus der Windows-Registrierung abgerufen.

Sie können auch mit T-SQL ändern, um beispielsweise das Standardziel auf D:\MSSQLData festzulegen

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

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

0
Bull Fulbright

Dies ist eine vollständige Prozedur zum Übertragen der Datenbank und der Anmeldungen von einer neuen in eine neue. Dabei werden Anmeldeskripts erstellt und die Datendatei und Protokolldateien am Zielort verschoben. Alles mit Metaskripten.

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

Entschuldigung für die Off-Site-Prozedur, aber die Skripts sind sehr lang. Sie müssen:
- Skript-Logins mit Original-SID und HASHED-Passwort
- Erstellen Sie ein Skript zum Sichern der Datenbank mithilfe von Metascripts
- Erstellen Sie ein Skript zum Wiederherstellen der Datenbank, indem Sie die Parameter für das Umordnen mithilfe von erneuten Metascripts übergeben
- Führen Sie die generierten Skripts für Quell- und Zielinstanz aus.
Sehen Sie die Details und laden Sie die Skripts herunter, indem Sie dem obigen Link folgen.

0
Paolo