2015-02-23 2 views
0

Я пытаюсь прочитать и удалить любой конкретный файл на сервере sql.Чтение и удаление файлов в sql-сервере

Сценарий

Когда я пытаюсь опубликовать свою базу данных с помощью Post Deployment Script, он автоматически принимает резервную копию базы данных по умолчанию в Backup каталоге. Теперь я получаю эту папку больше с каждым днем. Теперь я хочу написать sql-задание, которое будет выполнено, и удалит все файлы bakcup, кроме последних двух. Возможно ли это, и это уместно сделать в sql. Если нет, то почему?

+4

@downvoter, если это неправильный вопрос, вы должны проголосовать, но, пожалуйста, объясните, как помочь людям улучшить в следующий раз. – Ancient

+0

Как называются ваши файлы резервных копий? По каким критериям вы сортируете свои файлы и решаете, какие первые два? – veljasije

+0

filesnames вот так: databasename_datetime.bak – Ancient

ответ

0

Теперь я получаю эту папку больше с каждым днем. Теперь я хочу написать sql-задание, которое будет выполняться, и будет удалять все файлы bakcup, кроме последних двух.

По умолчанию при резервном копировании следует добавить текущий файл резервной копии с предыдущим. Опция: (NOINIT).. См. backup documentation. Вам нужно добавить опцию INIT, взяв резервную копию, это перепишет предыдущую резервную копию.

Если ваш сценарий таков, что вы просто хотите удалить старые файлы резервных копий, это можно сделать, написав собственный скрипт. К счастью, для этого у вас есть Ola Hallengren script. Я настоятельно рекомендую вам сначала прочитать часто задаваемые вопросы и примеры. примеры чтения будут разъяснять вам, как работает скрипт

1

Вы можете создать SQL-задание для удаления файла из файловой системы.

Прежде всего, вы должны запустить службу агента SQL.

Следующий шаг создает сценарий powershell для удаления желаемых файлов. Поместите скрипт на, например, D:\Test\ папку и укажите имя для скрипта, например DeleteFile.ps1. Редактировать сценарий и написать следующий код:

$files = Get-ChildItem D:\Test *.txt | Select Name, CreationTime, FullName | Sort CreationTime 

for ($i=0; $i -lt ($files.Count -2); $i++) { 
    Remove-Item $files[$i].FullName 
} 

а затем сохранить и закрыть редактор.

Затем под агента SQL дерева, щелкните правой кнопкой мыши на Работа папку и выберите New Job. В диалоговом окне Общие сведения вкладка, укажите имя для задания, а затем в левой части окна, выберите Шаги, а затем Новые.

В новом диалоговом окне в разделе Тип, выберите Операционная система (CmdExec). В поле Command, просто вызовите Powershell скрипт, вы создаете для удаления нужных файлов:

D:\Test\DeleteFile.ps1 

и нажмите кнопку OK для создания задания.

Когда закончите, чтобы проверить удаление файлов, щелкните правой кнопкой мыши на созданном задании, а затем выберите Начните работу как шаг.

ПРИМЕЧАНИЕ

Предлагается проверить всю эту работу на какой-то тестовой машине, прежде чем положить его в производство. Файлы, которые я удаляю, это файлы .txt, но вам просто нужно изменить код, чтобы карта .bak файлов. Конечно, вы можете изменить расположение файлов.

Смежные вопросы