|
Backup SQL на сетевой диск | ☑ | ||
---|---|---|---|---|
0
Tanis
21.01.13
✎
11:50
|
Добрый день!
Подскажите, пожалуйста, как правильно сделать сохранение бэкапов на сетевой диск. SQL 2005. |
|||
1
shuhard
21.01.13
✎
11:51
|
(0) бат файлом/шагом плана с локального
|
|||
2
Tanis
21.01.13
✎
11:58
|
т.е?
|
|||
3
Tanis
21.01.13
✎
12:02
|
Я в скул запускаю
USE master EXEC sp_addumpdevice 'disk', 'Nw1', '\\Комп\1C_Backup' Он подключается в бэкап - девайсы, но потом при попытки входа на него пишет System.Data.SqlClient.SqlError: Cannot open backup device 'Nw1(\\Комп\1C_Backup)'. Operating system error 1326(Вход в систему не произведен: имя пользователя или пароль не опознаны.). (Microsoft.SqlServer.Smo) |
|||
4
Heckfy
21.01.13
✎
12:05
|
Запусти SQL под сетевой службой. Сетевой службе дать права модифай на сетевой каталог.
|
|||
5
Господин ПЖ
21.01.13
✎
12:09
|
(3) local system не умеет работать с сетью
|
|||
6
Heckfy
21.01.13
✎
12:11
|
(3) И это, удобнее намного планами обслуживания пользоваться. :)
|
|||
7
Иде я?
модератор
21.01.13
✎
12:11
|
ДЕлай бакап в локальный файл
и потом батников копируй |
|||
8
ssh2012
21.01.13
✎
12:12
|
(0) добавление к (1) - Бэкап создавай с помощью планов обслуживания (maintance plan), 1 шаг - создание бэкапа, 2 запуск bat файла, который выполняет копирование
|
|||
9
Heckfy
21.01.13
✎
12:13
|
(7) Вот зачем забор городить, если скуль сам умеет на сеть сливать.
ЗЫ: Кстати, базы тоже можно на сетевом ресурсе разместить. |
|||
10
Sammo
21.01.13
✎
12:16
|
Делай на локальный + отдельная job-а с копированием в сеть.
Плюс - есть локальный архив, если грохнут базу - не надо копировать из сети |
|||
11
ДенисЧ
21.01.13
✎
12:16
|
(9) Правильно. Лучше всего базы в сети держать... Ещё раскидать на несколько...
|
|||
12
ssh2012
21.01.13
✎
12:19
|
Да в облака сразу базы, чего там
|
|||
13
ZanderZ
21.01.13
✎
12:19
|
(9) сеть отвалиться останешься без копии
|
|||
14
Tanis
21.01.13
✎
12:29
|
Копии будут, как тогда из SQL сливать в сеть.
|
|||
15
Tanis
21.01.13
✎
13:10
|
пошагово может кто-нибудь написать? для чайников
|
|||
16
Heckfy
21.01.13
✎
13:31
|
(15) Домен есть? И там и там винда?
|
|||
17
Kavar
21.01.13
✎
13:33
|
(15) Делаешь задание и бэкапиш базу на локальный диск.
затем батником архивируешь и перемещаешь в сеть. все. |
|||
18
pessok
21.01.13
✎
13:35
|
в (5) написать все и даже больше, о чем тут еще полемика?
|
|||
19
pessok
21.01.13
✎
13:35
|
(17) какой ужас...
|
|||
20
pessok
21.01.13
✎
13:36
|
fix:(18) в (5) написано
|
|||
21
Smallrat
21.01.13
✎
13:37
|
(0) делаешь план обслуживания с сохранением в локальный каталог.
Делаешь батник xcopy /d /e d:\1C_Arhiv\*.* \\srv_backup\1C_Arhiv\ killdateparam.vbs /path:"d:\1C_Arhiv" /killdate:10 /recur:true прописываешь его в планировщик заданий killdateparam можно взять тут: http://i-g-d-a.narod.ru/lan/kill_old_files.html в итоге на локальном диске будут архивы десятидневной давности и в сети все чтобы были. |
|||
22
Maxus43
21.01.13
✎
13:39
|
в maintance plan всё сделать, зачем мозг выносить? там при указании куда делать бэкап добавляем сетевой диск, так же указывается и (21) там, сколько по времени их хранить, и много чего другого в планах мышкой сделать не напрягая мозжечек излишними флуктуациями
|
|||
23
fisher
21.01.13
✎
13:39
|
(15) Служба сиквела должна стартовать под доменной учеткой с правами на сетевой ресурс
|
|||
24
Maxus43
21.01.13
✎
13:41
|
(23) юзера для сетевого диска указывать там же (22).
Что-то вы господа всё усложняете |
|||
25
Оболтус
21.01.13
✎
13:48
|
Я тоже батниками настроил.
|
|||
26
Maxus43
21.01.13
✎
13:54
|
(24) + поправка, юзера не надо, только путь к шаре. эзер скл агента используется конечно
|
|||
27
fisher
21.01.13
✎
14:03
|
(26) :) Ну дык см. (23)
|
|||
28
Maxus43
21.01.13
✎
14:08
|
(27) да я ругался что батники, скрипты и т.д. вешают... штатными средствами всё легче и веселей)
|
|||
29
olegves
21.01.13
✎
14:09
|
(15) поиск на sql.ru "backup базы на сетевой диск"
получишь вариантов кучу и выбирай, что хочешь |
|||
30
Tanis
21.01.13
✎
14:20
|
не работают пока просмотренные варианты, по настройке скул с сайтов по скул
|
|||
31
Оболтус
22.01.13
✎
07:32
|
Батники хороши тем, что имеем универсальный механизм и для SQL Express.
|
|||
32
Tanis
11.02.13
✎
10:52
|
Добрый день!
Можно поподробнее о настройке maintance plan? Как там настроить Бэкап и его слив в сеть. |
|||
33
MaxS
11.02.13
✎
10:57
|
(21) Можно уточнение по этому скрипту, который удаляет всё, что старше 10 дней?
Если бэкап сломался и не делается, а удаление исправно работает, через 10 дней получим полное отсутствие бэкапов? |
|||
34
Smallrat
11.02.13
✎
11:07
|
(33) хороший вопрос... по идее, если сломается бекап - у нас останется всё на сетевом диске.
а если сломается сетевой диск... гмм. надо наверное дописать по кодам возврата успешного копирования |
|||
35
Smallrat
11.02.13
✎
11:33
|
(33)(34) вот так
xcopy /d /e d:\1C_Arhiv\*.* \\srv_backup\1C_Arhiv\ if errorlevel 1 goto exit killdateparam.vbs /path:"d:\1C_Arhiv" /killdate:10 /recur:true :exit |
|||
36
Tanis
11.02.13
✎
11:58
|
а по настройке maintance plan?
|
|||
37
Smallrat
11.02.13
✎
12:11
|
||||
38
Tanis
11.02.13
✎
12:39
|
Спасибо!
Только это не совсем то, что просил. Бэкапы настроены, в JOB. Меня интересует их архивация и сохранение в сеть (или копирование). Авторы выше, писали что это все можно сделать в Планах. |
|||
39
Tanis
11.02.13
✎
12:40
|
а в целом полезная ссылка.
|
|||
40
Минона
11.02.13
✎
12:46
|
(0) Создаете юзера SQLBackup, желательно админом сделать
на сетевую папку этому юзеру даете полные права (у вас домен или что?) На SQL сервере идёте сюда: Администрирование - Службы Ищем "Агент SQL Server" (или по аглицки) Свойства - Вход в систему - С учетной записью тут указываем нашего юзера SQLBackup и вводим пароль перезапускаем службу, запускаем backup и проверяем |
|||
41
Tanis
11.02.13
✎
13:01
|
Да домен.
А запуск службы самого SQL, от системной делать? я пробовал запускать службу SQL от своей учетки, тогда Backup devices устанавливается на сетевой диск и работает. Но не стартует агент сервера. А если агента запустить с Админской учеткой, то Бэкап сразу из Job настраивать? |
|||
42
Минона
11.02.13
✎
13:08
|
(41) Бэкап настраивать в maintance plan (планы обслуживания)
В таком случае создаются Jobs (задания), они как раз и видны если смотреть в "SQL Server Management Studio" внизу у Агента. Вот как раз они и будут запускаться под логином службы "Агент SQL" От кого запущен сам SQL - это то от чьего имени будет работать сам движок и ручные запросы. А Задачи запусает Агент (по расписанию). |
|||
43
Минона
11.02.13
✎
13:10
|
(42) +
Запустите сам SQL тоже под записью юзера SQLBackup. Меньше проблем будет. |
|||
44
Tanis
11.02.13
✎
13:50
|
А не лучше чтоб SQL работал по системной? А то говорят, что может учетку выбивать, если под учеткой запускать.
|
|||
45
Минона
11.02.13
✎
13:54
|
(44) 4 года - полет нормальный
по крайней мере у вас ручные запросы и задания будут работать одинаково - удобнее для отладки |
|||
46
Tanis
11.02.13
✎
14:05
|
Хорошо, спасибо.
Вечером буду пробовать, когда все покинут базы. И если системщики дадут запуск SQL от учетки. |
|||
47
Оболтус
11.02.13
✎
14:08
|
У меня такой скрипт:
Получаем текущую дату в sDateTime: for /f "delims=." %%i in ('wmic.exe OS get LocalDateTime ^| find "."') do set sDateTime=%%i echo %sDateTime% Устанавливаем путь к sql скрипту, который будет выполняться для копирования (в Экспрессе нет плана, если не Экспресс, то это не актуально): set sScriptBackup="D:\!SQL backup\scripts\Backup_Test_1C.sql" echo %sScriptBackup% Устанавливаем каталог для архивов и имя базы (для понятного наименования файла): set sDir=D:\!SQL backup\local\ echo %sDir% set sNameBase=Test_1C echo %sNameBase% Выполняем sql инструкцию: sqlcmd -S.\SQLExpress -i%sScriptBackup% Упаковываем архив в 7-zip: "C:\Program Files\7-Zip\7z.exe" a "%sDir%%sNameBase%\%sNameBase%_%sDateTime%.7z" "%sDir%%sNameBase%\%sNameBase%.bak" Если архив существует, то удаляем архив: if exist "%sDir%%sNameBase%\%sNameBase%_%sDateTime%.7z" del "%sDir%%sNameBase%\%sNameBase%.bak" Копируем в каталог сети: copy "%sDir%%sNameBase%\%sNameBase%_%sDateTime%.7z" "\\server\BackUP_1c\Service\Test_1C\SQL\%sNameBase%_%sDateTime%.7z" |
|||
48
Оболтус
11.02.13
✎
14:11
|
SQL скрипт:
*АРХИВ*/ declare @backupname varchar(MAX) declare @sql varchar(MAX) declare @DBname varchar(MAX) declare @Dir varchar(MAX) --для удобства выносим имя базы в константы SET @DBname = 'Test_1C' SET @Dir = 'D:\!SQL backup\local\'+@DBname+'\' --генерим имя архивной базы и заменяем : на - в имени SET @backupname = @DBname --записываем команду в строку SET @sql = 'BACKUP DATABASE ' + '[' + @DBname + ']' + 'TO DISK = N'+''''+ @Dir+@backupname + '.bak''' + ' WITH NOFORMAT, INIT, NAME = N'+''''+@DBname+'-Full Database Backup'''+', SKIP, NOREWIND, NOUNLOAD, STATS = 10' --исполняем команду exec sp_sqlexec @sql /*ОБСЛУЖИВАНИЕ*/ Use [Test_1C] exec sp_msforeachtable N'UPDATE STATISTICS ? WITH FULLSCAN'/*статистика*/ go DBCC UPDATEUSAGE ([Test_1C]) go DBCC FREEPROCCACHE/* очистка кеша выполнения запросов*/ go sp_msforeachtable N'DBCC DBREINDEX (''?'')'/*реиндексация индексов*/ go /*дефрагментация индексов*/ /*sp_msforeachtable N'DBCC INDEXDEFRAG ([Test_1C], ''?'')'*/ Use [Test_1C] SET NOCOUNT ON; DECLARE @objectid int; DECLARE @indexid int; DECLARE @partitioncount bigint; DECLARE @schemaname nvarchar(130); DECLARE @objectname nvarchar(130); DECLARE @indexname nvarchar(130); DECLARE @partitionnum bigint; DECLARE @partitions bigint; DECLARE @frag float; DECLARE @command nvarchar(4000); -- Conditionally select tables and indexes from the sys.dm_db_index_physical_stats function -- and convert object and index IDs to names. SELECT object_id AS objectid, index_id AS indexid, partition_number AS partitionnum, avg_fragmentation_in_percent AS frag INTO #work_to_do FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'LIMITED') WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0; -- Declare the cursor for the list of partitions to be processed. DECLARE partitions CURSOR FOR SELECT * FROM #work_to_do; -- Open the cursor. OPEN partitions; -- Loop through the partitions. WHILE (1=1) BEGIN; FETCH NEXT FROM partitions INTO @objectid, @indexid, @partitionnum, @frag; IF @@FETCH_STATUS < 0 BREAK; SELECT @objectname = QUOTENAME(o.name), @schemaname = QUOTENAME(s.name) FROM sys.objects AS o JOIN sys.schemas as s ON s.schema_id = o.schema_id WHERE o.object_id = @objectid; SELECT @indexname = QUOTENAME(name) FROM sys.indexes WHERE object_id = @objectid AND index_id = @indexid; SELECT @partitioncount = count (*) FROM sys.partitions WHERE object_id = @objectid AND index_id = @indexid; -- 30 is an arbitrary decision point at which to switch between reorganizing and rebuilding. IF @frag < 30.0 SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REORGANIZE'; IF @frag >= 30.0 SET @command = N'ALTER INDEX ' + @indexname + N' ON ' + @schemaname + N'.' + @objectname + N' REBUILD'; IF @partitioncount > 1 SET @command = @command + N' PARTITION=' + CAST(@partitionnum AS nvarchar(10)); EXEC (@command); PRINT N'Executed: ' + @command; END; -- Close and deallocate the cursor. CLOSE partitions; DEALLOCATE partitions; -- Drop the temporary table. DROP TABLE #work_to_do; GO DBCC shrinkdatabase(N'Test_1C', TRUNCATEONLY); /*усечение всей базы*/ CHECKPOINT; /*Записывает все данных из буферного кэша в текущей базе данных на диск*/ use [Test_1C] DBCC SHRINKFILE (N'Test_1C', 101); /*усечение только файла данных до размера 101 мб*/ use [Test_1C] DBCC SHRINKFILE (N'Test_1C_Log', 0); /*усечение только файла транзакций до размера 0 мб*/ CHECKPOINT; /*Записывает все данных из буферного кэша в текущей базе данных на диск*/ |
|||
49
Tanis
12.02.13
✎
08:30
|
(40) Запуск с SQL агента с админской учеткой домена не помог, пишет отказано в доступе.
Под локальной (самого компа) админской учеткой не запускается. службы SQL и SQL агент, не запускаются вместе под одной админской учеткой домена. |
|||
50
Tanis
12.02.13
✎
09:02
|
Видимо придется саму службу SQL запускать под админской учеткой, но как тогда агента под ней запустить. А может еще какая-нибудь служба не запущена. Несколько служб относящиеся к SQL почему-то отключены.
|
|||
51
Оболтус
12.02.13
✎
09:41
|
Кстати, а кто что может о таком скрипте сказать:
net session /delete /y (обрываем сессии) net stop /y server (что бы подключится не могли) C:\WINDOWS\system32\taskkill.exe /F /IM 1cv8.exe (прибиваем теминально запущенные 1с(если есть такие)) C:\arh1c.bat net start /y server (запускаем службу сервер) Подойдет для архивирования 7-ных баз (терминала нет, SQL и расшаренная папка). Или это только для терминала? |
|||
52
Tanis
12.02.13
✎
11:08
|
На сколько критичен запуск SQL и SQL агента под разными учетками?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |