Восстановление базы 1С SQL

Модели восстановление базы данных в MS SQL существует две «простая» и «полная». Отличаются они тем, что в полной модели восстановления ведется еще и бэкап журнала транзакций. Рассмотрим восстановление базы 1С в MS SQL на примере простой модели восстановления.

Бэкапы баз данных MS SQL хранятся в файлах с расширением .bak. Сами бэкапы баз тоже бывают двух типов: полный бэкап и разностный бэкап. В полном бэкапе содержится полная копия базы данных, а в разностном только изменения внесенные в базу с момента полного бэкапа.

Восстанавливаем полный бэкап.

В Microsoft SQL Server Managment Studio создаем базу данных в которую будет выполнятся восстановление. Как настроить базу в MS SQL для 1С рассмотренно .

Выбираем созданную базу и в контекстном меню переходим Задачи — Восстановить — База данных.

Выбираем источник восстановления «С устройства» и указываем путь к файлу бэкапа. После добавления файла бэкапа отмечаем галочкой набор данных для восстановления.

Слева в меню «Выбор страницы» переходим к пункту «Параметры». В пункте параметры восстановления отмечаем «Перезаписать существующую базу данных (WITH REPLACE)».

Если восстанавливаете только полный бэкап, то в разеде состояние восстановления оставляем пункт «Оставить базу готовой к использованию»

Если далее планируется восстанавливать еще и разностный бэкап, то в разеде состояние восстановления отмечаем «Оставить базу данных в неработающем состоянии…».

Жмем ОК и дожидаемся сообщения о завершении восстановления.

Восстанавливаем разностный бэкап.

Снова в целевой базу данных выбираем из контекстного меню Задачи — Восстановить — База данных.

Указываем источник восстановления. Выбираем файл .bak разностного бэкапа.

На странице Параметры настройки оставляем как есть. В разделе «Состояние восстановления» отмечен пункт «Оставить базу готовой к использованию…».

Жмем ОК, дожидаемся завершения и переходим к добавлению базы на сервер 1С.

Добавляем базу на сервер 1С.

Запускаем в 1С настройку добавление информационной базы и выбираем пункт «Создание новой информационной базы»

На следующем шаге должен быть отмечен пункт «Создание информационной базы без конфигурации..»

Вписываем имя базы и указываем тип расположения информационной базы «На сервере 1С предприятия»

Указываем настройки для подключения к базе сервера MS SQL

Далее оставляем настройки как есть и жмем Готово. База добавлена — запускаем 1С и проверяем работоспособность.

фирма 1С:

Предварительное тестирование 1C:Предприятия 8.2.15 при работе MS SQL Server 2012 RTM каких либо существенных проблем не выявило. Информационная база создается и работает без ошибок. Ошибка при обновлении конфигурации, связанная с использованием процедуры sp_dboption для перевода базы в SINGLE USER режим на дальнейшую работу не влияет. Её можно избежать создав эту процедуру вручную в базе master. Скрипт создания процедуры прилагается.

/****** Object: StoredProcedure . Script Date: 21.03.2012 7:33:37 ******/

CREATEprocedure.— 1999/08/09 18:25

@dbnamesysname=NULL,— database name to change

@optnamevarchar(35)=NULL,— option name to turn on/off

@optvaluevarchar(10)=NULL— true or false

declare@dbidint— dbid of the database

declare@catvalueint— number of category option

declare@optcountint— number of options like @optname

declare@allstatoptsint— bit map off all options stored in sysdatqabases.status

— that can be set by sp_dboption.

declare@alloptoptsint— bit map off all options stored in sysdatqabases.status

— that can be set by sp_dboption.

declare@allcatoptsint— bit map off all options stored in sysdatqabases.category

— that can be set by sp_dboption.

declare@exec_stmtnvarchar(max)

declare@fulloptnamevarchar(35)

declare@alt_optnamevarchar(50)

declare@alt_optvaluevarchar(30)

declare@optnameInvarchar(35)

select@optnameIn=@optname

,@optname=LOWER(@optnamecollateLatin1_General_CI_AS)

— If no @dbname given, just list the possible dboptions.

— Only certain status bits may be set or cleared by sp_dboption.

— Get bitmap of all options that can be set by sp_dboption.

select@allstatopts=numberfrommaster.dbo.spt_valueswheretype=’D’

andname=’ALL SETTABLE OPTIONS’

select@allcatopts=numberfrommaster.dbo.spt_valueswheretype=’DC’

andname=’ALL SETTABLE OPTIONS’

select@alloptopts=numberfrommaster.dbo.spt_valueswheretype=’D2′

andname=’ALL SETTABLE OPTIONS’

if@dbnameisnull

select’Settable database options:’=name

where (type=’D’

andnumber&@allstatopts<> 0

andnumbernotin(0,@allstatopts))— Eliminate non-option entries

or(type=’DC’

andnumber&@allcatopts<> 0

andnumbernotin(0,@allcatopts))

or(type=’D2′

andnumber&@alloptopts<> 0

andnumbernotin(0,@alloptopts))

return (0)

— Verify the database name and get info

select@dbid=dbid

wherename=@dbname

— If @dbname not found, say so and list the databases.

if@dbidisnull

raiserror(15010,-1,-1,@dbname)

print’ ‘

select’Available databases:’=name

return (1)

— If no option was supplied, display current settings.

if@optnameisnull

select’The following options are set:’=v.name

frommaster.dbo.spt_valuesv,master.dbo.sysdatabasesd

whered.name=@dbname

and((number&@allstatopts<> 0

andnumbernotin(-1,@allstatopts)

andv.type=’D’

and(v.number&d.status)=v.number)

or(number&@allcatopts<> 0

andnumbernotin(-1,@allcatopts)

andv.type=’DC’

andd.category&v.number<> 0)

or(number&@alloptopts<> 0

andnumbernotin(-1,@alloptopts)

andv.type=’D2′

andd.status2&v.number<> 0))

return(0)

if@optvalueisnotnullandlower(@optvalue)notin(‘true’,’false’,’on’,’off’)

raiserror(15241,-1,-1)

return (1)

— Use @optname and try to find the right option.

— If there isn’t just one, print appropriate diagnostics and return.

select@optcount=count(*),@fulloptname=min(name)

wherelower(namecollateLatin1_General_CI_AS)like’%’+@optname+’%’

and((type=’D’

andnumber&@allstatopts<> 0

andnumbernotin(-1,@allstatopts))

or(type=’DC’

andnumber&@allcatopts<> 0

andnumbernotin(-1,@allcatopts))

or(type=’D2′

andnumber&@alloptopts<> 0

andnumbernotin(-1,@alloptopts)))

— If no option, show the user what the options are.

if@optcount= 0

raiserror(15011,-1,-1,@optnameIn)

print’ ‘

select’Settable database options:’=name

where (type=’D’

andnumber&@allstatopts<> 0

andnumbernotin(-1,@allstatopts))— Eliminate non-option entries

or(type=’DC’

andnumber&@allcatopts<> 0

andnumbernotin(-1,@allcatopts))

or(type=’D2′

andnumber&@alloptopts<> 0

andnumbernotin(-1,@alloptopts))

return (1)

— If more than one option like @optname, show the duplicates and return.

if@optcount> 1

raiserror(15242,-1,-1,@optnameIn)

print’ ‘

selectduplicate_options=name

wherelower(namecollateLatin1_General_CI_AS)like’%’+@optname+’%’

and((type=’D’

andnumber&@allstatopts<> 0

andnumbernotin(-1,@allstatopts))

or(type=’DC’

andnumber&@allcatopts<> 0

andnumbernotin(-1,@allcatopts))

or(type=’D2′

andnumber&@alloptopts<> 0

andnumbernotin(-1,@alloptopts))

)

return (1)

— Just want to see current setting of specified option.

if@optvalueisnull

selectOptionName=v.name,

CurrentSetting=(case

when (((v.number&d.status)=v.number

andv.type=’D’)

or(d.category&v.number<> 0

andv.type=’DC’)

or(d.status2&v.number<> 0

andv.type=’D2′)

)

then’ON’

(((v.number&d.status)=v.number

andv.type=’D’)

or(d.category&v.number<> 0

andv.type=’DC’)

or(d.status2&v.number<> 0

andv.type=’D2′)

)

then’OFF’

end)

frommaster.dbo.spt_valuesv,master.dbo.sysdatabasesd

whered.name=@dbname

and((v.number&@allstatopts<> 0

andv.numbernotin(-1,@allstatopts)— Eliminate non-option entries

andv.type=’D’)

or(v.number&@allcatopts<> 0

andv.numbernotin(-1,@allcatopts)— Eliminate non-option entries

andv.type=’DC’)

or(v.number&@alloptopts<> 0

andv.numbernotin(-1,@alloptopts)— Eliminate non-option entries

andv.type=’D2′)

)

andlower(v.name)=lower(@fulloptname)

return (0)

select@catvalue= 0

select@catvalue=number

wherelower(name)=lower(@fulloptname)

andtype=’DC’

— if setting replication option, call sp_replicationdboption directly

if (@catvalue<> 0)

select@alt_optvalue=(caselower(@optvalue)

when’true’then’true’

when’on’then’true’

else’false’

end)

select@alt_optname=(case@catvalue

when 1 then’publish’

when 2 then’subscribe’

when 4 then’merge publish’

elsequotename(@fulloptname,»»)

end)

select@exec_stmt=quotename(@dbname,'[‘)+’.dbo.sp_replicationdboption’

EXEC@exec_stmt@dbname,@alt_optname,@alt_optvalue

return (0)

z88; — call Alter Database to set options

— set option value in alter database

select@alt_optvalue=(caselower(@optvalue)

when’true’then’ON’

when’on’then’ON’

else’OFF’

end)

— set option name in alter database

select@fulloptname=lower(@fulloptname)

select@alt_optname=(case@fulloptname

when’auto create statistics’then’AUTO_CREATE_STATISTICS’

when’auto update statistics’then’AUTO_UPDATE_STATISTICS’

when’autoclose’then’AUTO_CLOSE’

when’autoshrink’then’AUTO_SHRINK’

when’ansi padding’then’ANSI_PADDING’

when’arithabort’then’ARITHABORT’

when’numeric roundabort’then’NUMERIC_ROUNDABORT’

when’ansi null default’then’ANSI_NULL_DEFAULT’

when’ansi nulls’then’ANSI_NULLS’

when’ansi warnings’then’ANSI_WARNINGS’

when’concat null yields null’then’CONCAT_NULL_YIELDS_NULL’

when’cursor close on commit’then’CURSOR_CLOSE_ON_COMMIT’

when’torn page detection’then’TORN_PAGE_DETECTION’

when’quoted identifier’then’QUOTED_IDENTIFIER’

when’recursive triggers’then’RECURSIVE_TRIGGERS’

when’default to local cursor’then’CURSOR_DEFAULT’

when’offline’then (case@alt_optvaluewhen’ON’then’OFFLINE’else’ONLINE’end)

when’read only’then (case@alt_optvaluewhen’ON’then’READ_ONLY’else’READ_WRITE’end)

when’dbo use only’then (case@alt_optvaluewhen’ON’then’RESTRICTED_USER’else’MULTI_USER’end)

when’single user’then (case@alt_optvaluewhen’ON’then’SINGLE_USER’else’MULTI_USER’end)

when’select into/bulkcopy’then’RECOVERY’

when’trunc. log on chkpt.’then’RECOVERY’

when’db chaining’then’DB_CHAINING’

else@alt_optname

end)

if@fulloptname=’dbo use only’

if@alt_optvalue=’ON’

ifdatabaseproperty(@dbname,’IsSingleUser’)= 1

raiserror(5066,-1,-1);

return (1)

ifdatabaseproperty(@dbname,’IsDBOOnly’)= 0

return (0)

if@fulloptname=’single user’

if@alt_optvalue=’ON’

ifdatabaseproperty(@dbname,’ISDBOOnly’)= 1

raiserror(5066,-1,-1);

return (1)

ifdatabaseproperty(@dbname,’IsSingleUser’)= 0

return (0)

select@alt_optvalue=(case@fulloptname

when’default to local cursor’then (case@alt_optvaluewhen’ON’then’LOCAL’else’GLOBAL’end)

when’offline’then»

when’read only’then»

when’dbo use only’then»

when’single user’then»

else@alt_optvalue

end)

iflower(@fulloptname)=’select into/bulkcopy’

if@alt_optvalue=’ON’

ifdatabaseproperty(@dbname,’IsTrunclog’)= 1

select@alt_optvalue=’RECMODEL_70BACKCOMP’

select@alt_optvalue=’BULK_LOGGED’

ifdatabaseproperty(@dbname,’IsTrunclog’)= 1

select@alt_optvalue=’SIMPLE’

select@alt_optvalue=’FULL’

iflower(@fulloptname)=’trunc. log on chkpt.’

if@alt_optvalue=’ON’

ifdatabaseproperty(@dbname,’IsBulkCopy’)= 1

select@alt_optvalue=’RECMODEL_70BACKCOMP’

select@alt_optvalue=’SIMPLE’

У вас возникли проблемы с базой данных и полным текстовым каталогом с сервера A на сервер B с помощью команды «sp_attach_db» в SQL Server 2005 SP3. Все файлы базы данных (данные, журнал, полнотекстовый каталог) были скопированы с сервера A на сервер B. Я предполагаю, что это действительно возможно и что мой синтаксис просто некорректен, но я не могу найти никаких примеров или хорошую документацию в любом месте. Вот какой-то псевдосинтакс, который я использую…

exec sp_attach_db ‘<database_name>’, ‘<database data file>’, ‘<database full text catalog folder>’, ‘<database log file>’

или в некотором примере.

exec sp_attach_db ‘database’, ‘C:\Database\Data\database_data.mdf’, ‘C:\Database\Data\FTData’, ‘C:\Databases\Logs\database_log.ldf’

Я получаю сообщение об ошибке «Невозможно открыть физический файл» из этой команды, и команда attach не работает. Если я удаляю папку полного каталога текста из команды sp_attach_db, база данных монтируется, но дает мне предупреждение, что она не может найти полный текстовый каталог. Что мне не хватает?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *