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

Откуда:
Сообщений: 148
Почему-то со старой базы остался по умолчанию, вручную меняешь - путь не запоминается и поэтому каждый раз при бэкапе нужно выбирать путь по новой. Есть солюшн по решению проблемы?
5 авг 11, 13:25    [11076185]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
Raoul
Member

Откуда:
Сообщений: 177
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQLnnn.MSSQLSERVER\MSSQLServer

Там редактировать параметр BackupDirectory

Если инстанс не дефолтный, то будет не MSSQLnnn.MSSQLSERVER, а MSSQLnnn.InstanceName
5 авг 11, 13:31    [11076222]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
kosyakla,
vsdbcmd генерит такой код для бэкапа
IF (DB_ID(N'$(DatabaseName)') IS NOT NULL)
	BEGIN
		DECLARE @rc      int,                       -- return code
				@fn      nvarchar(4000),            -- file name to back up to
				@dir     nvarchar(4000)             -- backup directory

		EXEC @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory', @dir output, 'no_output'

		IF (@dir IS NULL)
		BEGIN 
			EXEC @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @dir output, 'no_output'
		END

		IF (@dir IS NULL)
		BEGIN
			EXEC @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\Setup', N'SQLDataRoot', @dir output, 'no_output'
			SELECT @dir = @dir + N'\Backup'
		END

		SELECT  @fn = @dir + N'\' + N'$(DatabaseName)' + N'-' + 
				CONVERT(nchar(8), GETDATE(), 112) + N'-' + 
				RIGHT(N'0' + RTRIM(CONVERT(nchar(2), DATEPART(hh, GETDATE()))), 2) + 
				RIGHT(N'0' + RTRIM(CONVERT(nchar(2), DATEPART(mi, getdate()))), 2) + 
				RIGHT(N'0' + RTRIM(CONVERT(nchar(2), DATEPART(ss, getdate()))), 2) + 
				N'.bak' 
				BACKUP DATABASE [$(DatabaseName)] TO DISK = @fn
	END

GO
5 авг 11, 13:45    [11076327]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Поменял путь к бэкапу в реестре...что-то всё равно льет в старое место :-(...Может он в БД самой хранит путь?
8 авг 11, 03:32    [11083568]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
Glory
Member

Откуда:
Сообщений: 104751
kosyakla
Поменял путь к бэкапу в реестре...что-то всё равно льет в старое место

Что за команда такая "льет" ?
8 авг 11, 10:15    [11083956]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
kosyakla
Member

Откуда:
Сообщений: 148
то когда жмешь Tasks->Backup. Там указан старый путь всё равно. Делаю delete и указываю нужный. После повторной операции опять старый путь указывается
9 авг 11, 05:17    [11088994]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Ken@t
kosyakla,
vsdbcmd генерит такой код для бэкапа
IF (DB_ID(N'$(DatabaseName)') IS NOT NULL)
	BEGIN
		DECLARE @rc      int,                       -- return code
				@fn      nvarchar(4000),            -- file name to back up to
				@dir     nvarchar(4000)             -- backup directory

		EXEC @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory', @dir output, 'no_output'

		IF (@dir IS NULL)
		BEGIN 
			EXEC @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'DefaultData', @dir output, 'no_output'
		END

		IF (@dir IS NULL)
		BEGIN
			EXEC @rc = [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\Setup', N'SQLDataRoot', @dir output, 'no_output'
			SELECT @dir = @dir + N'\Backup'
		END

		SELECT  @fn = @dir + N'\' + N'$(DatabaseName)' + N'-' + 
				CONVERT(nchar(8), GETDATE(), 112) + N'-' + 
				RIGHT(N'0' + RTRIM(CONVERT(nchar(2), DATEPART(hh, GETDATE()))), 2) + 
				RIGHT(N'0' + RTRIM(CONVERT(nchar(2), DATEPART(mi, getdate()))), 2) + 
				RIGHT(N'0' + RTRIM(CONVERT(nchar(2), DATEPART(ss, getdate()))), 2) + 
				N'.bak' 
				BACKUP DATABASE [$(DatabaseName)] TO DISK = @fn
	END

GO


Что-то не могу найти данную процедуру...не укажите полный путь?

Кстати...у нас лай версия сервера - бэкапов по JOB нет...Можно ведь и сторонними скриптами запустить функцию, которая сделает бэкап?
9 авг 11, 05:27    [11088997]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
Glory
Member

Откуда:
Сообщений: 104751
kosyakla
то когда жмешь Tasks->Backup. Там указан старый путь всё равно. Делаю delete и указываю нужный. После повторной операции опять старый путь указывается

Что вернет
EXEC [master].[dbo].[xp_instance_regread] N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory'
9 авг 11, 10:11    [11089488]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
kosyakla
Member

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

d:\Backup

это куда надо...однако всегда проставляется путь: d:\program files\mssql\backup

в общем странно...
10 авг 11, 11:28    [11096062]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Ещё вопрос возник по ходу...А Чем можно редактировать файлы .bak - бэкаты базы?

Просто например база реально весит 100мб, а её бэкавод в файле уже 100 штук...естественно размер возрос...можно старые из этого файла удалить каким-нибудь способом?
10 авг 11, 11:30    [11096077]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
kosyakla
Ещё вопрос возник по ходу...А Чем можно редактировать файлы .bak - бэкаты базы?
Никак.

kosyakla
Просто например база реально весит 100мб, а её бэкавод в файле уже 100 штук...естественно размер возрос...можно старые из этого файла удалить каким-нибудь способом?
Ничем. Не надо в один файл писать 100 бэкапов.
10 авг 11, 11:39    [11096166]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Гавриленко Сергей Алексеевич,

Разобрался...Но тут возникла проблема..Из ТОДА выполняю команду BACKUP DATABASE DB TO DISK = 'c:\backup\base.bak'

бэкап делается отлично...пытаюсь это же выполнить из под скрипта perl:

my $sth = $dbh->prepare("BACKUP DATABASE DB TO DISK = 'c:\backup\base.bak'");
$sth->execute();

бэкап создается, но после окончания удаляется с диска...Не сталкивались с такой проблемой?
11 авг 11, 12:54    [11103237]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
kosyakla
бэкап делается отлично...пытаюсь это же выполнить из под скрипта perl:

my $sth = $dbh->prepare("BACKUP DATABASE DB TO DISK = 'c:\backup\base.bak'");
$sth->execute();

бэкап создается, но после окончания удаляется с диска...Не сталкивались с такой проблемой?
Т.е. вы считаете, что во время выполнения бэкапа ошибок произойти не может, поэтому даже и не пытаетесь делать обработку ошибок?
11 авг 11, 12:56    [11103252]     Ответить | Цитировать Сообщить модератору
 Re: путь записи бэкапа  [new]
kosyakla
Member

Откуда:
Сообщений: 148
Ошибок не происходит. Просто код упростил
12 авг 11, 04:43    [11107205]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить