SQL Restore
Montag, 12. Dezember 2011
19:42
\\
\
**::SET VARIABLES**
set DBNAME=NAMEOFDATABASEBEINGRESTORED
set DBDIRECTORY=C:\\Program Files\\Microsoft SQL Server\\MSSQL\\Data
TITLE Restoring %DBNAME% Database
**::PUT DATABASE IN SINGLE USER MODE TO ALLOW RESTORE**
osql -E -d master -Q \"alter database %DBNAME% set single_user with rollback immediate\"
**::RESTORE DATABASE**
osql -E -d master -Q \"restore database %DBNAME% from disk=\'%\~dp0\\%DBNAME%.bak\' WITH MOVE \'%DBNAME%\_Data\' TO \'%DBDIRECTORY%\\%DBNAME%\_Data.MDF\', MOVE \'%DBNAME%\_Log\' TO \'%DBDIRECTORY%\\%DBNAME%\_Log.LDF\'\"
**::GRANT PERMISSION TO ASPNET USER**
osql -E -d %DBNAME% -Q \"sp_grantdbaccess \'%COMPUTERNAME%\\ASPNET\'\"
osql -E -d %DBNAME% -Q \"sp_addrolemember \'db_owner\', \'%COMPUTERNAME%\\ASPNET\'\"
**::RESTORE TO MULTI USER**
osql -E -d master -Q \"alter database %DBNAME% set multi_user\"
pause
Eingefügt aus \<\>
2. Möglichkeit :
> Batchdatei
>
> sqlcmd -S .\\SQLEXPRESS -i attachDB.sql -v database=\"%1\" -v root=\"%CD%\"
>
>
>
> Eingefügt aus \<\>
>
>
>
>
>
> attachDB.sql
>
>
>
> USE MASTER
>
> GO
>
> IF EXISTS (SELECT \* FROM sys.objects WHERE object_id = OBJECT_ID(N\'\[dbo\].\[\$(database)\]\') AND type in (N\'U\'))
>
> ALTER DATABASE \$(database) SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
>
> create table #backupInformation (LogicalName varchar(100),
>
> PhysicalName varchar(100),
>
> Type varchar(1),
>
> FileGroupName varchar(50) ,
>
> Size bigint ,
>
> MaxSize bigint,
>
> FileId int,
>
> CreateLSN int,
>
> DropLSN int,
>
> UniqueId uniqueidentifier,
>
> ReadOnlyLSN int,
>
> ReadWriteLSN int,
>
> BackupSizeInBytes int,
>
> SourceBlockSize int,
>
> FileGroupId int,
>
> LogGroupGUID uniqueidentifier,
>
> DifferentialBaseLSN bigint,
>
> DifferentialBaseGUID uniqueidentifier,
>
> IsReadOnly bit, IsPresent bit )
>
> insert into #backupInformation exec(\'restore filelistonly from disk = \'\'\$(root)\\\$(database).bak\'\'\')
>
> DECLARE \@logicalNameD varchar(255);
>
> DECLARE \@logicalNameL varchar(255);
>
> select top 1 \@logicalNameD = LogicalName from #backupInformation where Type = \'D\';
>
> select top 1 \@logicalNameL = LogicalName from #backupInformation where Type = \'L\';
>
> DROP TABLE #backupInformation
>
> RESTORE DATABASE \$(database)
>
> FROM DISK = \'\$(root)\\\$(database).bak\'
>
> WITH REPLACE,
>
> MOVE \@logicalNameD TO \'C:\\Program Files (x86)\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\\$(database).mdf\',
>
> MOVE \@logicalNameL TO \'C:\\Program Files (x86)\\Microsoft SQL Server\\MSSQL.1\\MSSQL\\Data\\\$(database).ldf\'
>
> GO
>
>
>
>
>
>
#nochzubearbeiten