sql >> Database >  >> RDS >> Sqlserver

Koppel meerdere databases met T-SQL

Met behulp van de SQLCMD-modus kunt u dit eenvoudig scripten:

: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

Dit werkt ofwel vanuit sqlcmd.exe vanaf de opdrachtregel (u kunt zelfs de waarden voor de variabelen dbname, dbfile, logfile ook vanaf de opdrachtregel), of het werkt in SQL Server Management Studio als u Tools > Options > Query Execution > by default, open new queries in SQLCMD mode .

Lees meer over het SQLCMD-hulpprogramma en al zijn parameters op MSDN.

PS:deze aanpak met een SQLCMD-script werkt natuurlijk ook voor BACKUP/RESTORE-cycli :-) (zoals aanbevolen door Aaron)

PPS:als je een goede naamgevingsconventie hebt, en het gegevensbestand is altijd $(dbname).mdf en het logbestand is altijd $(dbname)_log.ldf , kunt u ook dit verkorte SQLCMD-script gebruiken:

: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

en roep dit dan gewoon vanaf de opdrachtregel:

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

enzovoort, één keer voor elke database die u opnieuw moet koppelen.

PPPS:als je back-ups wilt terugzetten, is het iets ingewikkelder :

: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

Dit werkt, zolang je je .bak een naam geeft bestanden hetzelfde als uw databasenaam, en u plaatst ze op een vaste locatie (ik nam aan dat E:\Backup hier - pas zo nodig aan).



  1. SQL AS:gebruik, voorbeelden en hoe u er het beste van kunt profiteren

  2. SQL om te controleren op alle waarden in de kolom

  3. alleen selecteren bij andere waarde

  4. Vervolg op Zomervoorstelling Palooza 2013