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