Как да архивирате SQL бази данни в мрежов дял
Редовното архивиране на SQL бази данни е задължително. Вече сме обхванали начини за лесно архивиране на всички бази данни на SQL сървъра на локален твърд диск, но това не предпазва от повреда в устройството и / или системата. Като допълнителен слой на защита срещу този тип бедствие, можете да копирате или директно да създавате резервни копия на мрежов дял.
Архивирайте локално и след това копирайте в мрежовия дял
Предпочитаният и най-директен начин за постигане на тази задача е просто да се създаде локално архивиране на база данни и след това да се копира съответния архивен файл в мрежов дял. Можете да направите това, като създадете пакетния скрипт, който изглежда така:
SET LocalFolder = C: Файлове на програмиMicrosoft SQL ServerMSSQL.1MSSQLBackup
SqlCmd -E -Q “База данни за архивиране MyDB To Disk ="% LocalFolder% MyDB.bak ""
XCopy “% LocalFolder% MyDB.bak” “\ t
DEL “% LocalFolder% MyDB.bak”
Този скрипт прави следното (ред по ред):
- Задава променлива в локалния резервен каталог на SQL.
- Създава SQL резервно копие на MyDB (използвайки удостоверяване на Windows) в локалния резервен каталог на SQL.
- Копира локалния архивен файл в мрежов дял.
- Изтрива локалния архивен файл.
Отново, това е предпочитаният метод, защото той работи извън полето и вероятността от отказ на резервно копие е минимална, тъй като архивирането е създадено на локален диск. Въпреки това, ако нямате достатъчно дисково пространство за съхраняване на локални копия на архивни файлове, това действие няма да успее. В този случай ще трябва да добавите допълнително дисково пространство или резервно копие директно към мрежов дял.
Директно архивиране в мрежов дял
Обикновено, когато се опитвате да създадете резервно копие директно в мрежов дял, като използвате команда като:
SqlCmd -E -Q “Архивираща база данни MyDB To Disk =" \ t
Най-вероятно ще получите грешка в съответствие с:
Msg 3201, ниво 16, състояние 1, сървър JF, ред 1
Не може да се отвори устройството за архивиране "\ _ \ _ \ _ \ _ 192.168.16.55BackupDatabasesMyDB.bak. Грешка в операционната система 5 (Достъпът е отказан.).
Отправен 3013, ниво 16, състояние 1, сървър JF, ред 1
BACKUP DATABASE се прекратява ненормално.
Тази грешка възниква въпреки факта, че сте стартирали SQL командата за архивиране с помощта на Windows Authentication (ключът -E) и акаунта на Windows като възможност за достъп и копиране на файлове в споделеното чрез Windows Explorer.
Причината, поради която това действие се проваля, е, че SQL командата се изпълнява в рамките на акаунта, в който се изпълнява услугата SQL Server. Когато преглеждате списъка с услуги на вашия компютър, най-вероятно ще видите услугата SQL Server, която се изпълнява като (колоната за влизане като) или локална система или услуга на мрежата, които са системни акаунти, които нямат достъп до мрежата.
В нашата система архивирането на командата за споделяне в мрежа не е успешно, защото имаме услугата SQL Server, работеща като локална система, която отново не може да стигне до мрежови ресурси.
За да позволим на SQL да архивира директно в мрежов дял, трябва да стартираме услугата SQL Server като локален акаунт, който има достъп до мрежови ресурси.
Редактирайте свойствата на услугата SQL Server и в раздела „Влизане“ конфигурирайте услугата да се изпълнява като алтернативна сметка, която има права за достъп до мрежата.
Когато натиснете OK, ще получите съобщение, че настройките няма да влязат в сила, докато услугата не бъде рестартирана.
Рестартирайте услугата.
Списъкът със услугите сега трябва да показва, че услугата SQL Server работи като профила, който сте конфигурирали.
Сега, когато изпълните командата за архивиране директно в мрежов дял:
SqlCmd -E -Q “Архивираща база данни MyDB To Disk =" \ t
Трябва да видите съобщение за успех:
Обработени 152 страници за база данни 'MyDB', файл 'MyDB' във файл 1.
Обработени 2 страници за база данни 'MyDB', файл 'MyDB_log' във файл 1.
BACKUP DATABASE успешно обработи 154 страници за 0.503 секунди (2.493 МБ / сек).
С архивния файл в директорията за споделяне в мрежата:
Съображения за споделяне в мрежата
Важно е да се отбележи, че командата за архивиране очаква да може да се свързва директно към споделеното мрежово съдържание, без да бъдете подканени за идентификационни данни. Профилът, в който сте конфигурирали услугата SQL Server, който трябва да работи, трябва да има надеждна връзка с мрежовия дял, където съответните идентификационни данни позволяват достъп, в противен случай може да възникне такава грешка:
Msg 3201, ниво 16, състояние 1, сървър JF, ред 1
Не може да се отвори устройството за архивиране "\ _ \ _ \ _ \ _ 192.168.16.55BackupDatabasesMyDB.bak. Грешка в операционната система 1326 (неуспех при влизане в системата: неизвестно потребителско име или лоша парола.).
Отправен 3013, ниво 16, състояние 1, сървър JF, ред 1
BACKUP DATABASE се прекратява ненормално.
Тази грешка показва, че потребителското име и паролата на профила не са приети от мрежовия дял и командата е неуспешна.
Друг въпрос, който трябва да имате предвид, е, че архивирането се извършва директно към мрежов ресурс, така че всяка хълцане в мрежовата връзка може да доведе до неуспех на архивирането. Поради тази причина трябва да архивирате само в мрежови местоположения, които са стабилни (т.е. вероятно не са VPN).
Последици за сигурността
Както бе споменато по-рано, за предпочитане е използването на метода, където архивирате локално и след това да копирате в мрежов дял, тъй като ви позволява да изпълнявате SQL услуга като акаунт само с достъп до локална система.
Като пускате услугата като алтернативна сметка, отваряте вратата за потенциални проблеми със сигурността. Например, злонамерен SQL скрипт може да се изпълни под алтернативната сметка и да атакува мрежовите ресурси. Освен това, всички промени в съответния профил (промени в паролата / изтичане или изтриване / деактивиране на профила) ще доведат до неуспешно стартиране на услугата SQL Server.
Важно е да имате предвид тези точки, ако използвате SQL Server, като използвате алтернативна сметка. Въпреки че не се показват ограничители, ако се вземат подходящи предпазни мерки, трябва да помислите за добавяне на допълнително пространство на твърдия диск и след това да реализирате местното архивиране и копиране, за да можете да стартирате SQL услугата с помощта на локален профил.