sql >> Database teknologi >  >> RDS >> Sqlserver

Vedhæft flere databaser ved hjælp af T-SQL

Ved at bruge SQLCMD-tilstanden kan du nemt scripte dette:

: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

Dette virker enten fra sqlcmd.exe fra kommandolinjen (du kan endda angive værdierne for variablerne dbname, dbfile, logfile også fra kommandolinjen), eller det virker i SQL Server Management Studio, hvis du som standard aktiverede Tools > Options > Query Execution > by default, open new queries in SQLCMD mode .

Læs mere om SQLCMD-værktøjet og alle dets parametre på MSDN.

PS:selvfølgelig virker denne tilgang med et SQLCMD-aktiveret script også til BACKUP/RESTORE cyklusser :-) (som anbefalet af Aaron)

PPS:hvis du har en god navnekonvention, og datafilen altid er $(dbname).mdf og logfilen er altid $(dbname)_log.ldf , kan du også bruge dette forkortede SQLCMD-script:

: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
 

og så bare kald dette fra kommandolinjen:

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

og så videre, én gang for hver database skal du vedhæfte igen.

PPPS:hvis du vil gendanne sikkerhedskopier, er det bare lidt mere kompliceret :

: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
 

Dette virker, så længe du navngiver din .bak filer det samme som dit databasenavn, og du placerer dem på en fast placering (jeg formodede E:\Backup her - tilpas efter behov).



  1. CodeIgniter - Fejlnummer:1146 (tabel eksisterer ikke efter at have udført en CREATE TABLE-kommando)

  2. Start MySQL Server som en tjeneste (Win 8)

  3. Opdater kun en divs indhold, hvis nyt indhold tilføjes til databasen

  4. Skeln mellem "ingen rækker blev påvirket" og rækker, der blev opdateret - til samme værdi (MySQL og PHP)