Установка 1С:Предприятие 7.7 на Microsoft SQL Server 2008 R2

1C_V7_logoОфициально, платформа 1С:Предприятие 7.7 работает только с MS SQL Server 2000. Но с помощью небольших манипуляций можно организовать стабильную работу и с последней, на момент написания статьи, версий Microsoft SQL Server 2008 R2. Ниже представлена пошаговая настройка связки 1С:Предприятие 7.7 + MS SQL Server 2008 R2 + Microsoft Windows Server 2008 R2 (Справедливо и для других операционных систем семейства Windows). Итак:

0. Оглавление

  1. Установка Windows Server 2008 R2
  2. Установка SQL Server 2008 R2 
  3. Создание новой базы данных в SQL Server 2008 R2
  4. Настройка Windows Server 2008 R2
  5. Установка 1С:Предприятие 7.7
  6. Патч и замена файла BkEnd.dll
  7. Создание представления sksprocesses в MS SQL Server
  8. Добавление информационной базы в 1С:Предприятие 7.7
  9. Настройка безопасности для всех пользователей

1. Установка Windows Server 2008 R2

В качестве серверной ОС используем Microsoft Windows Server 2008 R2. Об установке этой системы подробно можно прочитать в статье «Установка Windows Server 2008 R2».

2. Установка SQL Server 2008 R2

Далее устанавливаем Microsoft SQL Server 2008 R2. Во время установки выбираем:

  • Параметры сортировки  — «Cyrilic_General_CI_AS»
  • Режим проверки подлинности — «Смешанный режим»

Очень подробно об установке SQL Server я писал в статье «Установка Microsoft SQL Server 2008 R2».

3. Создание новой базы данных в  SQL Server 2008 R2

Добавляем нового пользователя в SQL Server 2008 R2. Обязательно даем ему роль processadmin, иначе будем натыкаться на ошибку:

«Доступ к базе возможен только из одного каталога информационной базы»  

Затем создаем новую базу данных, указав:

  • Имя базы данных не должно начинаться с цифры или иметь пробелы в названии, иначе получим ошибку:
    «неправильный синтаксис около конструкции %имя базы данных%»
  • В качестве владельца указываем только что созданного пользователя (В моем случае имя пользователя — «UserSQL» )
  • Модель восстановления базы данных: «Простая» (1С:Предприятие 7.7 прекрасно работает и при полной модели восстановления. Но в этом случае, вы должны хорошо понимать все плюсы и минусы данного решения).
  • Уровень совместимости: «SQL Server 2000 (80)» .

О том как это сделать читайте в статье «Добавление пользователя и создание новой базы данных в Microsoft SQL Server 2008 R2».

4. Настройка Windows Server 2008 R2

Теперь необходимо заменить оригинальные фалы odbcbcp.dll, sqlsrv32.dll и sqlsrv32.rll (скачать все файлы одним архивом) в каталогах C:\Windows\System32 и в C:\Windows\SysWOW64 файлами из каталога C:\Windows\System32 под управлением Windows Server 2003 (в архиве).
Чтобы сделать это необходимо стать владельцем этих файлов и получить права на их редактирование . Для этого заходим в C:\Windows\System32 находим файл odbcbcp.dll, кликаем по нему правой кнопкой, выбираем «Свойства». В открывшемся окне переходим на вкладку «Безопасность», нажимаем «Дополнительно».

Ustanovka_1C_SQL_001

В появившемся окне переходим на вкладку «Владелец» , нажимаем «Изменить» , выбираем текущего пользователя и жмем 2 раза «ОК» .

Ustanovka_1C_SQL_002

Затем на вкладе «Безопасность» нажимаем «Изменить» и для текущего пользователя выставляем уровень безопасности «Полный доступ» . Закрываем окна кнопкой «ОК» .
Только после этого система даст нам заменить файл odbcbcp.dll.
Аналогичные действия необходимо выполнить и для всех остальных файлов в папках C:\Windows\System32 и C:\Windows\SysWOW64.
Если этого не сделать, при запуске 1С:Предприятие будем натыкаться на ошибку:
«Ошибка для доступа к базе данных требуется ODBC-драйвер для MS SQL Server версии 3.50.0303 или старше»

5. Установка 1С:Предприятие 7.7

Теперь необходимо установить 1С:Предприятие 7.7, ставим версию для SQL. Об особенностях установки читайте в статье «Установка системы 1С:Предприятие 7.7 в Windows x64».

6. Патч и замена файла BkEnd.dll

Теперь необходимо заменить файл BkEnd.dll из оригинальной поставки 1С:Предприятие 7.7, находящего по пути C:\Program Files (x86)\1Cv77\BIN, «пропатченным» файлом BkEnd.dll. Вы можете использовать мой файл, или сделать изменения самостоятельно. О том как и что необходимо в нем изменить читайте в моей статье «Работа в Hex-редакторе Free Hex Editor Neo, на примере патча файла BkEnd.dll для работы 1С:Предприятие 7.7 с Microsoft SQL Server 2008 R2».
Замену файла делаем для того, чтобы избавиться от ошибок:

  • «Требуется MS SQL Server 6.5 + Service Pack 5a или более старшая версия!»
  • «Порядок сортировки, установленный для базы, отличается от системного!»
  • «Неправильный синтаксис около ключевого слова «TRANSACTION»
  • «База данных не может быть открыта в однопользовательском режиме»

7. Создание представления sksprocesses в MS SQL Server

Продолжаем исправлять ошибку «База данных не может быть открыта в однопользовательском режиме». Для этого создадим представление в базе данных (источник).
Заходим в программу «Среда Microsoft SQL Server Management Studio» («Пуск» — «Все программы» — «Microsoft SQL Server 2008 R2» — «Среда Microsoft SQL Server Management Studio» ), выбираем наш SQL Server (в моем примере это «S4\ULTRA»), раскрываем вкладку «Базы данных» , затем «Системные базы данных» и вкладку «master» . На вкладке «Представления» кликаем правой кнопкой мыши и в меню выбираем «Создать представление» .

Ustanovka_1C_SQL_004

Откроется окно «Добавление таблицы» , закроем его нажав «Закрыть» .

Ustanovka_1C_SQL_005

Теперь в окне слева напишем текст представления:

select * from sysprocesses where cmd <> 'checkpoint'

Затем, нажимаем «Выполнить код SQL» (Иконка с красным восклицательным знаком на панели)

Ustanovka_1C_SQL_006

После того, как код изменится, сохраним представление, назвав  его sksprocesses.

Ustanovka_1C_SQL_007

В результате чего в обозревателе объектов увидим только что созданное представление dbo.sksprocesses. Кликаем по нему правой кнопкой мыши и выбираем «Свойства» .

Ustanovka_1C_SQL_008

Откроется окно «Свойства представления» , в нем переходим на вкладку «Разрешения» и добавим пользователя guest. Для этого нажимаем «Найти» в окне добавления пользователей «Обзор» , отмечаем в списке пользователя guest и жмем «ОК» .

Ustanovka_1C_SQL_009

Теперь отмечаем разрешения для guest:

  • Вставка
  • Выборка
  • Изменение
  • Назначение владельцем
  • Обновление
  • Просмотр определения

После чего нажимаем «ОК» .

Ustanovka_1C_SQL_010

На этом создание представления завершено.

8. Добавление информационной базы в 1С:Предприятие 7.7

Теперь, запустим 1С:Предприятие в режиме конфигуратора и добавим новую базу, для этого нажимаем «Добавить» задаем имя базы данных и указываем путь к каталогу в котором будет храниться наша база (изначально должен быть пустым) и нажимаем «ОК» .

Ustanovka_1C_SQL_011

Заходим в добавленную только что базу данных в режиме конфигуратора. При первом запуске система попросит выбрать формат хранения данных. Выбираем «MS SQL Server» и нажимаем «ОК» .

Ustanovka_1C_SQL_012

В запустившемся конфигураторе заходим в «Администрирование» — «Параметры базы данных SQL…» .

Ustanovka_1C_SQL_013

Откроется окно «Параметры базы данных SQL«, в нем заполняем:

  • Имя сервера в формате: <Сетевое имя компьютера>\<Имя экземпляра SQL Server>. (в моем случае это «S4\ULTRA» )
  • База данных: Имя базы данных, которое было введено при создании новой базы данных в п. 2. (в моем случае это «BASE_1C» )
  • Пользователь: Имя пользователя, которое было введено при создании нового пользователя в п. 2. (у меня это «UserSQL» )
  • Пароль: Пароль, который указывали для пользователя при создании в п. 2.

И нажимаем «ОК» .

Ustanovka_1C_SQL_014

Если нам нужна новая, т. е. «чистая» база, то уже можно начинать работать. Если же необходимо перенести уже существующую базу данных, то необходимо предварительно выгрузить из нее данные (войти в 1С:Предприятие в режиме конфигуратора, «Администрирование» — «Выгрузить данные» ) а затем загрузить в нашу, только что созданную базу на SQL («Администрирование» — «Загрузить данные» — выбрать файл выгрузки — «ОК» и согласиться с предупреждением о конфликте данных) .

Ustanovka_1C_SQL_015

После этого этапа уже можно работать в 1С под текущим пользователем Windows.

9. Настройка безопасности для всех пользователей

Если подразумевается, что данный сервер является также Сервером терминалов, на котором будут работать несколько пользователей, то необходимо для директорий, где хранятся базы данных 1С (в моем случае это «C:\1C_BASE») дать всем пользователям права на чтение/запись. Для этого в проводнике выделяем нужную папку, кликаем по ней правой кнопкой мыши и в меню выбираем «Свойства«. В открывшемся окне переходим на вкладку «Безопасность» и нажимаем кнопку «Изменить» . В окне «Разрешения для группы…» для группы «Все» установим «Полный доступ» . Закроем все окна кнопкой «ОК» .

Теперь можно создавать пользователей для работы с 1С:Предприятие в режиме терминального сервера или в режиме удаленных приложений RemoteApp.

Помогла ли Вам данная статья?
Да, спасибо, все получилось!
Немного помогла.
Совсем не помогла.
Не то что я искал(а).
Смотреть результаты
Запись опубликована в рубрике 1С 7 с метками , , . Добавьте в закладки постоянную ссылку.


219 Responses to Установка 1С:Предприятие 7.7 на Microsoft SQL Server 2008 R2

  1. Гребенщиков Юрий говорит:

    Добрый день!
    При создании представления select * from sysprocesses where cmd <> ‘checkpoint’ вылетает ошибка: «Ошибка в предложении WHERE рядом с «‘».
    Не удается выполнить синтаксический анализ текста запроса.»
    Помогите пожалуйста!

  2. Гребенщиков Юрий говорит:

    Понял проблему сам))) Оказывается апостроф скопировался не правильно

  3. Алексей говорит:

    спасибо за подробную статью!
    я кстати не подменял системные файлы и все работает. еще просьба указать одну вещь, при установке обязательно смешанный тип авторизации указать, иначе ни чего не получится, по-крайней мере я как не шаманил так и не поехало, пришлось переустанавливать сервер скл

    • Виталий Онянов говорит:

      И вам спасибо! Рад стараться. 🙂 

      В моей практике системные файлы все же приходилось заменять всегда.

      На счет смешанной авторизации, я писал в статье «Установка SQL Server 2008 R2» . Сюда тоже добавил, спасибо!

  4. Алекс говорит:

    Как использовать рабочую базу из 1с ? возникла потребность перенести на сервер 1с, делаю как у вас в руководствах. А сейчас у меня озарение — база то нулевая получится!

    • Виталий Онянов говорит:

      Не совсем так.
      Перед началом всех действий необходимо сделать выгрузку из существующей рабочей базы.
      Потом, когда вы создадите чистую базу, сделать загрузку, и все данные сохранятся.
      Подробнее читайте об этом в пункте 7 данной инструкции.

      • Алекс говорит:

        Огромное спасибо! А то взвалили на меня все… Полгода работаю после окончания технаря, желание бросить все и уйти телики продавать в магазин.

        • Виталий Онянов говорит:

          Прекрасно Вас понимаю. Сам когда-то тоже был зеленым и также хотелось все бросить.
          Но не надо бояться и опускать руки. Со временем придет и опыт и уверенность. 🙂

      • Елена говорит:

        Спасибо за шикарную статью !!!!

  5. Дмитрий говорит:

    SQL State: IM004 Native:0  [Microsoft][Диспетчер драйверов ODBC] Ошибка SQLAllocHandle для драйвера в SQL_HANDLE_ENV  проблемма подключения к sql серверу , делал всё как в вашей статье 

  6. Максим говорит:

    Виталий получалось у вас запустить 1с 7.7 на SQL 2012. Пустая работает, а при загрузке выгруженной ошибка.

    • Виталий Онянов говорит:

      Нет, связку 1с 7.7 + SQL 2012 я пока не пробовал реализовать.

      • Максим говорит:

        Может сможете подсказать? На старом сервере установлен SQL2005 и 7.7, работает в режиме совместимости 2000. Переношу на новый сервер где установлен SQL2012 и 7.7 в режиме совместимотси 2012. База большая больше 8гб. Вугружаю при момощи патча (в файл romix.dat может слышали), загрузка проходит. Потом при перестчете итогов ошибка постоянно на одном месте (на дате 01.04.2010)

        • Виталий Онянов говорит:

          1. Ну, romix.dat использую много лет, никаких проблем с переносом не было ни разу, так что в этом месте, я думаю, искать ошибку не стоит.

          2. Попробуйте развернуть базу в DBF для проверки. 8 Гигобайт это на самом деле не очень много. Проверьте не будет ли ошибки в данном случае?

          3. А все действия относительно SQL Server 2012 вы делали точно так же, как описано у меня в статье для SQL Server 2008 R2?

          • Максим говорит:

            В DBF работает. Делаю выгрузку потом загрузку в SQL и все равно
            ошибка. Делал сначала без пункта №6 и с ним тоже делал.
            Результат одинаковый. Решил проблему путем переноса базы
            папкой, потом обработкой перенес справочники и документы.
            Если интересно могу на почту скинуть скрин ошибки.

          • Виталий Онянов говорит:

            Зато теперь мы знаем, что при создании новой базы, 1С:Предприятие 7.7 прекрасно работает в связке с MS SQL Server 2012! 🙂

  7. Сергей говорит:

    Не загружает старую базу.
    В последний момент выдает:

    SQL State: 42000
    Native: 156
    Message: [Microsoft][ODBC SQL Driver][SQL Server] Incorrect syntax near the keyword ‘SET’.
    SQL State: 42000
    Native: 195
    Message: [Microsoft][ODBC SQL Driver][SQL Server] ‘RECOVERY’ is not a reognixed SET option.
    При это в статусной строке конфигуратора: Очистка журнала транзакций
     

    • Юрий говорит:

      Удалите батник recalc после того как вышибет. И будет Вам счастье. У меня 2 базы такое вытворяли. И пой сей день нормально работают.

    • Дмитрий Старцев говорит:

      Столкнулся стой же проблемой, но удаление recalc не помогло, база была пустая

      Файл bkend.dll приложенный к данной статье содержит ошибку, по смещению 002856B0
      стоит инструкция ALTER DATABASE %S SET RECOVERY SIMPLE где %S — большая, при загрузке базы под MSSQL 2008 вылетает ошибка, база не загружается

      Native 156
      Неправильный синтаксис около ключевого слова SET

      Native 195
      RECOVERY не является известным параметром SET

      при исправлении HEX редактором %S на %s загружается без ошибок.

      • Виталий Онянов говорит:

        Хм… очень странно. Я сам много раз использовал bkend.dll из этой статьи, и никогда проблем не было.
        Причем оригинальная фраза DUMP TRANSACTION %s WITH TRUNCATE_ONLY в файле с маленькой s.
        Может также могут иметь значение настройки Windows и MS SQL Server?

        • Алексей говорит:

          Виталий, столкнулся с такой же проблемой…((( Может быть подскажите решение?

          • Виталий Онянов говорит:

            Попробуйте подправить файл bkend.dll как советует Дмитрий Старцев. Может дело в этом?

      • Вадим говорит:

        У меня такая же проблема, только это сообщение выдаётся при пересчёте служебных данных в тестировании и исправлении, файл bkend.dll подсунул правильный, файла recalc у меня нет

      • Денис говорит:

        Спасибо, правка bkend.dll помогла.

  8. Олег говорит:

    Добрый день! Может кто пользовался набором Solution7 и стабилен ли он. В его описании сказано что не надо будет заменять  ODBC-драйвер. Спасибо.

  9. Dmitriy говорит:

    Запускаю конфигуратор, ставлю галку в чекбоксе MS SQL server, жму ОК и после этого вылетает ошибка- «Ошибка загрузки модуля CONFIG.DLL Подскажите что делать?

    • Виталий Онянов говорит:

      А версия 1С:Предприятие у вас точно для SQL? Попробуйте переустановить платформу.

      • Дмитрий говорит:

        Сэтим разобрался (не в ту папку была установлена конфигурация), теперь другая беда, сделал выгрузку из файловой 1С и теперь надо загрузить в SQL 1C, при загрузке пишет что ….. (забыл) отличается от системного. Как побороть?

        • Александр Трапезников говорит:

          Порядок сортировки отличается? Это легко выгугливается. Разобрались уже?

  10. Олег говорит:

    Отличная статья, большое спасибо автору!

    НО возникает проблема. На последней стадии при загрузке  заранее выгруженной БД возникает ошибка:
    Ошибка последовательности функций

    Подскажите, пожалуйста

    • Виталий Онянов говорит:

      Доброго времени суток. 

      К сожалению никогда с подобным не сталкивался. Могу порекомендовать сделать следующее:

      1. Перед выгрузкой запустить тестирование и исправление ИБ по всем пунктам.

      2. Создать чистую базу, а потом перебросить в нее документы и справочники какой-нибудь обработкой (ссылка на мою обработку), а затем перепровести базу. 

      Оба эти способа довольно трудоемки по времени, но ничего иного пока в голову не приходит.

  11. Дмитрий говорит:

    Здравствуйте,
    Подскажите а на Windows server 2012 возможно такое установить 1С7.7, + с установкой на удален. рабочих столах,  переходный период в бухгалтерии на 1С8 и никак они перейти не могут, все работают баз много.
    заранее спасибо за ответ

    • Виталий Онянов говорит:

      Сам не пробовал, но у Максима вроде бы получилось. Смотрите комментарии выше.

  12. Александр говорит:

    Извиняюсь, не нашёл ответа на вопрос.
    Зачем? Какие преимущества для 7.7 или пользователей даёт использование sql 2008 по сравнению с 2003 и насколько эти преимущества велики?
    а то я как-то просто сервера разделил — 8.2 под sql2008 и win2k8r2, а 7.7 под sql2000 и win2k3r2 — 2 физических сервера (ну то что под 7.7 сервером с натяжкой можно назвать, обычный комп, да юзеров всего ~20 потому хватает)
    а то смотрю, народ так активно загоняет 7.7 под 2008, 2012 sql.. может я чего-то пропустил блин.. 

    • Виталий Онянов говорит:

      Ну я ставил SQL 2008, потому как надо было переводить предприятие на SQL, а в продаже имелась только эта версия SQL-Сервера. Есть ли какие-нибудь преимущества кроме удобства администрирования, трудно сказать.

  13. Василий говорит:

    Добрый день! Подскажите, устанавливаю sql 2008 на server 2003 х32 . Нужно ли там производить замену? Если да то почему после замены пишет  «Ошибка для доступа к базе данных требуется ODBC-драйвер для MS SQL Server версии 3.50.0303 или старше».
    И не мог найти папку syswow, наверное , в 2003 ее нет?

    • Василий говорит:

      хмм… переустановил , вроде все заработало, только когда заливаю базу данных выскакивает ошибка «Неправильный синтаксис около ключевого слова set»

  14. Александер говорит:

    Подскакжите плиз. Все сделал по инструкции. SQL поднялся, в конфигураторе в 7 установил куда подключаться, указал пользователя и пароль. Никаких ошибок не выдало. Но при открытии конфигурации она пустая, при попытке входа в 1С выдает «Ошибка загрузки метаданных». Где, что упустил, не пойму.

    • Виталий Онянов говорит:

      Хм… А данные из выгрузки загрузились нормально? Какой размер базы данных в SQL?

      • Александер говорит:

        Извините за неточность в написании.
        Различие в том, что база создавалась не с нуля, а восстанавливалась из бекапа, сделанного SQL-ем. Ошибок после восстановления никаких не выдало.
        Размер базы 11,6 Гиг

      • Александер говорит:

        Уже популярно объяснили =).
        md файл надо было положить в каталог созданной базы.
        Теперь при попытке входа пишет «Не определены параметры базы данных! Для определения следует воспользоваться Конфигуратором.»

        • Виталий Онянов говорит:

          В итоге у вас все заработало? Решили проблему?

        • Валерий говорит:

          Здравствуйте. Тоже интересно. Точно такое сообщение выдает при попытке подключения из сети клиентом 1с. Разница в том что установлен не Server 2008, а 7 64bit pro. Может подскажете. Или все таки придется ставить серверную платформу?

          • Виталий Онянов говорит:

            Не думаю, что проблема связанна с версией ОС. Статья полностью актуальна и для Windows 7 64bit. А в какой момент у вас возникает ошибка?

          • Валерий говорит:

            Здравствуйте. К сожалению не смог ответить под Вашим комментарием. Проблема возникает в точности как у Александра. Есть подозрение на кривой дистрибутив, полученный из неизвестного источника. Буду другой пробовать. О результатах отпишусь.

  15. bassz говорит:

    Solution7 пробовали 
    вроде как работает без понижения совместимости

  16. ronbk говорит:

    Здраствуйте. Подскажите плиз, а как настроить 1с7.7 для работы одновременно 3 пользователей?

    • Виталий Онянов говорит:

      Вам нужна версия платформы 1С:Предприятие 7.7 для 3 человек или сетевая версия.

      А дальше возможны варианты:

      1. Работа через RemoteApp (Самый лучший для 1C 7.7, но и самый дорогой вариант, т.к. необходим Windows Server 2003 или старше).

      2. Работа 3 пользователей в терминальном режиме (То же самое, что и п. 1).  

      3. Устанавливаете 1С на 3 различных компьютера в одной локальной сети, и прописываете пути к базе, лежащей в расшаренной папке одного из компьютеров.

  17. ronbk говорит:

    Заглянул к человеку и посмотрел как у него настроено 1с 7.7 по сети: Глав бух работает на сервере к нему подключен Бух по локалке и тоже одновременно работает в 1с (клиент настроен так: \\BUH1\E\1c.base\Buh\Net-comp\1SBDB\), подключая третьего пользователя пишет что база недоступна так как уже используется. 

  18. Антон говорит:

    Подскажите какую редакцию лучше ставить для Win Server 2003 sp2 + 1С7.7 + 1C8.2:
    1) SQL Server 2008 R2 Enterprise 2) SQL Server 2008 R2 Standard 
    Различия между ними знаю, но Enterprise  еще не юзал.
    Хватит ли 4Гб ОЗУ, базы 1С сравнительно не большие но их много Бух 7 и ЗиК 7, общее количество пользователей постоянно работающих с базами не больше 15.
    Заранее спасибо! (извиняюсь сразу если где то не грамотно описал)

    • Виталий Онянов говорит:

      Ставьте SQL Server 2008 R2 Standard, его вполне хватит для Ваших нужд.
      Множество баз Бух 7.7 и ЗиК 7.7 вообще не рекомендую Вам переводить на SQL, если в каждой базе одновременно работают 1-2 бухгалтера и объем баз небольшой, то файловая будет работать заметно быстрее.
      4 Гб оперативной памяти обычно не хватает для 15 пользователей. Я бы рекомендовал увеличить объем ОЗУ гигов до 16. Хотя нужно смотреть по реальной нагрузке во время работы пользователей.

  19. Стас говорит:

    Сделал по инструкции, при тестировании выявили: 
    — В случае изменения конфигурации при обновлении ИБ череза раз выдается сообщение: «База данных не может быть открыта в однопользовательском режиме». Далее «Ошибка открытия информационной базы. Программа будет остановлена».
    — В случае УРИБ при загрузке измененной конфигурации через раз аналогичная ошибка

    • Виталий Онянов говорит:

      Да, есть такое. Эта ошибка решается в 6-ом пункте, добавлением представления sksprocesses. Проверьте еще раз, что Вы сделали все правильно.

  20. Дмитрий говорит:

    1C 7.7, SQL 2008r2, WS2003. 1C у пользователь здорово подвисает. Intel Xeon 2Ghz 16Gb.
    Включил AWE чтобы больше памяти было доступно SQL серверу, дал 8Gb. Не помогло. Пользователи работают через терминалы. Можете что нибудь подсказать по этому поводу?

    • Виталий Онянов говорит:

      Сразу трудно сказать почему тормозит. Вариантов может быть множество. Выделю основные: 

      1. Железо:

      Могу посоветовать открыть монитор ресурсов («Диспетчер устройств» — «Быстродействие» — «Монитор ресурсов«) и понаблюдать в течении дня за нагрузкой на процессор / память / жесткий диск. Часто именно жесткий диск является причиной медленной работы 1С. Попробуйте добавить жесткие диски в рейд, установить SSD-диск, выполнить дефрагментацию, добавить файлы данных в исключение антивирусной программы и т. д.

      2. Логические:

      Бывает так, что кривая база данных тормозит даже на очень быстром железе. В этом случае рекомендую обратиться к программисту 1С для выявления проблемных мест в базе данных.

  21. Васили говорит:

    Спасибо за статью, очень помогла.
    Остался не понятным всего один момент: — Для чего каждому пользователю открыть полный доступ к папке, где хранится файлы базы sql?  Для чего открывать полный доступ к каталогу базы 1С, тут понятно. А вот sql — не ясно. Ведь пользователь получает доступ к базе sql не напрямую (к файлам), а через СУБД ms sql. А уже сама СУБД имеет полный доступ к своим файлам.

    • Виталий Онянов говорит:

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

  22. Xandr говорит:

    А как добавить базу в 1С:Предприятии77  если на сервере используется несколько экземпляров SQL сервера?

    • Виталий Онянов говорит:

      Когда вы указываете параметры базы данных SQL (пункт 7), то в качестве сервера указываете сначала физический сервер, знак «\» и затем имя экземпляра SQL-сервера. Например:
      S4\SQLSERV1 — экземпляр SQLSERV1 на сервере S4

  23. Ivisor говорит:

    Просто — спасибо.
    Все делал по рекомендациям — и все заработало.

    Было бы логичным добавить краткое описание и сам плагин (Unload_Dat_Fix) для больших баз 1с 7.7  которые не помещаются в стандартный zip-архив.  Кстати плагин для W7 и W2008 нужен отдельный, не тот который подходит для 2003 сервера!
    Это не критично — можно и самому найти, но обычно на скуль переходят «не от хорошей жизни» 🙂 потому считаю уместным как минимум упомянуть в статье о проблеме загрузки/выгрузки больших баз в 1с7.7.

  24. Glx говорит:

    Здравствуйте, Виталий!
    Огромное спасибо за статью, пока не пробовал реализовать, но в ближайшее время обязательно! В данный момент все работает на sql 2005, а вот если бы перейти на 2008, было бы замечательно. Но почитав интернеты)) как то для себя решил, что 1С 7.7  заточена только под 2000, если с бубном, то и 2005, а про 2008 и подавно не будет.
    А тут Ваша статья!!! Я так понял, и по сей день база предприятия крутится на SQL 2008, и ни каких проблем не возникло в процессе эксплуатации?

    • Виталий Онянов говорит:

      Уже 4 года все базы 1С 7.7 отлично работают на Microsoft SQL Server 2008 R2. А решение всех проблем, которые когда-либо возникали, описаны в данной статье. 🙂

      Кроме того, слышал об успешной работе связки 1С 7.7 + Microsoft SQL Server 2012.

  25. Дмитрий говорит:

    Виталий, добрый день. 
    Ваша статья очень помогла в переносе файловой базы данных на sql, возникла только одна проблема: на клиентских машинах под управлением win7 x86/x64 не хочет запускаться база. Ошибка: Ошибка для доступа к базе данных требуется ODBC-драйвер для MS SQL Server версии 3.50.0303 или старше.
    Все файлики были заменены, на сервере (2008 r2) запускается, по сети — отказывается. Пробовал заменять файлики и на клиентских машинах — так же не помогло. Посоветуйте какие-либо пути решения, уже ума не приложу в чем проблема.
    Заранее спасибо

    • Дмитрий говорит:

      Сам спросил — сам отвечу)
      Помог так называемый секретный релиз 1с 77.27.1

    • Виталий Онянов говорит:

      Странно, у меня после замены файлов odbcbcp.dll, sqlsrv32.dll и sqlsrv32.rll в каталогах C:\Windows\System32 и C:\Windows\SysWOW64 и файла BkEnd.dll в C:\Program Files (x86)\1Cv77\BIN, и на СЕРВЕРЕ и на КЛИЕНТСКИХ машинах все работает.
      Также надо проверить настроен ли брандмауэр на клиентских машинах и на SQL-Сервере. Для проверки можно просто отключить все имеющиеся фаерволы и на клиенте и на сервере.

  26. Бауржан говорит:

    Добрый день!
    При создании представления select * from sysprocesses where cmd ‘checkpoint’ вылетает ошибка: «Ошибка в предложении WHERE рядом с «‘».
    Не удается выполнить синтаксический анализ текста запроса.»
    Помогите пожалуйста! что нужно поствит where рядом с

    • Виталий Онянов говорит:

      Наверное при копировании фразы из браузера неправильно поставились кавычки (апостроф). Проставьте их руками.
      Код символа в ASCII — 39.
      (Наберите код с зажатой клавишей Alt)

  27. Бауржан говорит:

    Спс огромное все на писалось правильно как вы и говорили ковычки! Но вот другая проблема на основном компьютере работает а вот когда на другом хочу соединиться то нет соединение пишет! у меня основная Windows 8.1 Корпоративная установлена хочу соединит на windows XP пишет даже когда в 1С Конфигураторе в параметры базы данных SQL что нет соединение

    • Виталий Онянов говорит:

      Если SQL-сервер и 1С установлены на разных компьютерах, то для того чтобы 1C «увидел» SQL-сервер, на последнем необходимо открыть соответствующие порты (по умолчанию порт 1433). Как отрыть порт на сервере можно прочитать в статье Добавление правила в Брандмауэр Windows Server 2008 R2.

      Для проверки попробуйте отключить все возможные файерволы и на сервере и на клиенте. Будет ли соединяться в этом случае?

      • Бауржан говорит:

        SQL State: 08001
        Native: 17
        Message: [Microsoft][ODBS SQL Server Direver][DBNETLIB]SQL — сервер не существует, или отсуствует доступ.

        SQL State: 01000
        Native: 53
        Message: [Microsoft][ODBS SQL Server Direver][DBNETLIB]ConnectionOpen (connect()).

        вот такое сообщение выходит порт открыл 1433

        в Брандмауэре открыт порт 1433 а при командной строке он закрыт уже не знаю файервола нет Антивирус отключил все равно такое

        telnet проверке 1433 закрыт не могу понят как открыт а 1947 порт открыт

        • Виталий Онянов говорит:

          Попробуйте вообще отключить брандмауэр и на сервере и на клиенте. Проверьте, что присутствует сетевой доступ от клиентской машины к серверу.
          Будет ли работать подключение в этом случае?

  28. Бауржан говорит:

    отключил Антивирусы, Брандмауэр сервере и клиенте все равно выходит такое сеть ест а вот к подключению ODBC — су нет заменил в system 32 и sysWOW64 odbcbcp.dll а связи все равно нет. Проверил на клиенте «Администратор источник данных ODBC» нет связи пишет уже не знаю где моя ошибка!!

  29. VovaNs говорит:

    Все делаю по инструкции. Конфигурация Windows Server 2008 x64, SQL 2008 R2 1c 7.7. Ошибка при открытии конфигуратора:
    sql state: 42000 Native:102 Неправильный синтаксис около конструкции «1»
    На другом сервере с Windows Server 2003, SQL 2008 R2 1c 7.7 работает.
    В чем может быть проблема???

    • Виталий Онянов говорит:

      Скорее всего у Вас имя базы данных начинается с символа «1».
      Как я писал в статье про создание базы данных: Имя базы данных не должно начинаться с цифры или иметь пробелы в названии, иначе получим ошибку:
      «неправильный синтаксис около конструкции %имя базы данных%».
      (Добавил также и в данную статью)

  30. Андрей говорит:

    Все работало и работает. Но вчера при попытке записать изменения в конфигураторе
    появилась ошибка

    SQL State: HY010
    Native: 0
    Message: [Microsoft][ODBC SQL Server Driver]
    Ошибка последовательности функций

    как бороться ?

  31. Сергей говорит:

    Обнаружили одну проблему в связке 1C 7.7 + SQL 2008 R2.
    Принтеры (используются HP, Canon) при печати из 1С не работают документы по копиям. Пробовали разные версии драйверов, в т.ч. и универсальные.
    Пользователи работают на терминальном сервере c Windows Server 2008 R2.

    • Виталий Онянов говорит:

      Я думаю проблема не в связке 1C 7.7 + SQL 2008 R2. Капайте в сторону драйверов на терминальном сервере и на клиентских компьютерах. Часто помогает следующая последовательность действий:
      1. Обновляете микропрограммное обеспечение принтера (если есть).
      2. Если есть возможность, подключаете принтер физически к терминальному серверу (например, по USB).
      3. Устанавливаете родные драйвера.
      4. Подключаете принтер в сеть.
      5. Ставите на клиентские машины те же самые драйвера, что и на терминальный сервер.
      6. Обновляете версию RDP клиента до 6.

  32. Алексей говорит:

    Спасибо.
    Статья очень помогла.
    Но при загрузке существующей базы выдал ошибку:

    Native: 1505
    Message: [Microsoft][ODBC SQL Server Driver][SQL Server]Выполнение инструкций CREATE UNIQUE INDEX прервано, поскольку обнаружен повторяющийся ключ для объекта с именем «dbo.SC319» и индекса с именем «IDD». Повторяющееся значение ключа: ( B8R ).

    SQL state: 01000
    Native: 3621
    Message: [Microsoft][ODBC SQL Server Driver][SQL Server] Выполнение данной инструкции было прервано.

    • Виталий Онянов говорит:

      Трудно сказать, как бороться с данной ошибкой.
      Могу посоветовать создать чистую базу (с вашей конфигураций), а затем перегрузить в нее данные какой либо-обработкой.
      (Стандартной или, например, вот этой)

  33. Вячеслав говорит:

    Доброго времени суток.
    Попробую спросить, так как копание в гуглах и яндексах не помогает.
    Есть сеть около 10 компов Winx64. Есть Сервер 2008r2 enterprise + sql2005+1C7.7 и базой в 16ГГб
    На сервере всё отлично запускается. 7ка летает. 12 ядер и 32 оперативной.
    Поиск по всей базе максимум 5-7 секунд. А вот на клиентских машинах тот же поиск может занять 20-30 секунд.
    После долгих поисков, чтений и тонкой настройки и т.п. отключил NamedPipe в конфигураторе sql2005 и получил прирост на 5-10 секунд, теперь задержка получается в 10-25 секунд при запросах на поиск.
    Но все равно это очень большая задержка.
    Думал в сторону железа. Подключился к серверу через свитч, в обход гигабитных свитча и маршрутизатора. Но получил крайне незначительный прирост в 1-2 секунды (по ощущения). При этом не важно сколько работает пользователей 1 или 5..
    Сталкивались ли Вы с таким?

    • Виталий Онянов говорит:

      А как у вас пользователи подключаются к 1С с клиентских компьютеров? Работают на сервере через RDP (RemoteApp), или же 1С установлена непосредственно на компьютеры пользователей а каталог с файлами информационной базы расшарен в сети? Не совсем понял данный момент из вашего вопроса.

  34. marv говорит:

    Добрый день, после рестарта сервера представление нужно пересоздавать/»выполнять» по новой?

    • Виталий Онянов говорит:

      Нет, представление нужно создать только один раз. Оно сохранится в базе данных master.

      • marv говорит:

        Странно, после отключения эл. энергии пару дней постоянно сталкивался с ошибкой при автообмене («может быть открыта только в однопользовательском режиме»). Представление было создано, посмотрим как будет дальше.

        Спасибо.

  35. Петр говорит:

    Добрый день Виталий.
    Все сделал по вашим статьям (установилSQL2008+1C7.7) но сталкнулся с проблемой две недели все работало отлично сейчас при проведении документов жуткие тормоза. помогите разобраться в чем дело. Server Xeon E3-1220 3.1Ghz ram-16Gb HDD-2tb sata3-raid1 база весит 2гб, на этом же сервере работают 10 терминальных клиентов

  36. Сергей говорит:

    после установки выдает такую ошибку sql state:42502 native:208 что делать?

    • Виталий Онянов говорит:

      Уточните, пожалуйста, в какой именно момент у вас возникает данная ошибка?

  37. Максим говорит:

    Когда создаю представление sksprocesses выходит эта ошибка(http://pixs.ru/showimage/oshibkapng_1256179_14785218.png).
    Данные (select * from sysprocesses where cmd «checkpoint») Windows SQL Server 2008 R2

  38. Максим говорит:

    Решил проблемы без where cmd «checkpoint»

    • Виталий Онянов говорит:

      Не поделитесь, как победили проблему без создания представления?

  39. евгений говорит:

    добрый день. благодаря вам, успешно залил на 2008 сервер стандарт, ms sql 2008. 1с 7.7 заработала, но при загрузке базы из 1с 7.7, ms sql 2000 получаем ошибку 42s02 native 208 недопустимое имя объекта »master..sksprocesses». в чём может быть проблема???

    • Виталий Онянов говорит:

      Доброго времени суток.
      Не встречал подобную ошибку раннее.
      Как вы загружаете данные? С помощью действий «Выгрузить»/«Загрузить» средствами платформы «1С:Предприятие» 7.7, или бекапами SQL?
      Попробуйте различные варианты выгрузок, вплоть до использования различных обработок для переноса данных.

      • евгений говорит:

        базу переносил средствами 1с. проблема решилась созданием представления в базе данных мастер, в дальнейшем ещё и права добавить пришлось, иначе не копировал часть базы, . вот тут описано http://www.forum.mista.ru/topic.php?id=574590
        Идем в скуль, разворачиваем «базы данных» — «системные базы данных» — «master», тыкаем на «представления», выбираем «создать представление». Если выскочило «добавление таблицы», жмакаем закрыть, в поле кода (там по дефолту стоят select и from) копируем следующий текст: select * from sysprocesses where cmd ‘checkpoint’ и нажимаем кнопку «выполнить код sql» (находится выше слева, красный восклицательный знак), если код поменялся и не выскочило ошибок — это хорошо, жмем сверху кнопку «сохранить» и называем это представление вот так: sksprocesses » и потом ставим права юзеру на выборку из этой таблицы.
        а так же пришлось скопировать ручками файлик 1CPP.dll
        теперь вылезла следующая проблема: не обнаружен установочный файл для просмотра пдф изображения loader=createObject(toy.loader).
        если это он не может показать инструкцию, или как там её ещё назвать, то фиг с ним. но вообще очень много ошибок полезло у меня

        • Виталий Онянов говорит:

          Так у меня это есть в статье. Пункт 6.
          Вы делали его при установке SQL?

  40. евгений говорит:

    Виталий, видать я немного затупил)) опираясь на ваши инструкции, зачем то создал представление в своей новой базе.

  41. евгений говорит:

    создаю пользователя в конфигураторе, захожу под этим пользователем, 1ска думает немного и потом закрывается. вот что нашёл в логах

    20141128;13:37:22;Дятьково;E;Grbgs;GrbgRuntimeErr;5;"Loader = CreateObject( ""Toy.Loader"" ); : {Глобальный модуль(79512)}: Неудачная попытка создания объекта (Toy.Loader)";;
    20141128;13:37:22;Дятьково;E;Sys;CloseSession;0;;;

    может подскажете в чём тут дело?

  42. Евгений говорит:

    А у меня вопрос, не знаю почему никто не спросил,но все же: После загрузки данных в sql’ную базу, мне пришлось скопировать папки пользователей и папки Extforms, ExtDB из dbf’ной базы. Может я что то не так сделал?! Пожалуйста отпишитесь у кого как.

    • Виталий Онянов говорит:

      Да, все верно.
      Из файловой базы можно (но не обязательно) перенести каталог ExtForms, в нем содержатся внешние отчеты, печатными формами и пр.

  43. Евгений говорит:

    Так, у меня еще косяк:
    «При выполнении транзакции произошла ошибка объект заблокирован…»

    Что с этим делать??

    • Евгений говорит:

      Ошибка эта возникает при добавлении платежки.

      Точнее мои действия:
      Захожу в журналы->банк, беру на изменение последнюю выписку, в одной из строк хочу поменять платежный документ, проваливаюсь в словарь, размножаю счет изменяя в нем наименование, нажимаю ОК, все сохраняет, но при этом если открыть на изменение этот документ, то увидим пустую графу Наименование. Если потом пробовать добавлять или изменять документы, то выходит ошибка о транзакциях.

      • Евгений говорит:

        Тестирование и исправление не помогает, выгрузка-загрузка из sql в sql не помогает

        • Евгений говорит:

          в общем вдруг кому понадобится:
          Решение найдено! Надо было просто удалить этот документ и после удаления можно нормально работать. Абсолютно не понятно почему образуется такая ошибка, но образовалась она в двух базах. Всем спасибо за переживания, пойду наконец посплю))

          • Виталий Онянов говорит:

            И вам спасибо, за то, что поделились решением. 🙂

  44. Дмитрий говорит:

    Здравствуйте, делаю все по статье, но на этапе создания представления, у меня после нажатия кнопки «Выполнить код SQL» выскакивает ошибка «Выполняемая инструкция SQL: SELECT * FROM sysporocesses WHERE cmd ‘CHECKPOINT’
    Источник ошибки: .Net SqlClient Data Provider
    Сообщение об ошибке: Неправильный синтаксис около конструкции «‘».
    Подскажите в чем может быть проблема?

    • Дмитрий говорит:

      Фильтр заблокировала знаки больше и меньше, но писал я все верно, копировал с сайта прямо.

  45. Игорь говорит:

    Создание представления sksprocesses в MS SQL Server
    Уже установлена база 8, этот пункт повлияет на нее? Нуб.

  46. Сергей говорит:

    Здравствуйте. Как самостоятельная база всё работает на Windows Server 2008, SQL 2008. Но еще установлена периферийная база на Windows Server 2003, SQL 2000. Не работает загрузка из периферийной базы в центральную по РИБ (при обмене 1С зависает). Может быть проблема из-за несоответствия форматов SQL 2000 и 2008?

    • Виталий Онянов говорит:

      Доброго времени суток.
      Никогда не приходилось сталкивать с РИБ, работающими на разных версиях SQL Server.
      Могу предположить, что дело в разной кодовой странице ИБ. Попробуйте покапать в эту сторону.

  47. Юрий говорит:

    А если 1с портативная версия?

    Полностю проигнорировал пункт 5. Установка 1С:Предприятие 7.7

    Теперь необходимо установить 1С:Предприятие 7.7, ставим версию для SQL. Об особенностях установки читайте в статье «Установка системы 1С:Предприятие 7.7 в Windows x64».

    Так как она портативная сетевая и работает не устанавливаясь.

    6. Патч и замена файла BkEnd.dll

    Теперь необходимо заменить файл BkEnd.dll из оригинальной поставки 1С:Предприятие 7.7, находящего по пути C:\Program Files (x86)\1Cv77\BIN, «пропатченным» файлом BkEnd.dll. Вы можете использовать мой файл, или сделать изменения самостоятельно. О том как и что необходимо в нем изменить читайте в моей статье «Работа в Hex-редакторе Free Hex Editor Neo, на примере патча файла BkEnd.dll для работы 1С:Предприятие 7.7 с Microsoft SQL Server 2008 R2».
    Замену файла делаем для того, чтобы избавиться от ошибок:

    «Требуется MS SQL Server 6.5 + Service Pack 5a или более старшая версия!»
    «Порядок сортировки, установленный для базы, отличается от системного!»
    «Неправильный синтаксис около ключевого слова «TRANSACTION»
    «База данных не может быть открыта в однопользовательском режиме»

    Сделал, но все равно «Требуется MS SQL Server 6.5 + Service Pack 5a или более старшая версия!»

    Или не получится не устанавливая работать?

    Спасибо.

    • Виталий Онянов говорит:

      Я так понимаю, что портативная версия каждый раз распаковывается из архива при ее запуске. Таким образом файл BkEnd.dll каждый раз берется из соответствующего портативного «экзешника» и заменить его не представляется возможным. Рекомендую вам все же установить 1С:Предприятие 7.7, для того, чтобы можно было один раз заменить все необходимые файлы.

      • Юрий говорит:

        Спасибо, буду пробовать. А можно как то пропустить пункт установки на 32битную, ибо тяжело найти комп с такой?.

        • Виталий Онянов говорит:

          В принципе можно, есть всякие вылеченные установщики. Но используя их вы, конечно же, нарушаете лицензионное соглашение. Но если вы использовали портабл версию…

  48. Евгений говорит:

    С такой инструкцией, можно запустить все, вообще не видев никогда ни MS SQL ни 1С. Автору прям низкий поклон!!!

  49. Alex говорит:

    Что я сделал не так — появляется окно параметры данных Sql и далее после ввода всех данных сообщение — доступ к базе данных на сервере может быть осуществлён только её владельцем dbo!

    • Виталий Онянов говорит:

      Проверьте, какой пользователь sql является владельцем базы данных? Именно под этим пользователем (или другим пользователем, обладающим правами на базы) необходимо подключать 1С к базе денных SQL.

      • Alex говорит:

        Что-то не хочет совсем пускать. Ошибка — неправильный синтаксис около конструкции «1». Уточню что у меня есть есть пользователи в самой 1с, а есть пользователи sql сервера. У пользователей 1с есть ник dbo но я под ним не могу зайти. или же нужно создать ещё такого же пользователя под sql? может можно сказать как правильно просто настроить пользователей и их свойства.

        • Alex говорит:

          Просмотрел вопросы ниже по теме — и решил просто не писать не с цифры не длинные названия и всё заработало. А в процессе выгрузки базы выскакивает ошибка — Неправильный синтаксис около holdlock — а как это лечить?

          • Alex говорит:

            Решил вопрос полной проверкой базы 1с.

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

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