Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.036 c
15-1161949686
TIF
2006-10-27 15:48
2006.11.12
Совместимость с Windows 98


15-1161112759
DillerXX
2006-10-17 23:19
2006.11.12
Аквариум (группа)


2-1161706496
vegarulez
2006-10-24 20:14
2006.11.12
Как в messagebox поместить string?


2-1161933623
Ingwar
2006-10-27 11:20
2006.11.12
array of string


2-1162031764
oleg_v
2006-10-28 14:36
2006.11.12
как удалить (очистить) все записи из БД(*.db)





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский