MyFirstBrain/Kunden/KT/Alte Daten/Kanzlei-Tews/04_SQL Restore.md

163 lines
3.0 KiB
Markdown
Raw Normal View History

2024-06-26 12:35:11 +02:00
SQL Restore
Montag, 12. Dezember 2011
19:42
 
\<a href=\'http://www.omniture.com\' title=\'Web Analytics\'\>\<img src=\'http://mssto.112.2o7.net/b/ss/msstoextblogsnojs/1/H.20.2\--NS/0\' height=\'1\' width=\'1\' border=\'0\' alt=\'\' /\>\</a\>
**::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 \<<http://weblogs.asp.net/jgalloway/archive/2005/12/02/432088.aspx>\>
 
 
 
 
 
 
2. Möglichkeit :
> Batchdatei
>
> sqlcmd -S .\\SQLEXPRESS -i attachDB.sql -v database=\"%1\" -v root=\"%CD%\"
>
>  
>
> Eingefügt aus \<<http://blog.lavablast.com/post/2008/10/14/SQL-Server-Restore-a-bak-to-a-database-in-command-line.aspx>\>
>
>  
>
>  
>
> 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