sql >> Databasteknik >  >> RDS >> Sqlserver

Bifoga flera databaser med T-SQL

Med hjälp av SQLCMD-läget kan du enkelt skripta detta:

: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

Detta fungerar antingen från sqlcmd.exe från kommandoraden (du kan till och med ange värden för variablerna dbname, dbfile, logfile från kommandoraden också), eller så fungerar det i SQL Server Management Studio om du aktiverade Tools > Options > Query Execution > by default, open new queries in SQLCMD mode .

Läs mer om SQLCMD-verktyget och alla dess parametrar på MSDN.

PS:det här tillvägagångssättet med ett SQLCMD-aktiverat skript fungerar naturligtvis även för BACKUP/RESTORE-cykler :-) (som rekommenderas av Aaron)

PPS:om du har en bra namnkonvention och datafilen alltid är $(dbname).mdf och loggfilen är alltid $(dbname)_log.ldf , kan du också använda detta förkortade SQLCMD-skript:

: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

och sedan bara anropa detta från kommandoraden:

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

och så vidare, en gång för varje databas du måste bifoga igen.

PPPS:om du vill återställa säkerhetskopior är det bara lite mer komplicerat :

: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

Detta fungerar så länge du namnger din .bak filer samma som ditt databasnamn, och du placerar dem på en fast plats (jag antog E:\Backup här - anpassa efter behov).



  1. importera CSV till MYSQL via PHP

  2. Skapa en främmande nyckel i SQLite

  3. Installera RAC för en databas med datafiler

  4. Fel vid användning av mönstermatchning som inte liknar någon annan i PostgreSQL