Имя: Пароль:
1C
1С v8
Как восстановить базу из архива на SQL сервере через консоль?
,
0 Cerera
 
09.09.13
09:15
Везде в интернете написано про Восстановление базы данных с архивных копий. При этом там не через консоль делается, а через среду MS SQL Management Studio. Это достаточно долго. Есть подозрение, что если заставить сервер делать это через командную строку, то будет куда быстрее, ведь резервные копии, которые делаются в последнем режиме, производятся в течении одной минуты, а когда через среду MS SQL делаешь,то затягивается на десятки минут.
1 ptiz
 
09.09.13
09:19
Рекомендую открыть любое пособие про MS SQL и почитать раздел "резервное копирование/восстановление".
2 Cerera
 
09.09.13
09:20
(1)дак там написано как в режиме пользователя восстанавливать.
3 Галахад
 
гуру
09.09.13
09:26
Линуксовые лазутчики добавили в код MS, хитрые консольные команды.
4 Infsams654
 
09.09.13
09:27
(2) еще раз (или несколько раз) прочитай. Может заметишь restore
5 Chai Nic
 
09.09.13
09:28
"Есть подозрение, что если заставить сервер делать это через командную строку, то будет куда быстрее"
Это вряд ли..
6 shuhard
 
09.09.13
09:41
(0)[Это достаточно долго. Есть подозрение, что если заставить сервер делать это через командную строку, то будет куда быстрее, ведь резервные копии, которые делаются в последнем режиме, производятся в течении одной минуты, а когда через среду MS SQL делаешь,то затягивается на десятки минут.]
ТС бредит
7 Sammo
 
09.09.13
09:44
Что значит через командную строку на скуле? job-ы?
8 Maxus43
 
09.09.13
09:50
можно T-SQL послать скулю, restore, но быстрей явно не будет. Хватит заниматься ерундой
9 Cerera
 
09.09.13
09:50
(6)У нас так. база примерно минут 10 бекапится. если через Среду делать. а когда по регламентному заданию делаются ежечасно, то за 2 минуты все базы уже забекапливаются. но это средствами MS SQL
10 Maxus43
 
09.09.13
09:51
>>ведь резервные копии, которые делаются в последнем режиме, производятся в течении одной минуты
что?
11 Cerera
 
09.09.13
09:51
(8)ну нет, так нет.Но то, в (9) - это факт. могу доказать.
12 Maxus43
 
09.09.13
09:52
(9) "ежечасно" - дак это дифы делаете поди, фулл конечно дольше
13 Cerera
 
09.09.13
09:54
(10)в (9) я объяснил всё как есть. через Cmd файл делается.
вот Cmd файл

@echo off
rem Важно !!! Кодировка DOS !!!
rem ************************************************
rem * Backup.cmd - архивирование базы              *
rem * Последние изменения : 21.03.2006 г., 19:18   *
rem * (с) 2003,2004,2006 Бочкарев Николай          *
rem ************************************************

set Database=%1
set Login=%2
set Password=%3

if '%Database%'=='' goto :Usage
if '%Database%'=='/?' goto :Usage

rem !!!! В случае длинных имен - указывать БЕЗ КАВЫЧЕК !!!

rem Путь к каталогу бакапов на сервере
set Backup=d:\bbackup
rem set Backup=F:\BACKUP_BASE
rem Microsoft SQL Server Command Line Tool
set ISQL=c:\Program Files\Microsoft SQL Server\100\Tools\Binn\OSQL.EXE
rem Имя SQL Server'a
set SQLServer=dbserver02
set BackupUser=%Login%
rem Утилита архивирования командной строки
set RAR=c:\Program Files\WinRAR\Rar.exe
rem Утилита forfiles - для запуска процедуры удаления дла старых бакапов
set FORFILES=d:\sql_backup\forfiles.exe
rem Удалять бакапы, старше этого количества дней
set Days=30

rem Сетевые ресурсы для резервного копирования
rem В случае, если копирование по сети не нужно, установите пути пустыми
rem Set Path01=\\192.168.1.6\d$\backup_lenta\
rem Set Path02=
rem Лог файл о результатах копирования, в случае, если копирование не ведется, не используется
set Log=d:\sql_backup\backup_log.txt

rem Проверки
IF NOT EXIST "%ISQL%" (echo Microsoft SQL Server Command Line Tool "%ISQL%" не найден!
echo Поправьте значение переменной ISQL в командном файле!
goto :EOF)
IF NOT EXIST "%RAR%" (echo Архиватор "%RAR%" не найден!
echo Поправьте значение переменной RAR в командном файле!
goto :EOF)
IF NOT EXIST "%FORFILES%" (echo Утилита "%FORFILES%" не найдена!
echo Поправьте значение переменной FORFILES в командном файле!
goto :EOF)
IF NOT EXIST "%backup%" (echo Каталог бакапов "%Backup%" не найден!
echo Поправьте значение переменной BACKUP в командном файле!
goto :EOF)

if NOT '%Path01%'=='' (IF NOT EXIST "%Path01%" (echo Каталог бакапов "%Path01%" не найден!
  echo Поправьте значение переменной Path01 в командном файле!
  echo %date% %time% Поправьте значение переменной Path01 в командном файле! >> %log%
  set Path01=)
)
if NOT '%Path02%'=='' (IF NOT EXIST "%Path02%" (echo Каталог бакапов "%Path02%" не найден!
  echo Поправьте значение переменной Path02 в командном файле!
  echo %date% %time% Поправьте значение переменной Path02 в командном файле! >> %log%
  set Path02=)
)

for /f "tokens=1-4 delims=. " %%i in ('date /t') do set longdate=%%i%%j%%k
set temp=d:\TEMP

set FileName=%longdate:~0,2%_%longdate:~2,2%_%longdate:~4,4%
rem дата в формате 2003_04_12
echo Дата: %Filename%
echo SQL Server: %SQLServer%
echo База данных: %Database%
echo.

echo 1. Снятие Backup...
set ArcSQL=%temp%\arcsrv.sql
echo USE master > %ArcSQL%

echo EXEC sp_addumpdevice 'disk', '%Database%_Backup', '%BACKUP%\%Database%_%FileName%.bcp' >> %ArcSQL%
echo BACKUP DATABASE %DataBase% TO %Database%_Backup >> %ArcSQL%
echo exec sp_dropdevice '%Database%_Backup' >> %ArcSQL%

"%ISQL%"  -S %SQLServer% -d master -U %BackupUser% -P %Password% -i %ArcSQL% -n

echo 2. Упаковка backup'а...
cd "%BACKUP%"
"%RAR%" a "%BACKUP%\%Database%_%FileName%" "%BACKUP%\*%Filename%.bcp" -rr -c -ep -av -idp -id -idc


echo 2. Копирование резервных копий в сети...

if not '%Path01%'=='' Call :CopyProc "%Path01%"
if not '%Path02%'=='' Call :CopyProc "%Path02%"

echo 3. Лог результата копирования
set i=0
IF EXIST "%BACKUP%\%Database%_%FileName%.rar" (set /a i=%i%+1)
IF EXIST "%Path01%\%Database%_%FileName%.rar" (set /a i=%i%+1)
IF EXIST "%Path02%\%Database%_%FileName%.rar" (set /a i=%i%+1)
echo %Date% %time% - Backup %Database% завершен! Готово архивов: %i% из 3 >> %log%
echo.
echo Backup complete

if /i %i% NEQ 0 (Call :Delete)
goto :EoF

:Delete
:удаляю все что старше...

rem if not '%Path01%'=='' ("%forfiles%"  /p "%Path01%"  /s /m *.rar /d -90 /c "CMD /C del @PATH\@FILE")
rem if not '%Path02%'=='' ("%forfiles%"  /p "%Path02%"  /s /m *.rar /d -90 /c "CMD /C del @PATH\@FILE")
rem del "%backup%\*.bcp"
del "%backup%\%Database%_%FileName%.bcp"
rem %forfiles%"  /p "%Backup%"  /s /m *.rar /d -%Days% /c "CMD /C del @PATH"
rem %forfiles% /P %BACKUP% /m *.rar /d -%Days% /c "CMD /C del @PATH\"
goto :eof

:CopyProc
echo Копирование... %1
copy "%BACKUP%\%Database%_%FileName%.rar" %1
echo Удаления архива ... %1
del "%backup%\%Database%_%FileName%.rar"
goto :eof


:usage
echo.
echo   Использование:
echo          BACKUP {Имя базы данных} {Логин} {Пароль}
goto :eof

:eof
14 Maxus43
 
09.09.13
09:54
лезь в скуль, смотри какой вид бэкапов там подвешен в джобах "ежечасно", и таки прочитай (1)
15 Sammo
 
09.09.13
09:58
Кстати, какой скуль и зачем делаете архив раром?
16 Cerera
 
09.09.13
10:00
(14)ну я уже прочитал. буду экспериментировать теперь. сравнивать время работы.
(15)SQL 2008. Ну раром делаем. а чем ещё?
17 Sammo
 
09.09.13
10:01
(16) В 2008 скуле есть возможность самим скулем делать архивированный бэк-ап.
18 Maxus43
 
09.09.13
10:02
хм, вроде фулл, не вижу я причин ускорения совершенно, это нелогично...
(16) 2008 сам сжимает. Т.е. с учетом сжатия ещё быстрей проходит?
19 Maxus43
 
09.09.13
10:04
есть подозрение что когда вручную делаешь сразу и сжимает, это и есть разница во времени
20 Maxus43
 
09.09.13
10:08
зачем вобще кстати делаете не средствами скуля? Мэйнтенс план создай, со всеми регл операциями над БД (реиндексация, обновление статистики...) + бэкапы как раз, с отправкой почты и остальными плюшками
21 Cerera
 
09.09.13
10:12
(18)сжатие это отдельное время. его не считаю. у нас видимо 2008 без сжатия создает резернвые копии. потому что раз в 10 Рар сжимает файлы бекапа.
22 Cerera
 
09.09.13
10:14
просто всё это настраивал приходящий сис админ а я теперь сам пытаюсь разобраться во всём.
23 Cerera
 
09.09.13
10:14
замучался по 20 минут ждать пока из бекапа развернется база в копию.
24 Галахад
 
гуру
09.09.13
10:15
(20) Хе-хе.
"Последние изменения : 21.03.2006 г., 19:18"

Фига себе, любители старины.
25 Maxus43
 
09.09.13
10:17
(21) при ручном созданиии бэкапа галка "проверить бэкап" стоит ещё может? на это тоже времени много идёт. Много разных причин может быть
(23) это нормально. Вместо "пытаюсь разобраться" - убрал бы это творчество и сделал номрально по умным книжкам, весь подход этот выдаёт админа-ретрограда убелённого сединой. Не делают так сейчас
26 Галахад
 
гуру
09.09.13
10:17
Да вообще, смешно ждать восстановление базы размером 10 Гб. по 20 минут.
27 Cerera
 
09.09.13
10:26
(25)благодаря тебе сделаю. просто у нас сис админ сам не разбирался в этом. он просто скрипты где то скачал - те CMD файлы. и наскоряк внедрил. потому что он приходящий админ.
теперь я уберу это творчество и настрою всё как положено и прокачаю тем самым экспиренс опять же благодаря тебе всё )
28 Cerera
 
09.09.13
10:26
(26)а сколько она должна восстанавливаться?
29 Sorm
 
09.09.13
10:29
(0) Дело в том, что "среда" MS MSSQL не более чем оболочка для удобного создания и подачи "консольных" команд серверу.
30 Галахад
 
гуру
09.09.13
10:32
(28) Пару минут.
31 Chai Nic
 
09.09.13
10:34
(30) Зависит от быстродействия дисковой подсистемы, в первую очередь. И от прочей нагрузки на сервер.
32 Maxus43
 
09.09.13
10:35
(29) "среда" - SQL management studio
33 Cerera
 
09.09.13
10:36
(30)ну вот значит мои подозрения правильны.
34 Maxus43
 
09.09.13
10:47
(33) не напрямую. Много факторов.
Со своего компа если подключишся к sql и файл бэкапа ещё если не на сервере с sql - тоже время.
Если настройиьт бэкапирование в джобах - влияние интерактивности будет сведено к минимуму, служба сервера будет сама делать
35 Cerera
 
09.09.13
11:01
(34)странно что нашь админ этого не учёл.
а вообще для специалиста 1с, знание хорошее SQL сервера на уровне администрирования, повышает его рыночную стоимость? Стоит его отдельно сейчас изучать по книге?
36 Maxus43
 
09.09.13
11:04
(35) все знания повышают твоё ЧСВ, а со стороны работодателей - в процессе работы увидят, что умеешь решать проблемы.
Или в вакансиях пишут - знание SQL, администрирования.
37 Галахад
 
гуру
09.09.13
11:06
Знания на уровне администрирования, это примерно 5 страничек с картинками прочитать.
38 Maxus43
 
09.09.13
11:07
(37) это только бэкапы? тогда да, всё остальное побольше будет)
39 Cerera
 
09.09.13
11:10
(37)я так не думаю. а как же поднятие SQL и вообще я видел толстенные книги про него.
40 Галахад
 
гуру
09.09.13
11:11
(39) А что там еще нужно для повседневного использования?
Обновить статистику и дефрагментировать индексы?
41 Cerera
 
09.09.13
11:13
(40)не ко мне пожалуй вопрос. я же еще не специалист по SQL. но вообще как поднимать его. какие там права раздавать ит .п. как оптимизировать и чтото там с транз акцияи.
42 Cerera
 
09.09.13
11:13
(40)а вы нашли новые удаленки?
43 Галахад
 
гуру
09.09.13
11:14
(39) По 1С тоже толстенные книги есть. И чего? Народ как-то обходиться не читая их.

(42) Есть немного. Но неудаленок как-то больше нашлось.
44 Cerera
 
09.09.13
11:23
(43)ну так по 1с с 5ти страниц мало чему научишься ) так же и с SQL. пусть не книга, но мануалы.
45 Галахад
 
гуру
09.09.13
11:31
(44) Программировать нет, а установить да. Даже клиент-сервер.
46 Cerera
 
09.09.13
12:14
(45)
47 Cerera
 
09.09.13
12:16
(45)мне казалось, что администрирование SQL неограничивается только установкой и созданием резервных копий. Наверняка опытный администратор SQL сервера должен уметь многое. В том числе и создание регламентных заданий, уметь команды SQL использовать зная их при этом.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.