1с данный вариант программы не может работать с sql базой данных
Иногда приходится столкнуться с ситуацией, когда плоды многолетней работы, находящиеся в SQL-базе данных оказываются под угрозой. Эта статья о том, как не допустить потерю данных, а в случае, если это всё-таки произошло, как восстановить данные из того, что осталось от некогда нормальной базы.
Итак, приступим. Ситуация следующая: имеется сервер с запущенной на нем 1С+SQL. Во время работы SQL базы рубанули питание. Результат плачевный: база находится в состоянии suspect, и когда 1с пытается к ней зацепиться, выдается ошибка, что мол соединиться невозможно т.к. база помечена suspect for recovery. Этот режим в принципе означает, что MSSQL Server попытается восстановить базу своими средствами. Я не стал ни чего трогать и оставил все на ночь, в надежде, что к утру база восстановится, но и утром было то же самое, и к базе, стало быть, ни как не подобраться. Backup по закону подлости имеется, но он трехдневной давности, плюс имеется куча документов которые проводятся лишь по базе, а по бумажным документам их нет, т.е. возможности вручную восстановить документы нет. Потратив кучу сил, и нервов, (которые, как известно не восстанавливаются :)), я пришел к следующей последовательности действий, необходимых для восстановления базы.
1) Основной принцип поначалу – не навреди. Глушим SQL server и копируем *.mdf и *.ldf файлы от базы в сторону.
2) В принципе, бывает, что состояние suspect возникает из-за того, что поменялись пути к файлам с базой (например, добавился новый диск в системе, который потом убрали, переименовали папку с базой и т.д.). Затем, конечно же, пути восстановили, но база все равно остается помеченной как suspect. Вот что мы делаем:
3) Запускаем SQL Server.
4) Пробуем подключить базу через Enterprise Manager:
Правой кнопкой по Databases, в появившемся меню выбираем All tasks->Attach database, затем в появившемся диалогов окне выбираем файл с базой (*.mdf) и устанавливаем необходимые параметры.
5) или через Query Analyser примерно такой командой:
a. sp_attach_db @dbname = 'DemoXMB',
b. @filename1 = 'E:\Data\DemoXMB_Data.MDF',
c. @filename2 = 'E:\Data\DemoXMB_Log.LDF'
6) Пути к базе, естественно нужно заменить на свои. Если база подключилась, то, можно сказать, отделались легким испугом, если же нет, то продолжим.
7) Если log-файл не поврежден (*.ldf), а поврежден *.mdf (например, при подключении базы sql ругается на ошибки в mdf-файле), и режим сохранения backup'а стоит full, то восстанавливаем базу без восстановления лога транзакций, почти 100%, что все мучения на этом могут закончиться.
8) Если же наоборот, поврежден ldf-файл, но остался *.mdf файл, при подключении база ругается на отсутствие/повреждение лога транзакций. В этом случае можно воспользоваться ХП "sp_attach_single_file_db"
Например:
use master
EXEC sp_attach_single_file_db @dbname = 'DemoXMB',
@physname = 'c:\mssql7\data\DemoXMB_Dat.mdf'
При выполнении этих команд, создастся файл DemoXMB_Log.ldf в том же каталоге где и база, размером 1MB и авторасширением.
Если есть *.MDF и *.LDF-файлы, или данные хранятся более чем в одном физическом файле (общее количество подключаемых физических файлов не должно превышать 16-ти), то следует использовать ХП "sp_attach_db"
Например:
use master
EXEC sp_attach_db @dbname = 'DemoXMB',
@filename1 = 'c:\mssql7\data\DemoXMB_Dat.mdf',
@filename1 = 'c:\mssql7\data\DemoXMB_Log.ldf'
Для подключения более 16-ти физических файлов к БД следует использовать команду:
CREATE DATABASE FOR ATTACH
Однако если ничего не помогло, оказались поврежденными оба файла и база всё еще в состоянии suspect, то можно попробовать сбросить состояние базы следующей последовательностью: (перед использованием этой ХП необходимо разрешить прямое изменение системных таблиц)
use master
go
Разрешаем прямое изменение системных таблиц:
sp_configure 'allow updates',1
go
reconfigure with override
go
Для сброса признака suspect выполняем в БД master ХП sp_resetstatus:
sp_resetstatus 'DataBaseName'
go
А теперь запретим прямое изменение системных таблиц:
sp_configure 'allow updates',0
go
reconfigure with override
go
В принципе, когда я выполнил все эти шаги, статус suspect сбросился, НО! при попытке выполнить какие-либо действия SQL начинала ругаться, что база все еще в состоянии suspect. И тогда я сделал так:
Из QA выполняем скрипт:
Use master
go
sp_configure 'allow updates', 1
reconfigure with override
go
Там же выполняем :
update sysdatabases set status= 32768 where name = ' '
Перезапускаем SQL Server. В принципе база должна быть видна (в emergency mode).
Из QA выполняем:
USE ' '
GO
sp_dboption ' ', 'single_user', 'true'
go
DBCC CHECKDB(' ', REPAIR_ALLOW_DATA_LOSS)
go
Если все в порядке, то:
sp_dboption ' ', 'single_user', 'false'
go
Use master
go
sp_configure 'allow updates', 0
go
После этого стало возможно просмотреть таблицы базы из SQL, а вот работать с ней было невозможно. Теперь необходимо при помощи Data Transformation Services экспортировать данные в новую базу. После этого проводим восстановление/тестирование базы средствами 1С. Внимание! Многие не обращают внимания на этот очень важный пункт. В результате, вы можете в один прекрасный момент обнаружить, что база восстановлена, мягко говоря, не совсем корректно. Т.е. в документе вместо номенклатуры будет стоять нечто вроде 10122/ , это та проблема, которая возникла у меня, вариантов же может быть уйма. Поэтому лучше потерять время, но проверить базу средствами 1С.
Но! Здесь следует сделать паузу. Статья не была бы полной, если бы я не описал методы для предотвращения подобных проблем. Итак, самый простой и надежный способ: архивация, архивация и еще раз архивация. В Enterprise Manager заходим в меню Tools->Wizards->Management->Backup Wizard и настраиваем все необходимые параметры. В результате, у меня полный сброс SQL базы на диск происходит ночью, а затем каждые 15 минут backup изменений, внесенных в базу. В принципе, если бы у меня был такой backup, я бы за пару минут сделал откат назад, и продолжил бы попивать Coca-Cola :).
(1) inxaile,
Сортировка баз данный изменить на "Текущая системная установка"
Запустить 1С7 в режиме совместимости с win2000.
А вот грабли с расшаренными по сети принтерами отдельная тема..
Нужно сходить в ветку про виндовс и изучить там посты, там уже достаточно много и по существу написано.
уже год летает Тис 7.7 на тереминале с 2008R2 без каких либо проблем, даже гуглить в свое не пришлось, все запахало с ходу.
Сам ковырялся, настраивал на 2008. В результате запахало все, но админы с вышестоящей конторы сказали на 2003 ось перейти, типа ошибки при сортировке данных могут быть.
Кроме принтеров всё отлично.
На просторах интернета видел статью о использовании виртуального принтера Bulzip на сервере и .vbs скрипта на стороне клиента. Более точную информацию могу дать позже.
Были проблемы только когда стоял касперский серверный(то спулер грузил проц до 100% то еще что то). Перешли на SEP всё стало отлично.
(11) app123,
У нас стоит Касперский Enterprise for server уже год на терминальном Win2008R2 - никаких проблем.
если используется компонента УРБД то обмен на 2008 сервере нормально не работает, если названия распределенных баз содержат кириллицу при обмене сворачиваются с ошибкой
(16) MagTux,
Например? У себя мигрировал 3 сервера с 2003 на 2008 с 1с 7.7, как х32 так и х64, все работает отлично.
Говорят что 27 релиз нормально работает с sql 2005 EE, если 25 брать,то там пляски с бубном начинаются.Некоторые файлы dll берут с 2003 и ставят на 2008 sqlsrv32.dll sqlsrv32.rll
С 1С из опыта проблем не возникает, кодовая страница. но сейчас уже это не проблема.
Грабли бывают с самим сервером, на сколько помню R2 является уже х64. а это проблема с некоторыми моделями принтеров, иногда просто нет дров в природе. Особенно если терминалка работает не из сети, а из интернета. Рекомендую на рабочих станциях обновить Remote Desktop Connection.
(18)Интересно, блин, на какой?
(16) +100 Подтверждаю - осеовные танцы с бубном вокруг принтеров.
С кодовой страницей еще проще - для ДБФ дает менять, для скуля спасает патчик.
С 1С77 из опыта проблем не возникает, затык м.быть с кодовой страничкой.
проблема с некоторыми моделями принтеров (9особенно старые модели HP Samsung, Canon850, иногда просто нет дров в природе. Особенно если терминалка работает через интеренет!
и еще бывают грабли с расшаренными по сети принтерами.
Сортировка баз данный изменить на "Текущая системная установка"
Запустить 1С7 в режиме совместимости с win2000.
Принтеры само собой. Грабли ещё в заточке клюшек под SQL2005/2008. Если ДБФ, то проблема отпадает, естесственно.
Для DBF 27 релиз экзешника, кодовая страница, драйверы HASP и менеджер лицензий последние с сайта, исключение DEP - нормально все запускается и без совместимости.
Дров для принтера HP 5100 нет, поэтому пришлось ИзиПринт использовать.
(24) А проблемы будем решать по мере поступления. Хотя как на мое имхо гораздо проще было бы 2003х64 + скуль-2005 (но увы уже не продаются).
(28) Я тоже так раньше считал - даже под 2003-м запустил их со скрипом. Но с этой штуковиной кеноны пошли, как первая теща под лёд.
И что заметил: не знаю, какой там внутренний механизм сброса данных на принтера, но с Screwdrivers реально печать быстрее, чем стандартным способом. Особенно заметно, если много графики (сотни мегабайт - листы А4 сертификатов качества в формате .bmp)
(29) Только есть проблема: купить этот самый screwdrivers у нас проблематично.
Также был затык с двусторонней печатью. Screwdrivers заменяет диалог настроек принтера и нельзя использовать все возможности девайса.
А так - инструмент отличный.
ScrewDrivers V4 32 bit Concurrent Terminal Server License - $ 2 102,76
ScrewDrivers V4 32 bit Concurrent Terminal Server License Maintenance - $ 496,48
Simplify Suite 32 bit Concurrent Terminal Server License V5 - $ 3 464,01
Simplify Suite 32 bit Concurrent Terminal Server License V5 Maintenance - $ 817,74
а 64-х еще дороже
(36) vasilykushnir, это ответ фирмы-представителя в России (Аксофт) на мой вопрос о цене, так что ссылку на прайс дать не могу.
Меня здесь очень удивили такие советы - это сколько админу\прогу платят на работе, что он готов на себя повесить (если что, ттт) уголовное дело (цена-то сразу больше 50 тыров) или там уже столько стоит, что без разницы ;)
Основная проблема с win 2008 (и др. этого семейства) и 1С 7.7 - это невозможность 1С определить кодовую страницу у windows.
Когда это происходит: при загрузке, выгрузке базы.
Когда она нужна: при восстановлении копии (например), а чаще всего при работе с компонентой УРИБ (распределенные базы.
При УРИБ не будут выполняться обмены (если она была до этого настроена), и не получиться создать периферийную базу.
Выход: искать в инете патченную библиотеку 1С - BkEnd.dll, в которой исправили проверку кодовой страницы.
у меня она работает, только бухи жалуются, что ждать долго : от нажатия до выхода страницы от 8 до 30 секунд
+к 43. И совсем не потому, что я такой-сякой. Когда руководству представил список, что надо лицензировать и суммы - они сначала не могли долго въехать что это такое и почему за "бумажки" надо столько платить. Потом вообще послали куда подальше. В ообщем вижу пора валить с этой работы.
а почему в прайсе нет разницы на 32х и 64х разрядную 8.2?
BigZmei пишет:
(46) Alister,
а почему в прайсе нет разницы на 32х и 64х разрядную 8.2?
честно - не в курсе :)
dablack пишет:
Скажите, а кто нибудь использовал в терминале для 7.7 - RemoteApp (бесшовные окна) хотелось бы чтобы юзеры не открывали рабочий стол сервера.
Скажите, а кто нибудь использовал в терминале для 7.7 - RemoteApp (бесшовные окна) хотелось бы чтобы юзеры не открывали рабочий стол сервера.
А зачем вообще ставить 7 на 2008. Лучше поставить серв 2003 и все. и с терминалом попроще и ресурсов есть меньше. Вот только если будет много пользаков то тут могут быть проблемы. Так как 2003 больше 4 Гб держит с трудом и то если и ставить то 64 бита то тут уж лучше поставить 2008. Только сращу ставь ScrewDriver с принтерами вообще проблем не будет при маппинге в терминале.
Нет там никаких граблей. R2 идет только 64х разрядная. Не бывает 32х. Поэтому все серверные ОС при установке 32х-разрядных приложений эмулируют работу в 32х разрядном режиме. В R2 режим совместимости работает на ура. У меня даже совмещать ничего не потребовалось. Восьмая версия тоже не 64х. И тоже нормально работает.
Кроме как изменить на "системную сортировку" никаких граблей не было. Пользователи работают через опубликованное приложение. Принтеры - в локальных политиках стоит использовать драйвер принтера клиента, а не EasyPrint. Никаких проблем вообще.
С нового года перходим на 8ю2. Вот где веселье наверное начнется.
Alister пишет:
ЦитатаDestroyer пишет:
в локальных политиках стоит использовать драйвер принтера клиента, а не EasyPrint
т.е. на сервере драйвер принтера клиента установлен ?
Я стараюсь не ставить дрова от принтеров, использую easyprint. Так подсистема печати стабильнее работает.
А со штатным перенаправлением печати на клиентский принтер кто-нибудь пробовал достаточно долго работать?
Что бы перейти на 64 битную версию. нужно изменить в конфигураторе кодовую страницу, и запуститься монопольно, Но есть пару ньюансов эту базу нельзя будет использовать в расшаренном виде из под WinXP Или Сервер2003, только из под WIN7..
(79) "Но есть пару ньюансов эту базу нельзя будет использовать в расшаренном виде из под WinXP Или Сервер2003, только из под WIN7.." - это как? а подробнее? А то я по незнанию поставил 7.7 билд 027 (при установке выбрал вариант SQL-2005 совместимо). Как в терминале, так и по сети работает - я что-то не так сделал?
(80) vasilykushnir,
Скорее всего имеется ввиду кодовая страница.
На Win2008 - "текущая системная установка", а на WinXp - рус или другая. изза этого и не получается запустить.
vasilykushnir пишет:
это как? а подробнее? А то я по незнанию поставил 7.7 билд 027 (при установке выбрал вариант SQL-2005 совместимо). Как в терминале, так и по сети работает - я что-то не так сделал?
swi76 пишет:
есть пару ньюансов эту базу нельзя будет использовать в расшаренном виде из под WinXP Или Сервер2003, только из под WIN7..
Расшаренный вид 7.7 - смертоубийство, 700+ сессий по сети с одного захода в базу.. Идиотизъм. Терминалка - наше все.. тем более безопаснее, никто базу уже не вытащит с сервера..
Настраиваем 1С Предприятие 7.7 для работы с SQL Server 2000
Одним из способов повысить быстродействие 1С Предприятия 7.7, особенно при работе с большими базами, является переход от файлового режима 1С к использованию SQL сервера. Несмотря на то, что оба продукта уже заканчивают свой жизненный цикл, данная тема остается довольно актуальной. В данной статье мы рассмотрим практическую настройку сервера для работы 1С Предприятия совместно с SQL Server 2000.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Немного теории, или что нам дает SQL?
Перед тем как браться за реализацию проекта, необходимо усвоить базовый объем знаний и твердо знать ответы на следующие вопросы: в чем основное отличие файлового и SQL вариантов работы 1С Предприятия, от чего зависит быстродействие в обоих случаях и какие требования предъявляются к оборудованию и сети. Непонимание этих, в общем то простых, вещей приводит к тому, что переход на SQL версию 1С не приносит желаемых результатов или вообще, результат противоположный ожидаемому.
Рассмотрим работу 1С в режиме разделения файлов. Вся обработка информации производится на рабочей станции, сервер играет роль общего файлового хранилища. Основные требования к такому серверу: быстрый жесткий диск и отказоустойчивость дисковой системы (обычно реализуется RAID 1, реже RAID 10). Обычно такой "сервер" представляет из себя обычную бюджетную машину с RAID контроллером и гигабитным сетевым адаптером.
При выполнении операции (отчета, обработки и т.п.) часть базы или даже вся база закачивается по сети на рабочую станцию, где уже и выполняется вся необходимая обработка данных. От чего зависит быстродействие в данном случае? В первую очередь от мощности рабочей станции и пропускной способности сети, более мощная машина будет более быстро строить отчеты и выполнять проводки.
Еще одним важным параметром является размер базы данных, с ее ростом выше некоторых пределов быстродействие начинает падать в геометрической прогрессии. Основным узким местом становится пропускная способность сети, а основным фактором влияющим на быстродействие и определяющий критический размер базы является количество активных пользователей.
Наш практический опыт показывает: для небольших рабочих групп (5-10 пользователей) критический размер базы начинается от 200-300 Мб. Бороться с этим можно увеличением быстродействия сети и оптимизацией потоков трафика в организации или ежегодной (ежеквартальной) сверткой БД.
Однако свертка это не выход, для нормальной работы торгового предприятия необходимы данные как минимум за текущий год, да и данные прошлых периодов также бывают частенько нужны. Вложения в расширение пропускной способности сети себя как правило не окупают, размеры БД и объемы трафика в сети растут намного быстрее, особенно если руководство решит "немного" расшириться, на 1-2 рабочих места.
Теперь посмотрим как обстоят дела в SQL варианте. Вместо таблиц все данные хранятся в одной SQL базе данных. Теперь рабочая станция передает на сервер короткие запросы, которые полностью обрабатываются на стороне сервера и рабочей станции возвращается конечный результат запроса. Это позволяет снизить трафик в разы и во столько же раз повышает нагрузку на сервер. К быстродействию рабочих станций особых требований не предъявляется, также будет вполне достаточно обычной 100 Мб сети.
Хотя следует помнить, что 1С Предприятие 7.7 для SQL довольно неоптимально и не использует многие возможности SQL сервера, поэтому часть данных обрабатываются не сервером, а рабочей станцией и в случае работы с емкими отчетами и обработками быстродействие рабочей станции тоже будет играть не последнюю роль. Основная же нагрузка ложится на сервер.
Распространенная ошибка - использование в качестве SQL сервера того же железа, что использовалось в качестве файлового сервера. Можно с уверенностью сказать, что результат будет противоположен ожидаемому. Если сразу пять пользователей запустят формирование отчетов, все эти пять отчетов будут формироваться сервером, следовательно вычислительных ресурсов сервера должно хватать для одновременной обработки запросов сразу от всех пользователей. Объем оперативной памяти должен быть достаточным для того, чтобы в нем полностью помещались SQL базы, также базы желательно вынести на отдельный от системы и других данных жесткий диск (дисковый массив), чтобы избежать конкуренции за доступ к головкам жесткого диска.
В случае совмещения SQL сервера с сервером терминалов на одной физической машине следует удостовериться, что ее ресуров достаточно для одновременной обработки запросов SQL сервера и клиентских приложений 1С, а оперативной памяти достаточно как для SQL сервера, так и для пользовательских приложений. В любом случае желательно ограничится выносом в терминал только 1С, прочие приложения желательно оставить на рабочих станциях, либо разнести сервер терминалов и SQL сервер по отдельным машинам. Также нежелательно совмещать на одном SQL сервере несколько объемных 1С баз. Как показывает практика, бывает дешевле купить под вторую базу отдельный сервер, чем покупать мощный сервер сразу под все базы.
Подведем краткие итоги. Основные преимущества SQL сервера раскрываются при работе с базами большого объема, в тоже время нет никакого смысла переводить на SQL небольшие базы с малым количеством пользователей.
От теории к практике. Установка SQL сервера.
Установка MS SQL Server 2000 проста и незамысловата, однако уже на стадии установки необходимо указать несколько отличных от установки по умолчанию параметров, необходимых для нормальной работы 1С. Платформой для установки сервера будет Windows Server 2003 SP2. Если вы устанавливаете версию SQL сервера с пакетом обновления ниже чем SP3, то система выведет вам грозное предупреждение, что устанавливаемая версия несовместима с системой, которое можно смело проигнорировать, практика показала - все работает прекрасно.
Далее, в процессе установке принимаем все значения по умолчанию пока не дойдем до экрана Services Accounts, здесь устанавливаем переключатель в положение Use the Local System account
На следующем экране выбираем вариант Mixed Mode и вводим пароль для пользователя sa, от имени которого мы будем подключаться к БД.
Остальные параметры оставляем по умолчанию. По завершению установки желательно обновить SQL сервер до последней версии, установив SP4 (скачать). Установка SP4 производится со значениями по умолчанию, кроме параметров соединения с сервером, здесь переводим переключатель в верхнее положение и вводим пароль для sa.
Настройка 1С Предприятие
Теперь, когда SQL сервер установлен и готов к использованию необходимо настроить 1С Предприятие. Напомним, что для работы с SQL сервером необходима отдельная версия 1С для SQL. Для успешной работы с SQL сервером в базе 1С должен быть заведен хотя бы один пользователь. Далее загружаем целевую базу в конфигуратор и производим выгрузку данных через Администрирование - Выгрузить данные.
После чего создаем заготовку будущей БД, для этого в отдельную папку копируем все папки из рабочей базы данных и все файлы кроме файлов конфигурации и таблиц (V7Plus, библиотеки для работы с торговым оборудованием и т.п.)
Следующим шагом необходимо создать новую SQL базу для хранени наших данных. Для этого запускаем Enterprise Manager.
На первой закладке открывшегося окна вводим имя создаваемой базы, вторая и третья закладка определяют пути хранения файла БД и файла лога транзакций. По умолчанию предполагается их хранение в папке установки SQL сервера, однако желательно хранить их в отдельной папке рядом с базой 1С (желательно на отдельном жестком диске или на отдельном разделе).
Создав базу, подключаем папку с заготовкой в качестве базы 1С и загружаем Конфигуратор. На вопрос выбора формата хранения данных указываем MS SQL Server, в Конфигураторе выбираем Администрирование - Параметры базы данных SQL и заполняем поля.
В качестве сервера указываем сетевое имя машины, его можно подсмотреть в SQL Server Service Manager, щелкнув на значке в трее рядом с часами. В поле База Данных вводим название базы, которое мы указали при ее создании в Enterprise Manager. Пользователь sa, ниже вводим его пароль.
Как видим ничего сложного нет, и при наличии должных навыков весь процесс занимает не более часа, при этом большая часть времени уходит на загрузку - выгрузку базы.
Дополнительные материалы:
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
Установка и настройка MS SQL Server для 1С:Предприятие
Тему установки MS SQL Server обычно обходят стороной. Действительно, трудно не установить эту СУБД, даже делая это в первый раз, столь же трудно не запустить в связке с ней Сервер 1С:Предприятия. Однако есть ряд неочевидных тонкостей, которые способны существенно отравить жизнь администратору, о чем мы сегодня и расскажем.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
MS SQL Server занимает первое место по количеству внедрений в связке с 1С:Предприятием, во многом это объясняется низким порогом вхождения, осилить данную связку вполне способен человек без опыта, сугубо по методу Next - Next - Finish. И, что самое интересное, все это будет работать. Скажем больше, в подавляющем большинстве случаев настройки SQL-сервера по умолчанию более чем достаточно для обеспечения производительной работы сервера 1С:Предприятия и трогать их не только не нужно, но даже вредно.
Однако есть другая категория настроек, которая отвечает за расположение и выделение физических ресурсов и которую обычно тоже никто не трогает до тех пор, пока не начнет испытывать проблемы с производительностью.
Прежде всего следует вспомнить про системную базу tempdb, которая активно используется 1С для хранения временных таблиц и промежуточных результатов. Причем она используется сразу всеми базами 1С, работающими на сервере. А так как по умолчанию она располагается в папке установки SQL-сервера, т.е. на системном диске, то при увеличении нагрузки именно tempdb становится бутылочным горлышком для всего сервера. Очень часто это приводит к ситуациям: купили быстрые HDD / SSD, дисковых ресурсов хватает, а 1С тормозит, что способно вызвать у начинающих администраторов серьезные затруднения.
Второй момент. Кодировка сравнения tempdb должна совпадать с кодировкой сравнения информационных баз, иначе это может в ряде случаев привести к неожиданным результатам, вплоть до серьезных ошибок в расчетах.
В тоже время указанных сложностей совсем не сложно избежать, достаточно лишь потратить пару лишних минут при установке или внимательно просмотреть настройки уже установленного сервера.
Подготовка к установке
Еще на стадии планирования следует уделить некоторое внимание дисковой подсистеме. Для хранения пользовательских баз данных и системной базы tempdb следует выделить отдельный раздел, а еще лучше дисковый массив из быстрых дисков или SSD. В нагруженных системах имеет смысл разнести базы данных и журналы транзакций по разным дисковым массивам. Также рекомендуется отформатировать эти разделы с размером кластера в 64 КБ.
Установка MS SQL Server для работы с 1С:Предприятие
Как мы уже говорили, установка SQL-сервера предельно проста, и мы не будем описывать этот процесс подробно, обратив внимание лишь на необходимые настройки. Начнем с выбора компонентов, так как 1С не использует большинство механизмов SQL-сервера и если вы не собираетесь их использовать для иных целей, то оставляем только Службы ядра СУБД и Соединения с клиентскими средствами. В предыдущих версиях эти компоненты назывались Database Engine, Средства связи клиентских средств, также в них можно опционально установить Средства управления (однако лучше установить свежую версию средств управления отдельно).
На закладке Учетные записи служб обязательно установите флаг Предоставить право на выполнение задач обслуживания тома службе ядра СУБД SQL Server.
Затем следует проверить параметры сортировки, если у вас правильно настроены региональные настройки, то скорее всего там ничего изменять не придется, но проконтролировать данный параметр желательно, там должно быть Cyrillic_General_CI_AS.
В Конфигурации сервера укажите Смешанный режим проверки подлинности и задайте пароль суперпользователю SQL - sa. Также укажите ниже администраторов данного экземпляра SQL-сервера, как минимум следует добавить текущего пользователя, но если администрировать данный экземпляр будут другие ваши коллеги, то имеет смысл сразу их указать.
Следующая закладка - Каталоги данных - требует самого пристального внимания. Обязательно укажите в качестве места хранения пользовательских баз место на производительном массиве или отдельном диске. Несмотря на то, что расположение базы можно указывать при ее создании, задание правильных настроек по умолчанию избавляет вас от лишней работы, а также от ситуации, когда база создается средствами 1С и оказывается в каталоге по умолчанию, т.е. на системном диске. Также сразу можете указать каталог для хранения резервных копий.
Современные версии MS SQL содержат отдельную закладку TempDB, для настройки одноименной базы, в предыдущих версиях данных настроек нет и о том, как настроить данную базу будет рассказано ниже. Здесь же мы выставляем для базы: количество файлов - 4, начальный размер - от 1 ГБ до 10 ГБ, авторасширение - 512 МБ, аналогичный размер и авторасширение устанавливается для файла журнала. Также не забываем проконтролировать размещение TempDB на отдельном разделе/диске.
Остальные настройки можно оставить по умолчанию и завершить установку.
Для управления сервером СУБД следует скачать и установить SQL Server Management Studio (SSMS), ее можно установить как на сервер, так и на компьютер администратора, чтобы управлять с него всеми доступными SQL-серверами. Никаких особенностей в установке SSMS нет.
Настройка операционной системы
Если у вас имеется уже установленный экземпляр MS SQL, либо вы не выполнили всех рекомендаций по установке, то следует проверить ряд настроек операционной системы. Запустим редактор локальной политики безопасности secpol.msc и перейдем в раздел Локальные политики - Назначение прав пользователя. Откроем политику Выполнение задач по обслуживанию томов и убедимся, что в списке пользователей присутствует учетная запись от имени которой работает SQL Server - NT SERVICE\MSSQLSERVER.
Если ваш экземпляр MS SQL Server установлен отдельно от Сервера 1С:Предприятие, то выполните аналогичную настроку для политики Блокировка страниц в памяти.
Настройка MS SQL Server для работы с 1С:Предприятие
Если вы имеете дело с уже установленным экземпляром SQL-сервера, убедитесь, что кодировка сравнения Cyrillic_General_CI_AS, для этого откройте Managment Studio, выберите необходимый экземпляр SQL-сервера и щелкнув на нем правой кнопкой мыши перейдите к Свойствам:
В противном случае данные следует выгрузить средствами 1С, а сервер переустановить (или установить еще один экземпляр, если данный используется другими службами).
Затем перейдите к закладке Память, за основу для расчетов принимается объем выделенного SQL-серверу размера памяти (RAM). Обычно это объем памяти сервера за вычетом ОЗУ для ОС и иных служб, например, Сервера 1С:Предприятие. Для сервера с объемом ОЗУ в 32 ГБ мы будем исходить из доступного объема в 24 ГБ, выделив 8 ГБ для ОС и сервера 1С. Но данные соотношения не являются эталоном и в вашем случае это могут быть иные числа.
Для расчета минимального объема памяти применяется формула:
Для максимального применяется полный размер RAM, за вычетом 1 ГБ на каждые выделенные 16 ГБ ОЗУ (все объемы указываются в МБ):
В разделе Параметры базы данных можно проконтролировать места хранения пользовательских баз и журналов, а также изменить их при необходимости. Все изменения будут применены только к вновь создаваемым базам данных, уже существующие БД потребуется перенести в новое расположение вручную (если в этом есть необходимость).
В разделе Дополнительно - Параллелизм установите параметр:
Следующая настройка будет связана с безопасностью. Для подключения 1С к серверу чаще всего используется учетная запись sa, что, мягко говоря, небезопасно, так как дает вошедшему под ней полный доступ к SQL-серверу. Учитывая, что администрированием баз 1С часто занимаются сторонние специалисты, то имеет смысл создать для них отдельную учетную запись.
Для этого раскройте Безопасность - Имена для входа и создайте новое имя (учетную запись), укажите проверку подлинности SQL-сервер и задайте пароль.
Затем перейдите на закладку Роли сервера и разрешите dbcreator, processadmin и public.
После чего используйте для подключения к SQL-серверу из 1С именно эту учетную запись.
Все создаваемые базы данных создаются на основе служебной базы model и к ним применяются все настройки этой БД, поэтому перейдем в Базы данных - Служебные базы данных и откроем свойства базы model. В разделе Файлы укажите значения начального размера базы от 1 ГБ до 10 ГБ, начальный размер журнала транзакций от 1 ГБ до 2 ГБ и авторасширение в 512 МБ. Выбирая начальный размер базы, нужно исходить из соображений чтобы размер файла превосходил загружаемый размер образа информационной базы 1С.
В разделе Параметры укажите Модель восстановления в соответствии с применяемой политикой резервного копирования и установите параметр:
Для уже существующих баз потребуется выполнить аналогичные настройки, за исключением параметра Начального размера, его следует выставить больше, чем текущий размер файлов базы и лога транзакций. Для базы данных желательно указать планируемый размер БД за длительный период эксплуатации, а для файла журнала размер, исключающий его авторасширение в процессе работы.
После внесения всех изменений в конфигурацию службу SQL сервера потребуется перезапустить.
Настройка сетевых протоколов
Для настройки сетевых протоколов откроем Диспетчер конфигурации SQL Server и перейдем в раздел Сетевая конфигурация SQL Server - Сетевые протоколы для MSSQLSERVER, где MSSQLSERVER - имя вашего экземпляра, и установим следующие настройки:
- Общая память (Shared Memory) - Включено
- Именованные каналы (Named pipes) - Отключен
- TCP/IP - Включено
Настройка базы tempdb
В предыдущих версиях MS SQL Server нет возможности настроить параметры базы tempdb при установке, также вы могли выполнить установку со значениями по умолчанию, либо вам достался уже установленный экземпляр, в этих случаях нужно произвести дополнительную настройку. Откроем Managment Studio и перейдем в Базы данных - Служебные базы данных в свойства базы tempdb. В разделе Файлы разобьем базу на четыре файла данных и установим для них начальный размер от 1ГБ до 10 ГБ, но не менее текущего размера файла, авторасширение - 512 МБ. Аналогичные настройки установим и для файла журнала.
Перенос базы tempdb
Довольно часто встречаются ситуации, когда tempdb требуется перенести в другое место. Например, сервер был установлен с параметрами по умолчанию и tempdb находится на системном разделе, или вы приобрели SSD и хотите перенести туда не только базы, но и tempdb (что является правильным решением). Также при большой нагрузке на tempdb его рекомендуется выносить на отдельный диск.
Для того, чтобы изменить место расположения файла tempdb откройте Managment Studio, выберите Создать запрос и в открывшемся окне введите следующий текст, где E:\NEW_FOLDER - новое расположение для базы:
Данный запрос состоит из двух секций, верхняя переносит файл данных, нижняя - журнал транзакций. Если вы разделили базу на четыре файла данных, то следует изменить запрос, создав для каждого файла данных свою секцию.
Создав запрос нажмите Выполнить, после выполнения запроса перезапустите SQL-сервер, файлы базы и лога tempdb будут созданы в новом месте, файлы по старому расположению следует удалить вручную.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
A: Такой вариант программы 1C: Предприятие, который может хранить данные на SQL-сервере.
Q: Она очень отличается от не SQL-версии?
A: Для пользователя - дополнительное обучение не требуется. Для программиста - дополнительно обучение не обязательно. Для системного администратора необходимы дополнительные знания - немного различаются процедуры установки и резервного копирования.
Q: Сложно ли перейти с работы с обычной версией программы на работу с SQL-сервером?
A: Нет, в общем случае не сложно.
Другой вопрос, - как будет без дополнительной настройки работать после перехода на SQL-версию ваша информационная система (созданная на базе 1С: Предприятие 7.7). Может быть по-всякому: также, как и раньше, или лучше, или даже хуже.
Q: А какие еще кроме как SQL-сервера существуют способы хранения данных?
A: На большинстве предприятий программа хранит данные в файлах формата DBF.
Q: А что такое SQL-сервер?
A: Специальная программа, предназначенная для хранения базы данных и обеспечения другим программам доступа к этим данным.
Q: В чем основное отличие использования SQL-сервера для хранения данных?
A: Работая с БД, которая находится в файлах формата DBF, программа сама непосредственно читает и пишет в эти файлы.
Работая с БД, которая расположена на SQL-сервере, программа непосредственно с файлами данных работать не может, с ними работает один только SQL-сервер, а программы обращаются к SQL-серверу с запросами по чтению и изменению данных.
Q: Зачем нужен такой сложный доступ к данным?
A: В первую очередь, для надежности хранения данных. Например, понятие "разрушены индексы", часто встречающееся с БД в DBF-формате, при работе с SQL-сервером не существует.
Кроме того, такой сложный доступ к данным, в некоторых случаях, обеспечивает более быстрое получение данных.
Кроме того, такой сложный доступ к данным, в некоторых случаях, является единственным возможным для работы очень большого числа пользователей или для работы с очень большой базой данных.
Q: Будет ли работать быстрее программа если перейти на работу с SQL-сервером?
A: Не во всех случаях. Проведение документов в большинстве случаев - медленее.
Желательно оптимизировать конфигурацию под работу с SQL-сервером.
Q: В каких случая переход на SQL-версию принесет хоть какую-либо пользу?
A: Гораздо большая надежность хранения данных - для ответственных БД. Единственно возможный способ функционирования БД, если размер ваших SQL-файлов превысил несколько сотен мегабайт и продолжает расти. Или при очень большом числе пользователей. Более быстрое выполнение отчетов, если эти отчеты написанны с учетом того, что данные находяться на SQL-сервере.
Q: Что мне нужно для перехода на работу с SQL-сервером?
A: SQL-версия программы 1С: Предприятие 7.7 и SQL-сервер Microsoft SQL Server (MS-SQL Server), а также серверный вариант операционной систем Windows, поскольку MS-SQL Server отказывается устанавливаться на другие варианты Windows.
Q: Как отличить SQL-версию внешне?
A: Почти ничем. Можно ткнуться в меню "Помощь\О программе", там в самом верху будет надпись "1С: Предприятие 7.7 для SQL".
Q: Если я хочу работать с БД в DBF и с БД на SQL-сервере мне нужно ставить 2 варианта программы?
A: Нет. SQL-вариант прекрасно работает как SQL базами, так и с DBF базами.
Q: Какой можно использовать SQL-сервер?
A: Microsoft SQL Server (MS-SQL), начиная с версии 6.5, а лучше - 7.0 и выше.
Q: Могу ли я использовать PostgreSQL?
A: Нет. Только Microsoft SQL Server (MS-SQL), начиная с версии 6.5, а лучше - 7.0 и выше.
Q: А почему бы фирме 1C не сделать свою программу такой, чтобы она использовала другие сервера? Ведь есть стандарты на SQL?
A: Стандарты на SQL есть, но фактически он охватывает лишь базовые возможности различных SQL-серверов, а не базовые, но весьма нужные возможности - у каждого сервера - свои.
Программа, учитывающая эти различия будет сложнее как на этапе создания, так и на этапе поддержки, а, значит, выше будет ее себестоимость.
Q: Могу ли я использовать вариант MS-SQL из поставки Microsoft Office 2000, который называется MSDE2000?
A: У меня MSDE2000 работал нестабильно, а другие говорят, что все хорошо. Можете, но на свой страх и риск.
Q: Какой механизм защиты от несанкционированного копирования встрен в MS-SQL?
A: Серийный номер.
Q: Мы официально купили 1С: Предприятие 7.7 + Windows 2000 Server + MS-SQL. Не нашли серийного номера для MS-SQL.
A: В этой поставке серийный номер один и тот же у Windows 2000 Server и MS-SQL.
Q: Я не работал раньше с сервером MS-SQL. Сложно ли это?
A: Нет, не сложно. Фирма Microsoft старается сделать управление своими серверными программными продуктами доступным даже непрофессионалам.
Q: Как установить сервер MS-SQL?
A: Как любую другую программу - инсталлятором. Если установка осуществляется на русскую версию Windows, то все опции в инсталляторе - по умалчиванию.
Q: Сервер MS-SQL с настройками по умалчиванию ставить не надо!
A: Если на русскую версию Windows - то по умалчиванию все опции инсталлятора. Если вы считаете себя умным, то можете отказаться от некоторых частей MS-SQL сервера, которые не нужны программе.
Q: Что делать после инсталляции сервера MS-SQL?
A: Запустить программу SQL Enterprise Manager. С ее помощью подключиться к свежеинсталлированному серверу.
Q: Что необходимо создать на сервере MS-SQL?
A: В первую очередь, надо создать пользователя (пользователя не программы 1C: Предприятие, а пользователя в MS-SQL).
Дать ему права на создание БД.
Зайти в программу SQL Enterprise Manager от имени этого пользователя.
Создать БД.
Q: Зачем нужно создавать БД от имени специально созданного пользователя MS-SQL?
A: Иначе в дальшейшем программа не сможет работать с этой БД.
Q: Какой необходимо указать размер БД при создании ее на сервере MS-SQL?
A: БД будет увеличиваться автоматически по необходимости. Но можно и сразу создать файлы данных и лога размера равным двойному суммарному размеру файлов DBF-версии, которую вы собираетесь перегнать в SQL-версию.
Q: Как начать работу программы с SQL?
A: Создайте пустой каталог. Настройте программу так, будто бы в этом каталоге лежит БД в формате DBF (то есть как обычно). Запустите "Конфигуратор". При старте программа спросит вас какая будет БД - SQL или DBF. Ответите - SQL. Далее - смотри ниже.
Q: Как добраться до данных SQL?
A: Если при входе в пустой каталог вы выбрали SQL-вариант базы, то в "Конфигураторе". Появиться еще пункт меню "Администрирование\Параметры базы данных SQL".
Q: Какие нужно задать параметры для базы данных SQL?
A: Сервер - имя компьютера с SQL-сервером. База данных - название базы данных, которую вы создали специально для работы программы на SQL-сервере с помощью SQL Enterprise Manager. Пользователь - имя пользователя SQL-сервера, от имени которго была создана база данных на SQL-сервере. Пароль - его пароль.
Q: Все пользователи работают с SQL-сервером от имени одного SQL-пользователя?
A: Да все экземпляры программы подключаются к SQL-серверу от имени одного SQL-пользователя, того самого который создал БД на SQL-сервере.
Q: Используется ли обычный список пользователей программы при работе с SQL-сервером?
A: Да. Более того, список пользователей программы не должнен быть пуст, иначе вы не сможете работать.
Q: Как перенести данные из базы данных DBF в базу данных SQL?
A: В "Конфигураторе" программы DBF-базы "Администрирование\Выгрузить данные". Затем в "Конфигураторе" программы SQL-базы "Администрирование\Загрузить данные"
Q: Как перенести данные из базы данных SQL в базу данных DBF?
A: В "Конфигураторе" программы SQL-базы "Администрирование\Выгрузить данные". Затем в "Конфигураторе" программы DBF-базы "Администрирование\Загрузить данные"
Q: Как делать резервное копирование базы данных SQL?
A: В "Конфигураторе" программы "Администрирование\Выгрузить данные".
Q: Как делать резервное копирование базы данных SQL не отключая пользоватей?
A: Заранее делается копия файла 1Cv7.MD и файла со списком пользователей - в "Конфигураторе" программы "Администрирование\Сохранить". Во время работы можно делать резервное копирование средствами MS-SQL при помощи SQL Enterprise Manager. Подробнее - ниже.
Q: Резервное копирование средствами SQL невозможно при работе пользователей?
A: Заранее делается полная резервная копия (Complete Backup). В течение рабочего дня делаются копии лога транзакций MS-SQL (Transaction Log Only Backup). В случае чего для восстановления данных следует использовать "последний Complete Backup + все Transaction Log Only Backup, сделанные после этого Complete Backup'а"
Q: Не работает запланированное (Sheduled) резервное копирование средствами SQL!
A: Должен быть запущен сервис SQL Agent.
Q: После перехода на SQL версию бегунок на вертикальной полосе прокрутки в журналах и списках элементов справочников всегда посередине.
A: Это сделано для ускорения получения данных.
Дело в том, что с сервера SQL программа получает не все данные, а только те, которые ей нужны для отображения на экране. Программа не определяет сколько всего строк и какую часть она выводит на экран, следовательно, не может и рассчитать куда ставить бегунок прокрутки.
Q: После перехода на SQL версию программа стала работать гораздо медленее.
A: Возможно, у вас слишком слабый компьютер выделен под сервер SQL. Особенно чувствителей SQL сервер к количеству оперативной памяти. Не исключено, что конфигурация не приспособлена к SQL-версии. Современные типовые конфигурации от фирмы-изготовителя программы работают с SQL-сервером неплохо.
Q: У нас большая фирма, много пользователей и большая БД. Стоимость простоя очень велика. Для надежности хранения данных перешли на SQL. Жутко тормозит.
A: Вам поможет связка "терминальный сервер + SQL-сервер". Терминальный сервер обеспечит производительность, а SQL - сервер надежность. Компьютер под сервер должен быть выделен очень мощный, с огромным объемом оперативной памяти.
Q: Существуют ли особенности при программировании под SQL-версию?
A: Несколько иная оптимизация. Глюки ядра SQL-версии и не SQL-версии программы частью совпадают, а частью - различаются.
Q: Какие конструкции языка более оптимальны для SQL-версии?
A: Которые одной командой обрабатывают большие массивы данных.
Например, объект "Запрос" более предпочтителен, нежели последовательный перебор (конструкции "ВыбратьЧтоТо() и цикл ПолучитьЧтоТо()). Оптимизация относится только к объектам, предоставляющим доступ к данным в БД, но не к таблицам значений и спискам значений.
Q: Можно ли обращаться напрямую к таблицам SQL-сервера посредством запросов на языке SQL?
A: По чтению - да. Существуют даже специальные расширения (не от фирмы 1С) для программы 1C: Предприятие 7.7, которые позволяют это делать.
Q: Один пользователь - работает нормально (не монопольно). Другой - тоже. Вместе - не могут.
A: Каталог, в котором лежат файлы 1cv7.MD и иже с ним должен быть у всех пользователей общим.
Q: Надо ли давать пользователям доступ к файлам базы данных SQL-сервера?
A: Нет. Этого не нужно. К этим файлам обращается только сама программа MS-SQL сервер.
Q: Файл Transaction Log раздувается и раздувается.
A: Файл Transaction Log связан с процедурами резервного копирования сервера SQL. Он автоматически прекращает раздуваться после каждого резервного копирования, сделанного средствами SQL-сервера.
Q: Можно ли организовать распределенную БД, используя возможности репликаций, имеющиеся в сервере MS-SQL
A: Нет.
Пользуйтесь механизмами создания распределенных БД, созданным специально для программы 1C: Предприятие 7.7 фирмой 1С или другими фирмами.
Читайте также: