Как да архивирате SQL бази данни към мрежово споделяне

Съдържание:

Как да архивирате SQL бази данни към мрежово споделяне
Как да архивирате SQL бази данни към мрежово споделяне

Видео: Как да архивирате SQL бази данни към мрежово споделяне

Видео: Как да архивирате SQL бази данни към мрежово споделяне
Видео: How Not To Die: The Role of Diet in Preventing, Arresting, and Reversing Our Top 15 Killers - YouTube 2024, Април
Anonim

Архивирането на SQL бази данни редовно е задължително. Вече сме обработили начини за лесно архивиране на всичките ви SQL сървърни бази данни на локален твърд диск, но това не предпазва от неуспех на устройството и / или системата. Като допълнителен слой защита срещу този тип бедствие, можете да копирате или директно да създавате резервни копия на мрежово споделяне.

Архивиране на място и след това копиране в споделянето в мрежата

Предпочитаният и най-директен начин за изпълнение на тази задача е просто да създадете локално архивиране на база данни и след това да копирате съответния архивен файл в мрежово споделяне. Можете да направите това, като създадете партиден скрипт, който изглежда така:

SET LocalFolder=C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLBackup SqlCmd -E -Q “Backup Database MyDB To Disk=’%LocalFolder%MyDB.bak'” XCopy “%LocalFolder%MyDB.bak” “192.168.16.55BackupDatabases” /Z /V DEL “%LocalFolder%MyDB.bak”

Този скрипт прави следното (ред по ред):

  1. Задава променлива към локалната директория за архивиране на SQL.
  2. Създава SQL архив на MyDB (използвайки Windows Authentication) в локалната директория за архивиране на SQL.

  3. Копира локалния резервен файл в мрежово споделяне.
  4. Изтрива локалния резервен файл.

Отново, това е предпочитаният метод, защото работи извън кутията и вероятността за неуспех при архивирането е минимална, тъй като архивирането е създадено на локален диск. Ако обаче нямате достатъчно място на диска за съхраняване на локални копия на резервни копия, това действие ще се провали. В този случай ще трябва да добавите допълнително дисково пространство или резервно копие директно към дял на мрежата.

Създаване на резервно копие директно в мрежово споделяне

Обикновено, когато се опитвате да създадете резервно копие директно в мрежово споделяне чрез команда като:

SqlCmd -E -Q “Backup Database MyDB To Disk=’192.168.16.55BackupDatabasesMyDB.bak'”

По всяка вероятност ще получите грешка по следния начин:

Msg 3201, Level 16, State 1, Server JF, Line 1 Cannot open backup device ‘192.168.16.55BackupDatabasesMyDB.bak’. Operating system error 5(Access is denied.). Msg 3013, Level 16, State 1, Server JF, Line 1 BACKUP DATABASE is terminating abnormally.

Тази грешка възниква въпреки факта, че сте използвали командата за резервно копиране на SQL посредством Windows Authentication (превключвателя -E) и Windows акаунта като възможност за достъп и копиране на файлове в споделянето чрез Windows Explorer.

Причината, поради която това действие е неуспешно, е, че SQL командата се изпълнява в границите на профила, в който се изпълнява услугата на SQL Server. Когато прегледате списъка на услугите на вашия компютър, най-вероятно ще видите услугата SQL Server, изпълняваща се като (колоната Log On As), или локална система, или мрежова услуга, които са системни акаунти, които нямат мрежов достъп.
Причината, поради която това действие е неуспешно, е, че SQL командата се изпълнява в границите на профила, в който се изпълнява услугата на SQL Server. Когато прегледате списъка на услугите на вашия компютър, най-вероятно ще видите услугата SQL Server, изпълняваща се като (колоната Log On As), или локална система, или мрежова услуга, които са системни акаунти, които нямат мрежов достъп.

В нашата система архивирането на командата за споделяне на мрежата се провали, защото имаме услугата SQL Server, изпълнявана като Local System, която отново не може да стигне до никакви мрежови ресурси.

За да позволим SQL да архивира директно към мрежово споделяне, трябва да стартираме услугата на SQL Server като локален акаунт, който има достъп до мрежови ресурси.
За да позволим SQL да архивира директно към мрежово споделяне, трябва да стартираме услугата на SQL Server като локален акаунт, който има достъп до мрежови ресурси.

Редактирайте свойствата на услугата SQL Server и в раздела "Вход" конфигурирайте услугата да работи като алтернативен акаунт, който има права за достъп до мрежата.

Когато натиснете OK, ще получите подкана, че настройките няма да влязат в сила, докато услугата не бъде рестартирана.
Когато натиснете OK, ще получите подкана, че настройките няма да влязат в сила, докато услугата не бъде рестартирана.
Рестартирайте услугата.
Рестартирайте услугата.
Сега списъкът с услуги трябва да показва, че услугата на SQL Server работи като конфигуриран акаунт.
Сега списъкът с услуги трябва да показва, че услугата на SQL Server работи като конфигуриран акаунт.
Сега, когато стартирате командата, за да направите резервно копие директно в дял на мрежата:
Сега, когато стартирате командата, за да направите резервно копие директно в дял на мрежата:

SqlCmd -E -Q “Backup Database MyDB To Disk=’192.168.16.55BackupDatabasesMyDB.bak'”

Трябва да видите съобщение за успех:

Processed 152 pages for database ‘MyDB’, file ‘MyDB’ on file 1. Processed 2 pages for database ‘MyDB’, file ‘MyDB_log’ on file 1. BACKUP DATABASE successfully processed 154 pages in 0.503 seconds (2.493 MB/sec).

С архивния файл сега в директорията на споделената мрежа:

Image
Image

Съображения за мрежовото споделяне

Важно е да се отбележи, че командата за архивиране очаква да може да се свърже директно с мрежовия дял, без да бъде подканена за идентификационни данни. Профилът, който сте конфигурирали, за да се изпълнява услугата на SQL Server, трябва да има доверена връзка с мрежовия дял, където съответните пълномощия позволяват достъп, в противен случай може да възникне грешка като това:

Msg 3201, Level 16, State 1, Server JF, Line 1 Cannot open backup device ‘192.168.16.55BackupDatabasesMyDB.bak’. Operating system error 1326(Logon failure: unknown user name or bad password.). Msg 3013, Level 16, State 1, Server JF, Line 1 BACKUP DATABASE is terminating abnormally.

Тази грешка показва, че потребителското име и паролата на акаунта не са били приети от мрежовия дял и командата е неуспешна.

Друг проблем, който трябва да имате предвид е, че архивирането се извършва директно към мрежов ресурс, така че всяко хълцане в мрежовата връзка може да доведе до неуспех на архива ви. Поради тази причина трябва да архивирате само местоположения на мрежи, които са стабилни (т.е. вероятно не са VPN).

Симптоми на сигурността

Както бе споменато по-рано, използването на метода, при който архивирате локално и след това копирате в мрежов дял, е предпочитан, тъй като ви позволява да стартирате SQL Service като акаунт само с локален системен достъп.

Като стартирате услугата като алтернативен профил, отваряте вратата към потенциални проблеми със сигурността. Например, злонамерен SQL скрипт може да се изпълнява под алтернативния акаунт и да атакува мрежовите ресурси. Освен това всички промени в съответния профил (промяна на паролата / изтичане на срока или изтриване / деактивиране на профила) ще доведат до невъзможност за стартиране на услугата на SQL Server.

Важно е да имате предвид тези точки, ако стартирате вашия SQL Server потребителски модел, като използвате алтернативен профил. Въпреки че не се показват тапи, ако се вземат подходящи предпазни мерки, трябва да обмислите добавянето на допълнително пространство на твърдия диск и след това да внедрите локалното архивиране и копиране, за да можете да стартирате SQL услугата, като използвате локален акаунт.

Препоръчано: