0 / 0 / 0
Регистрация: 15.05.2020
Сообщений: 12

БЭКАП БД MSSQL

12.01.2023, 20:55. Показов 1014. Ответов 8

Студворк — интернет-сервис помощи студентам
Всем привет, вопрос такой как на SQL написать проверку на существование папки для бэкапа и если она отсутствует создать её?
Я подумал что наверно это возможно реализовать через два пути. Но пришёл в тупик, так как нужно создать папку по пути, и записать файл в неё, а как создать не могу найти, помогите пожалуйста!
Пока только это есть в скрипте:

-- Имя базы данных для резервной копии
T-SQL
1
2
3
4
5
6
7
8
9
DECLARE @DBName as nvarchar(40) = 'clear'
DECLARE @Path1 as nvarchar(400) = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\1\' + @DBName + '_' + 'FULL' + '_' + convert(varchar(max),getdate(),112)+'.bak' -- путь к сетевому диску
-- Каталог для резервной копии
DECLARE @Path as nvarchar(400) = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\' + @DBName + '_' + 'FULL' + '_' + convert(varchar(max),getdate(),112)+'.bak' -- путь к сетевому диску
IF @Path = @Path1
BACKUP DATABASE @DBName TO DISK = @Path WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10
--IF @Path1 != @Path
--CREATE Folder??????????
GO
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2023, 20:55
Ответы с готовыми решениями:

Сделать бэкап таблицы (mssql 2005)
прошу помощи в таком вопросе. есть необходимость сделать копию таблицы(структура и данные). сделать бэкап не получится, так как во-первых...

БэкАп MsSQL из Делфи
Здравствуйте, подскажите как реализовать Сохранение и восстановление бекапа БД СКУЛ на Делфе, т.е. соотвтет. есть клиентское приложение...

Переход с mssql Express 2008 R2 на mssql 2012
Уважаемые Гуру! Темы о mssql 2008 попадаются значительно чаще , чем о mssql 2012. Хочу перейти на 2012 enterprise. Есть ли...

8
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
12.01.2023, 21:15
папку запросом SQL ты не создашь
ты можешь из SQL запустить батник который это сделает

Добавлено через 1 минуту
не забывай сжимать архив - это ускорит копирование
0
1306 / 360 / 98
Регистрация: 14.10.2022
Сообщений: 1,103
13.01.2023, 08:29
Лучший ответ Сообщение было отмечено Даниил001 как решение

Решение

Цитата Сообщение от Даниил001 Посмотреть сообщение
Всем привет, вопрос такой как на SQL написать проверку на существование папки для бэкапа и если она отсутствует создать её?
xp_fileexist вестимо
Ну или для особо упоротых sys.dm_os_file_exists
https://www.sqlshack.com/file-... fileexist/

Цитата Сообщение от qwertehok Посмотреть сообщение
папку запросом SQL ты не создашь
Почему не создашь то? xp_cmdshell
https://learn.microsoft.com/ru... rver-ver16

Добавлено через 2 минуты
Кстати, еще sys.xp_create_subdir есть
https://www.kodyaz.com/article... edure.aspx
1
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
13.01.2023, 14:48
ладно, про sys.xp_create_subdir не знал

Цитата Сообщение от uaggster Посмотреть сообщение
Почему не создашь то? xp_cmdshell
потому что cmdshell не создает каталогов, а запускает cmd в котором уже и выполняется команда
об этом я и написал
0
0 / 0 / 0
Регистрация: 15.05.2020
Сообщений: 12
15.01.2023, 09:06  [ТС]
Спасибо, sys.xp_create_subdir помог:

T-SQL
1
2
3
4
5
6
7
8
9
10
11
-- Имя базы данных для резервной копии
DECLARE @DBName as nvarchar(40) = 'clear'
DECLARE @Path as nvarchar(400) = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\Test\' + @DBName + '_' + 'FULL' + '_' + convert(varchar(max),getdate(),112)+'.bak' -- путь к сетевому диску
DECLARE @Path1 as nvarchar(400) = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\Test1\' + @DBName + '_' + 'FULL' + '_' + convert(varchar(max),getdate(),112)+'.bak' -- путь к сетевому диску
IF @Path = @Path1
BACKUP DATABASE @DBName TO DISK = @Path WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10
DECLARE @Path2 as nvarchar(400) = 'C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\Backup\Test2\'
IF @Path1 != @Path
EXEC master.sys.xp_create_subdir @Path2 
BACKUP DATABASE @DBName TO DISK = @Path2 WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10 -- не видит эту строку, полагаю что в конструкции если много аргументов и нужно впереди данной строки дописать что-то
GO
А так скрипт почти готов, первое условие смотрит если пути равны просто бэкапим, второе - если не равны создаём папку по пути, и по идее бэкапим в неё, но почему-то скюль игнорирует строку! Пишет: Ошибка операционной системы 3(Системе не удается найти указанный путь.).

Добавлено через 7 минут
Хотя он сам строкой выше создал этот путь.
0
1306 / 360 / 98
Регистрация: 14.10.2022
Сообщений: 1,103
15.01.2023, 10:10
Кстати, а чем вам не подходят Maintenance Plans?
https://learn.microsoft.com/en... rver-ver16
0
 Аватар для alecko5
884 / 147 / 35
Регистрация: 05.08.2022
Сообщений: 680
15.01.2023, 17:20
может после этой строки
Цитата Сообщение от Даниил001 Посмотреть сообщение
EXEC master.sys.xp_create_subdir @Path2
добавить?
SQL
1
SET @Path2=@Path2 + @DBName + '_' + 'FULL' + '_' + CONVERT(VARCHAR(MAX),getdate(),112)+'.bak
0
0 / 0 / 0
Регистрация: 15.05.2020
Сообщений: 12
17.01.2023, 13:02  [ТС]
Спасибо, оказалось я просто в переменной @Path2 название файла и расширение не указал, а только путь прописал)

Добавлено через 14 минут
СКРИПТ ГОТОВ:

T-SQL
1
2
3
4
5
6
7
8
9
10
11
12
DECLARE @DBName as nvarchar(40) = 'Buh_Anikina' -- Имя БД для резервной копии
DECLARE @Path as nvarchar(400) = '\\10.10.54.161\Disk5\BackupSQl\' + @DBName + '_' + 'FULL' + '_' + convert(varchar(max),getdate(),112)+'.bak' -- путь к сетевому диску
DECLARE @Path1 as nvarchar(400) = '\\10.10.54.161\Disk5\BackupSQl1\' + @DBName + '_' + 'FULL' + '_' + convert(varchar(max),getdate(),112)+'.bak' -- путь к сетевому диску
IF @Path = @Path1
BACKUP DATABASE @DBName TO DISK = @Path WITH COMPRESSION, NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10
DECLARE @Path2 as nvarchar(400) = '\\10.10.54.161\Disk5\BackupSQl\' + @DBName + '_popitka' + '\' 
IF @Path1 != @Path
EXEC master.sys.xp_create_subdir @Path2 -- создаю папку по пути с именем БД
DECLARE @Path3 as nvarchar(400) = @Path2 + @DBName + '_' + 'FULL' + '_' + convert(varchar(max),getdate(),112)+'.bak'
BACKUP DATABASE @DBName TO DISK = @Path3 WITH COMPRESSION, NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10 -- не видит эту строку, полагаю что в конструкции если много аргументов и нужно впереди данной строки дописать что-то
GO
-- первое условие смотрит если пути равны просто бэкапим, второе - если не равны создаём папку по пути, и бэкапим в неё
0
5989 / 4564 / 1096
Регистрация: 29.08.2013
Сообщений: 28,207
Записей в блоге: 3
17.01.2023, 14:26
Даниил001, не забывай про проверки, логи и отправку письма если бэкап не сделался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.01.2023, 14:26
Помогаю со студенческими работами здесь

Перенос данных с mssql 2008 R2 на mssql 2012
Уважаемые Гуру! Пытаюсь перенести базу данных с сервера mssql 2008 R2 на mssql server 2012. Сделал backup в mssql server management...

Совместимость datetime в MSSQL 7 и MSSQL 2000
Господа, помогите разобраться. Такая ситуация, понаписал скриптов под SQL 7, перенесли на SQL 2000, возникла проблема с форматом datetime. ...

Совместимость datetime в MSSQL 7 и MSSQL 2000
Господа, помогите разобраться. Такая ситуация, понаписал скриптов под SQL 7, перенесли на SQL 2000, возникла проблема с форматом datetime. ...

Перенос БД из MSSQL 6.5 на MSSQL 7.0
Как перенести базу с сервера 6.5 на сервер 7.0? Серверы стоят на разных компьютерах. В помощи написано, что можно с помощью DTS Import /...

От MSSQL 7.0 к MSSQL 2000
Скоростные характеристики ранее оптимизированных сложных запросов упали при переходе к серверу MSSQL 2000. Конкретнее - оптимизатор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru