Przenieś pliki bazy danych SQL Server 2008 do nowej lokalizacji folderu

Nazwa Logiczna

  • my_Data
  • my_Log

Ścieżka:

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

Nazwa pliku:

  • my.MDF
  • my_1.LDF

Jaki byłby skrypt sql, aby przenieść te pliki do nowej lokalizacji: D:\DATA

Baza danych jest na żywo, więc musiałbym zamknąć istniejące połączenia.

Author: marc_s, 2011-07-05

5 answers

Zapomniałeś podać nazwę swojej bazy danych (czy to "moja"?).

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

Teraz tutaj musisz ręcznie przenieść pliki z ich bieżącej lokalizacji do D:\Data\ (i pamiętaj, aby zmienić ich nazwy ręcznie, jeśli zmieniłeś je w poleceniu Modyfikuj plik) ... następnie możesz przywrócić bazę danych online:

ALTER DATABASE my SET ONLINE;

ALTER DATABASE my SET MULTI_USER;

Zakłada to, że konto usługi SQL Server ma wystarczające uprawnienia na D:\Data \ folder. Jeśli nie, otrzymasz błędy za pomocą polecenia SET ONLINE.

 85
Author: Aaron Bertrand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-05 15:31:34

Możesz użyć opcji odłącz/Załącz w SQL Server Management Studio.

Sprawdź to: Przenieś bazę danych za pomocą Detach i załącz

 18
Author: Marco Hurtado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-05 16:26:09

Aby dodać uprawnienia potrzebne do plików Dodaj i przyznaj prawa Następującemu użytkownikowi lokalnemu: sqlservermssqluser$COMPUTERNAME$INSTANCENAME, gdzie COMPUTERNAME i INSTANCENAME należy zastąpić odpowiednio nazwą komputera i instancji MSSQL.

 6
Author: Lasse S. Jensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-13 14:42:22

Jest to kompletna procedura transferu bazy danych i loginów z istance do nowej, tworzenia skryptów logowania i przenoszenia plików datafile i logów do miejsca docelowego. Wszystko przy użyciu metaskryptów.

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

Przepraszam za procedurę off-site, ale skrypty są bardzo długie. Musisz:
- Logowanie skryptów z oryginalnym SID i HASHED hasło
- Tworzenie skrypt do tworzenia kopii zapasowej bazy danych przy użyciu metascripts
- Create script to restore database passing relocate parameters using again metascripts
- Uruchom wygenerowane Skrypty na źródłowej i docelowej instancji.
Zobacz szczegóły i pobierz Skrypty pod linkiem powyżej.

 0
Author: Paolo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-18 09:51:16

Kilka uwag do uzupełnienia procesu bazy danych ALTER:

1) możesz uzyskać pełną listę baz danych z logicznymi nazwami i pełnymi ścieżkami plików MDF i LDF:

   USE master SELECT name, physical_name FROM sys.master_files

2) pliki można przenosić ręcznie za pomocą polecenia cmd move:

Przenieś "Źródło ""Miejsce Docelowe"

Przykład:

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) powinieneś zmienić domyślną ścieżkę bazy danych dla tworzenia nowych baz danych. Domyślna ścieżka jest pobierana z rejestru systemu Windows.

Możesz także zmienić za pomocą T-SQL, na przykład, aby ustawić domyślne miejsce docelowe na: 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

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

 0
Author: Bull Fulbright,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-31 07:54:26