Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Дифференциальный бэкап БД MS SQL  [new]
belov13
Member

Откуда:
Сообщений: 3
Помогите, плз!
Делаю дифференциальный бэкап

declare @DevName nvarchar(max)
set @DevName = 'D:\Backup\dbYYYY.bak'
BACKUP DATABASE [dbYYYY] TO DISK = @DevName WITH DIFFERENTIAL
, NOFORMAT, NOINIT, NAME = N'dbYYYY Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10

но по указанному пути бэкапа нет, хотя завершается вроде как нормально
10 обработано.
20 обработано.
30 обработано.
40 обработано.
50 обработано.
60 обработано.
70 обработано.
80 обработано.
90 обработано.
Обработано 297144 страниц для базы данных "dbYYYY", файл "dbYYYY" для файла 1.
100 обработано.
Обработано 1876 страниц для базы данных "dbYYYY", файл "dbYYYY_log" для файла 1.
BACKUP DATABASE WITH DIFFERENTIAL успешно обработал 299020 страниц за 56.936 секунд (43.023 MБ/сек).
22 июл 16, 09:49    [19439829]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
belov13,

Выполните
RESTORE VERIFYONLY FROM DISK = @DevName


Если пройдет без ошибок значит бекап есть, но от вас спрятался )).
22 июл 16, 10:07    [19439945]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
belov13
но по указанному пути бэкапа нет
Путь то где смотрите, на сервере или у себя на компе? :-)
И зачем NOFORMAT, NOINIT?
И чего "нет", бакапа или файла? Файл то есть? На сервере, в пути D:\Backup?
"D" - не сетевой, нормальный диск?
А сервером не ошиблись?

В общем, варианты есть, но их немного, нетрудно всё проверить :-)
22 июл 16, 10:10    [19439961]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
gds
Если пройдет без ошибок значит бекап есть, но от вас спрятался )).
Да при бакапе ошибок не было, так что бакап есть, конечно, какие варианты? :-)
Я бф даже такое добавил:
RESTORE HEADERONLY FROM DISK = @DevName
22 июл 16, 10:13    [19439973]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
belov13
Member

Откуда:
Сообщений: 3
gds,

Действительно, он сформировался по пути C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\ и вместо имени иероглифы
Почему так?
22 июл 16, 11:24    [19440320]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37069
Потому что юникод.

set @DevName = N'D:\Backup\dbYYYY.bak' 
22 июл 16, 12:02    [19440585]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
belov13
Действительно, он сформировался по пути C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\ и вместо имени иероглифы
Почему так?
Вы бы добавили в свой скрипт PRINT @DevName перед командой бакап, что ли.

Ну не верю, что сервер пишет бакап с другим именем и в другую директорию на другой диск, так не бывает.
22 июл 16, 22:45    [19444127]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
alexeyvg
Ну не верю, что сервер пишет бакап с другим именем и в другую директорию на другой диск, так не бывает.

Ещё как бывает. Если сервер принял @DEvName за имя, то он положит бекап в Backup Default Folder + имя файла. Видимо у TCа C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\ - есть путь по умолчанию. Такое запросто может быть если Collate сервера не договорился с локалью Винды, соответственно путь переписал в UTF-8 иероглифами, а путь взял из настроек.
25 июл 16, 00:04    [19449230]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
gds
Такое запросто может быть если Collate сервера не договорился с локалью Винды
Ну, если бы путь с файлом были бы не латинскими буквами, тогда да, может быть, а тут же нечего искажать...
25 июл 16, 09:34    [19449587]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
o-o
Guest
gds
alexeyvg
Ну не верю, что сервер пишет бакап с другим именем и в другую директорию на другой диск, так не бывает.

Ещё как бывает. Если сервер принял @DEvName за имя, то он положит бекап в Backup Default Folder + имя файла.

за имя чего, имя файла?
по дефолтному пути сервер сложит бэкап только в случае отсутствия пути вообще.
и вы считаете, сервер "не заметил" слэши?
можете привести рабочее репро с какими-то специальными слэшами,
чтобы любой сервер их не замечал?
я хочу такое воспроизвести, но копируя код ТС-а и модифицируя лишь каталоги,
такого эффекта не наблюдаю. слэши у него правильные, сервер их видит и понимает, что это путь, а не "просто имя"
gds
Такое запросто может быть если Collate сервера не договорился с локалью Винды, соответственно путь переписал в UTF-8 иероглифами, а путь взял из настроек.

кто-кто переписал в UTF-8? коллэйшен?
мне казалось, это кодовая страница + правила сортировки.
или сервер переписал?
а чего ж тогда народ бьется за введением поддержки UTF-8 сервером?
наверное потому, что кроме UCS-2 никакой другой юникод сервер не поддерживает?
но тем не менее, он переписал в это самое неведомое ему UTF-8
---
а теперь картинкой показываю, что будет,
если я передам кириллицу неюникодом и север ее не поймет.
никаких иероглифов, на этапе ввода кириллица превращается в вопросительные знаки
и ни во что другое.
соответственно, ОС такое имя файла не примет:
The filename, directory name, or volume label syntax is incorrect

К сообщению приложен файл. Размер - 49Kb
26 июл 16, 10:07    [19455183]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31444
o-o
по дефолтному пути сервер сложит бэкап только в случае отсутствия пути вообще.

+1

o-o
я хочу такое воспроизвести, но копируя код ТС-а и модифицируя лишь каталоги,
такого эффекта не наблюдаю

Мне кажется, ТС не выкладывал репро, а просто написал своё "видение", в реальности же там просто бага в коде, и в всяких курсорах и циклах с строковыми "вычислениями" в @DevName кладётся имя без пути.
26 июл 16, 11:13    [19455594]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
o-o,

belov13
Действительно, он сформировался по пути C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\ и вместо имени иероглифы
Почему так?

Ответ ТСу был, потому что C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\ это путь по умолчанию.

Почему и как SQL Server передал set @DevName = 'D:\Backup\dbYYYY.bak', а Винда это восприняла "вместо имени иероглифы" это надо смотреть на окружении у ТСа.
Я тут лишь высказал свои предположения. Если они не правильные, вы их в праве обсуждать. Добавлю лишь то что встречался на практике с Win2003 + SQL 2005, когда Win2003 Eng без поддержки UniCode + нет поддержки русского языка как дополнительного (ну просто так был установлен). А SQL 2005 был происталирован с SQL_Latin1_General_CP1251_CI_AS и вот тогда проявлялись артефакты с именами файлов в ОС при указании не латинских символов (либо очень кривые и не понятные, либо файл отказывался создаваться).
Я тоже не очень понимаю как у ТСа это вышло, как минимум нет полных данных о версии OS (настройках, и т.п.) версии SQL, и т.п. Если у ТСа это повторяется постоянно, то лучше что бы он выложил репро или описал бы в деталях.
Как вариант ТС может посмотреть в логе sql server какая операция бекапа выполнялась и куда. там это логируется. Ну или как вариант в таблице msdb если конечно не делал COPYONLY.
27 июл 16, 10:28    [19460344]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
o-o
Guest
gds
Как вариант ТС может посмотреть в логе sql server какая операция бекапа выполнялась и куда. там это логируется. Ну или как вариант в таблице msdb если конечно не делал COPYONLY.

да в общем-то ему не помешало бы начать с backupset, backupmediafamily
там как раз и записана вся история его бэкапов:
select s.name,
		s.type,
		s.database_name,
		s.backup_start_date,
		f.physical_device_name,
		s.*
from msdb..backupset s join msdb..backupmediafamily f
     on s.media_set_id = f.media_set_id
where s.database_name = 'db0'  
      --and s.backup_start_date >= '20160727'
      --and s.type = 'I'

кстати, что вы имеете против copy_only?
такие бэкапы тоже попадают в историю, им даже будет записана единица в backupset.is_copy_only.
ну и пошариться в таблицах это доступнее, чем в еррорлоге рыться, в смысле прав.
----
вин сервер 2003 у нас есть, и как раз без всякого русского.
сейчас я им займусь и попробую сложить бэкап с кириллическим именем.
все равно никак не пойму, при чем тут серверный коллэйшен.
сервера с латинским коллэйшеном отлично понимают русский, если его передавать юникодом.
и одинаково не понимают национальные символы, когда они передаются неюникодом
и в контексте базы с коллэйшеном с отличной (от нац.) кодовой страницей:
все эти символы превращаются в вопросики, а не в иероглифы.
иероглифы это точно не сервер произел, вот что мне хотелось донести
27 июл 16, 11:01    [19460587]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
gds
Member

Откуда: Железнодорожный
Сообщений: 1842
Блог
o-o
кстати, что вы имеете против copy_only?

Уже ничего )). Просто с COPYONLY бекап не попадает в основную цепочку бекапов и почему-то подумалось что и логгироваться не будет..., а нет - будет.
27 июл 16, 11:39    [19460931]     Ответить | Цитировать Сообщить модератору
 Re: Дифференциальный бэкап БД MS SQL  [new]
o-o
Guest
ну вот и подтверждение моих слов.
вин сервер 2003, текущая кодовая страница 1252.
в контексте кириллической базы передаю кириллицу *неюникодом*, все ок:
backup database TEST
to disk = 'C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL_2008\MSSQL\Backup\test\test_бэкап.bak'

сервер понимает бэкапов путь и кладет с кириллицей в названии куда попросили.
а вот кто не воспринимает кириллицу, так это ДОС.
название файла бэкап.txt -- вопросики.
возможно, если б там стояла CP 866, какие-то кракозябры бы получились.
но при чем тут сервер, когда это фишки ОС-а?

К сообщению приложен файл. Размер - 85Kb
27 июл 16, 11:44    [19460998]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить