Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.12;
Скачать: CL | DM;

Вниз

Программное востановление БД   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.029 c
8-1144571712
Vitaly73
2006-04-09 12:35
2006.11.12
mp3+DirectShow


2-1161673983
pathfinder
2006-10-24 11:13
2006.11.12
Загрузка StringList из буфера..


2-1162098487
КлЯкСа
2006-10-29 08:08
2006.11.12
Ошибки при создании собственного проекта


2-1161943090
markers
2006-10-27 13:58
2006.11.12
Как проверить существования объекта?


1-1159518252
kyn66
2006-09-29 12:24
2006.11.12
Удалить строку из ListBox по условию