Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dołącz wiele baz danych za pomocą T-SQL

Korzystając z trybu SQLCMD, możesz łatwo wykonać ten skrypt:

:setvar dbname YourDatabaseName
:setvar dbfile N'E:\DATA\YourDatabase.mdf'
:setvar logfile N'E:\TLOG\YourDatabase_log.ldf'
USE [master]
GO

CREATE DATABASE $(dbname) ON 
( FILENAME = $(dbfile) ),
( FILENAME = $(logfile) )
FOR ATTACH
GO

Działa to albo z sqlcmd.exe z wiersza poleceń (możesz nawet podać wartości zmiennych dbname, dbfile, logfile z wiersza poleceń) lub działa w SQL Server Management Studio, jeśli domyślnie włączono Tools > Options > Query Execution > by default, open new queries in SQLCMD mode .

Przeczytaj więcej o narzędziu SQLCMD i wszystkich jego parametrach na MSDN.

PS:oczywiście to podejście z włączonym skryptem SQLCMD działa również dla cykli BACKUP/RESTORE :-) (zgodnie z zaleceniami Aarona)

PPS:jeśli masz dobrą konwencję nazewnictwa, a plik danych to zawsze $(dbname).mdf a plik dziennika to zawsze $(dbname)_log.ldf , możesz również użyć tego skróconego skryptu SQLCMD:

:setvar dbname YourDatabaseName
USE [master]
GO

CREATE DATABASE $(dbname) ON 
( FILENAME = N'E:\DATA\$(dbfile).mdf' ),
( FILENAME = N'E:\TLOG\$(logfile)_log.ldf' )
FOR ATTACH
GO

a potem po prostu wywołaj to z wiersza poleceń:

C:\>  sqlcmd.exe -S yourserver -E -i attach.sql -v dbname=YourDb1

i tak dalej, raz dla każdej bazy danych, którą musisz ponownie dołączyć.

PPPS:jeśli chcesz przywrócić kopie zapasowe, jest to tylko trochę bardziej skomplikowane :

:setvar dbname YourDatabaseName
USE [master]
GO

RESTORE DATABASE $(dbname)
FROM DISK = N'E:\Backup\$(dbname).bak' 
WITH FILE = 1,  
MOVE N'$(dbname)' TO N'E:\DATA\$(dbname).mdf',  
MOVE N'$(dbname)_Log' TO N'E:\TLOG\$(dbname)_Log.ldf',  
NOUNLOAD, REPLACE
GO

To działa, o ile nazwiesz swój .bak pliki takie same jak nazwa bazy danych i umieszczasz je w stałej lokalizacji (przypuszczam, że E:\Backup tutaj - dostosuj w razie potrzeby).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_QUERY() Przykłady w SQL Server (T-SQL)

  2. Tabela przestawna serwera SQL Server z agregacjami wielu kolumn

  3. Zoptymalizowany SQL dla struktur drzewiastych

  4. Ms SQL geography.STDistance zwraca nieprawidłową odległość

  5. haszować wiersz SQL?