zettelkasten/OneNoteExport/KT/Alte Daten/Kanzlei-Tews/04_SQL Restore.md
2023-09-10 09:46:17 +02:00

3.0 KiB

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>

 

 

 

 

 

 

  1. 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