Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Прикачете множество бази данни с помощта на T-SQL

Използвайки режима SQLCMD, можете лесно да скриптирате това:

: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

Това работи или от sqlcmd.exe от командния ред (можете дори да предоставите стойностите за променливите dbname, dbfile, logfile от командния ред също) или работи в SQL Server Management Studio, ако сте активирали Tools > Options > Query Execution > by default, open new queries in SQLCMD mode .

Прочетете повече за помощната програма SQLCMD и всички нейни параметри в MSDN.

PS:разбира се, този подход с активиран SQLCMD скрипт също работи за цикли BACKUP/RESTORE :-) (както е препоръчано от Aaron)

PPS:ако имате добра конвенция за именуване и файлът с данни винаги е $(dbname).mdf и лог файлът винаги е $(dbname)_log.ldf , можете също да използвате този съкратен 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

и след това просто извикайте това от командния ред:

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

и така нататък, веднъж за всяка база данни, която трябва да прикачите отново.

PPPS:ако искате да възстановите резервни копия, това е малко по-сложно :

: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

Това работи, стига да наименувате своя .bak файлове със същото име като името на вашата база данни и ги поставяте на фиксирано място (предположих, че E:\Backup тук - адаптирайте според нуждите).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Условно подреждане на SQL Server по

  2. Използване на броя на редовете от временна таблица в цикъл while SQL Server 2008

  3. Sql Server какво да направите, за да направите ключ за съпоставяне от стойност на низ

  4. Тъй като няма параметър за масив на Sqlserver, какъв е най-добрият начин да продължите?

  5. Групиране по sql заявка в колона, свързана със запетая