Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Alexander JA Member Откуда: Сообщений: 6 |
Доброго времени суток. Не являюсь программистом, простой эникейщик в мелкой конторе. Встала необходимость резервного копирования sql баз (sql server 2008). Джобы сделал, всё бекапится отлично. Копируются в тех же джобах командами на cmd: robocopy, xcopy в другую директори. Но. Надо, чтобы копировались эти копии не с помощью cmd, а с помощью скрипта t-sql. Я даже простой запрос не могу своять... Начальство требует, чтобы именно так было сделано. Т.е. какая стоит задача. Если в папке допустим C:\backup\bk\day\full - полные копии. Надо копировать недельные копии их в папку C:\backup\bk\week и хранить их там 4 недели, и месячные копии, 28 числа каждого месяца в C:\backup\bk\month и хранить их там год. Я как сделал на cmd. 1 - rem скопируются файлы за последние 7 дней, запуск скрипта по расписанию по понедельникам robocopy C:\backup\bk\day\full C:\backup\bk\week /maxage:7 /minage:1 set/A errlev="%ERRORLEVEL% & 24" exit/B %errlev% rem отдельным шагом удаление FORFILES /P C:\backup\bk\week /D -28 /C "cmd /c del @path" 2- rem копировать файлы по маске на 28 дату каждого месяца copy C:\backup\bk\day\test_2014**28.* C:\backup\bk\month\ rem удалять копии старше года FORFILES /P C:\backup\bk\month /D -356 /C "cmd /c del @path" ======================== Но как это вообразить на t-sql понятия не имею :( Прошу помощи. Помогите, пожалуйста. Вроде элементарщина... с sql практически не имел дела никогда... |
13 фев 14, 17:04 [15563956] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37198 |
exec dbo.xp_cmdshell ' obocopy C:\backup\bk\day\full C:\backup\bk\week /maxage:7 /minage:1 set/A errlev="%ERRORLEVEL% & 24" exit/B %errlev% rem отдельным шагом удаление FORFILES /P C:\backup\bk\week /D -28 /C "cmd /c del @path" 2- rem копировать файлы по маске на 28 дату каждого месяца copy C:\backup\bk\day\test_2014**28.* C:\backup\bk\month\ rem удалять копии старше года FORFILES /P C:\backup\bk\month /D -356 /C "cmd /c del @path" ' |
13 фев 14, 17:05 [15563962] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31816 |
Но можно запускать команды ОС (в том числе cmd файлы), используя xp_cmdshell |
||
13 фев 14, 17:06 [15563967] Ответить | Цитировать Сообщить модератору |
Alexander JA Member Откуда: Сообщений: 6 |
мм.м... ну хорошо.... Нет возможности копировать.. бог с ней... это допустим оставлю просто в отдельных шагах джоба... Но а если удаление... удаление с проверкой по дате можно сделать? мм... как там её... начальник говорил про функцию getdate... :( |
13 фев 14, 17:14 [15563999] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37198 |
Сообщение было отредактировано: 13 фев 14, 17:36 |
||
13 фев 14, 17:34 [15564118] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31816 |
|
||||
13 фев 14, 17:47 [15564205] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Ну скажите ж ему секретное слово: Maintenance Plans |
||||
13 фев 14, 18:16 [15564370] Ответить | Цитировать Сообщить модератору |
alex564657498765453 Member Откуда: Сообщений: 1925 |
интересная у вас контора, а ещо интересней начальник. Который экономя в мелкой конторе, нанимает эникейщика на мелкую задачу, которую может сделать сам. ЗЫ как по мне подход не верен. правильно сказали, манипулировать данными в базе и файлами в файловой системе, это как бы ....как рулевое управление для парусника и для автомобиля. можно в теории, одно использовать вместо другого, но попахивает идиотизмом. ЗЫЗЫ догадываюсь, твой начальник хочет единый центр управления полётами. (но для этого не обязательно заправлять вертолёт ракетным топливом, ну или шатл дизелем) ЕЦУП = виндоус, тогда из шела зупаускаешь скл- код в базе периодически ЕЦУП = база, то из базы xpcmd - запуск команд шела. |
13 фев 14, 19:45 [15564777] Ответить | Цитировать Сообщить модератору |
Alexander JA Member Откуда: Сообщений: 6 |
Maintenance Plans не доступны мне :( P.S. Можно как - то "втихаря" админские права на sql получить? SQL Server 2008 |
13 фев 14, 20:13 [15564846] Ответить | Цитировать Сообщить модератору |
Jaffar Member Откуда: Сообщений: 633 |
Alexander JA, вам же объяснили - есть процедура xpcmdshell - она вызывает виндовый cmd и передает ей ваши команды, которые вы в 1 параметре указали. можете написать батник и запускать его с пом xpcmdshell exec xp_cmdshell 'C:\123\1.bat' в этот батник можно напихать всю логику. если сдатами вам проще работать на t-sql - то генерите текст cmd и выполняйте его. запуск по расписанию - JOB. |
14 фев 14, 09:02 [15566001] Ответить | Цитировать Сообщить модератору |
Alexander JA Member Откуда: Сообщений: 6 |
Т.е. на t-sql нельзя сделать проверку по дате... и если, допустим, условие выполнилось, то запускать cmd скрипт? |
14 фев 14, 10:21 [15566300] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
t-sql - это язык для работы с данными. Как запустить внешний скрипт вам уже несколько раз показали. |
||
14 фев 14, 10:24 [15566314] Ответить | Цитировать Сообщить модератору |
Alexander JA Member Откуда: Сообщений: 6 |
Хорошо. Фиг бы с t-sql. На простом SQL это тоже нельзя сделать? |
14 фев 14, 10:40 [15566397] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104751 |
Если создадите свой SQL Server, то можно |
||
14 фев 14, 10:41 [15566403] Ответить | Цитировать Сообщить модератору |
Alexander JA Member Откуда: Сообщений: 6 |
Ладно понял. Спасибо большое за ответы. Премного благодарен. |
14 фев 14, 10:48 [15566434] Ответить | Цитировать Сообщить модератору |
Владимир Лазурко Member Откуда: Украина Сообщений: 8096 |
dbo.xp_cmdshell 'FORFILES /D -20 /M *.rar /P G:\Backup\ /C "cmd /c del @path"'/D -20 - глубина проверки даты (по умолчанию от текущей), здесь - получить файлы старше 20 дней /M *.rar - маска поиска файлов. По умолчанию в текущей папке /P G:\Backup\ - папка, в которой происходит поиск файлов |
||
4 авг 14, 12:38 [16395331] Ответить | Цитировать Сообщить модератору |
Владимир Лазурко Member Откуда: Украина Сообщений: 8096 |
exec dbo.xp_cmdshell 'FORFILES /D -20 /M *.rar /P G:\Backup\ /C "cmd /c del @path"'Поправил |
4 авг 14, 12:46 [16395372] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8485 |
xp_cmdshell требует весьма некислого разрешения CONTROL SERVER, которых у автора нет, судя по всему. Кроме того, не стоит злоупотреблять неспециализированными возможностями... |
4 авг 14, 14:00 [16395849] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |