Форум: "Базы";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
ВнизПрограммное востановление БД Найти похожие ветки
← →
NotGooDP © (2006-09-11 16:50) [0]Всем привет!
Подскажите пожалуйста каким образом можно восстановить программно БД на msSQL
мой код
Restore DataBase SPZ_Database From DISK = путь к файлу
Старый коннект надо закрыть, но тогда каким образом или где мне указать сам сервер куда надо восстанавливать БД
использую для коннекта и запросов ADO механизмы.
Заранее спасибо!
← →
AlexWlad © (2006-09-11 20:11) [1]Сервер определяется в строке подключения (ConnectionString).
Далее. Для восстановления базы необходимое условие - отсутствие коннектов (даже закрытых, но еще висящих), поэтому лучше в строке подключения указывать Master или любую другую базу. Ну и конечно BOL, соотв. раздел прочитать очень внимательно.
← →
Ega23 © (2006-09-12 09:17) [2]Вот кусок SP на восстановление. Писалось давно, что делает - уже не помню. Выполнять в контексте master
--=================== ВОССТАНОВЛЕНИЕ БД
IF @ACTNAM="RESTORE"
BEGIN
set @sqls="RESTORE FILELISTONLY FROM DISK =""+@bakupfile+"""
create table ##Bakfiles(LogicalName nvarchar(128) null,PhysicalName nvarchar(260) null,Type char(1)null ,
FileGroupName nvarchar(128) null,Size numeric(20,0) null,MaxSize numeric(20,0) null
)
insert ##Bakfiles exec (@sqls)
set @cnt=0 set @bakmdf="" set @bakndf=""
declare Cur cursor local static for select cast(LogicalName as varchar(8000)) from ##Bakfiles where type="D"
open Cur
while 0 = 0
Begin
fetch next from Cur into @ss
if @@fetch_status <> 0 BREAK
set @cnt=@cnt+1
if @cnt=1 set @bakmdf=@ss
if @cnt=2 set @bakndf=@ss
end
close Cur
deallocate Cur -- was for 1 select top 1 @bakmdf=LogicalName from ##Bakfiles where type="D"
select top 1 @bakldf=LogicalName from ##Bakfiles where type="L"
if @Debug<>-1 select * from ##Bakfiles
drop table ##Bakfiles
create table ##Dbfiles(name sysname null,fileid smallint null,filename nchar(260) null,filegroup sysname null,
size nvarchar(18) null,maxsize nvarchar(18) null,growth nvarchar(18) null, usage varchar(9) null )
set @sqls="insert ##Dbfiles exec "+@dbname+"..sp_helpfile"
exec (@sqls)
if @Debug<>-1 select * from ##Dbfiles
set @mdf="" set @ldf="" set @ndf=""
select @mdf=ltrim(rtrim(filename)) from ##Dbfiles where fileid =1
select @ndf=ltrim(rtrim(filename)) from ##Dbfiles where fileid <>1 and not (filegroup is null)
select @ldf=ltrim(rtrim(filename)) from ##Dbfiles where usage like ("%log%")
if @Debug<>-1 select * from ##Dbfiles
drop table ##Dbfiles
set @sqls=""
Print "Restoring base :"+ @dbname +" from "+ @bakupfile
Print "Restoring data :"+ @bakmdf +" --> "+ @mdf
if (@ndf<>"")and(@bakndf<>"")
begin
Print "Restoring data1:"+ @bakndf +" --> "+ @ndf
set @sqls=" MOVE ""+@bakndf+"" TO "+"""+@ndf+"","
end
Print "Restoring log :"+ @bakldf +" --> "+ @ldf
set @sqls="
RESTORE DATABASE "+@dbname+" FROM DISK = ""+@bakupfile+""
WITH MOVE ""+@bakmdf+"" TO "+"""+@mdf+"","+
@sqls +
" MOVE ""+@bakldf+"" TO "+"""+@ldf+"","+
" REPLACE "
if @debug<>-1 print @sqls
-- goto Fin
-- exec S_BACKUP @ACTNAM="RESTORE", @debug=1,@dbname="tete",@bakupfile="D:\temp\knps-21-Oct-2002.BAK"
exec (@sqls)
if @@error<>0 begin print "RESTORE ERROR !!!" goto fin end
-- Установить Collation !!
exec S_BACKUP @ACTNAM="COLLATE",@dbname=@dbname,@COLLATEnam=@defCOLLATEnam,@debug=@debug
-- goto bind
goto Fin
END
← →
NotGooDP © (2006-09-12 10:52) [3]спасибо, все заработало
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.045 c