1С SQL

Создание и удаление базы данных

Последнее обновление: 09.07.2017

Создание базы данных

Для создания базы данных используется команда CREATE DATABASE.

Чтобы создать новую базу данных откроем SQL Server Management Studio. Нажмем на назначение сервера в окне Object Explorer и в появившемся меню выберем пункт New Query.

В центральное поле для ввода выражений sql введем следующий код:

CREATE DATABASE usersdb

Тем самым мы создаем базу данных, которая будет называться «usersdb»:

Для выполнения команды нажмем на панели инструментов на кнопку Execute или на клавишу F5. И на сервере появится новая база данных.

После создания базы даных, мы можем установить ее в качестве текущей с помощью команды USE:

USE usersdb;

Прикрепление базы данных

Возможна ситуация, что у нас уже есть файл базы данных, который, к примеру, создан на другом компьютере. Файл базы данных представляет файл с расширением mdf, и этот файл в принципе мы можем переносить. Однако даже если мы скопируем его компьютер с установленным MS SQL Server, просто так скопированная база данных на сервере не появится. Для этого необходимо выполнить прикрепление базы данных к серверу. В этом случае применяется выражение:

CREATE DATABASE название_базы_данных ON PRIMARY(FILENAME=’путь_к_файлу_mdf_на_локальном_компьютере’) FOR ATTACH;

В качестве каталога для базы данных лучше использовать каталог, где хранятся остальные базы данных сервера. На Windows 10 по умолчанию это каталог C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA. Например, пусть в моем случае файл с данными называется userstoredb.mdf. И я хочу этот файл добавить на сервер как базу данных. Вначале его надо скопировать в выше указанный каталог. Затем для прикрепления базы к серверу надо использовать следующую команду:

CREATE DATABASE contactsdb ON PRIMARY(FILENAME=’C:\Program Files\Microsoft SQL Server\MSSQL13.MSSQLSERVER\MSSQL\DATA\userstoredb.mdf’) FOR ATTACH;

После выполнения команды на сервере появится база данных contactsdb.

Удаление базы данных

Для удаления базы данных применяется команда DROP DATABASE, которая имеет следующий синтаксис:

Модель работы с базой данных

Модель базы данных «1С:Предприятия 8» имеет ряд особенностей, отличающих ее от классических моделей систем управления базами данных (например, основанных на реляционных таблицах), с которыми имеют дело разработчики в универсальных системах.

Основное отличие заключается в том, что разработчик «1С:Предприятия 8» не обращается к базе данных напрямую. Непосредственно он работает с платформой «1С:Предприятия 8». При этом он может:

  • описывать структуры данных в конфигураторе,
  • манипулировать данными с помощью объектов встроенного языка,
  • составлять запросы к данным, используя язык запросов.

Платформа «1С:Предприятия 8» обеспечивает операции исполнения запросов, описания структур данных и манипулирования данными, транслируя их в соответствующие команды. Это могут быть команды системы управления базами данных, в случае клиент-серверного варианта работы, или команды собственного движка базы данных для файлового варианта.

Общая система типов

Важной особенностью работы с базой данных является то, что в «1С:Предприятии 8» реализована общая система типов языка и полей баз данных. Иными словами, разработчик одинаковым образом определяет поля базы данных и переменные встроенного языка и одинаковым образом работает с ними.

Этим система «1С:Предприятие 8» выгодно отличается от универсальных инструментальных средств. Обычно, при создании бизнес-приложений с использованием универсальных сред разработки, используются отдельно поставляемые системы управления базами данных. А это значит, что разработчику приходится постоянно заботиться о преобразованиях между типами данных, поддерживаемыми той или иной системы управления базами данных, и типами, поддерживаемыми языком программирования.

Хранение ссылок на объекты

При манипулировании данными, хранящимися в базе данных «1С:Предприятия 8», зачастую используется объектный подход. Это значит, что обращение (чтение и запись) к некоторой совокупности данных, хранящихся в базе, происходит как к единому целому. Например, используя объектную технику, можно манипулировать данными справочников, документов, планов видов характеристик, планов счетов и т.д.

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

Эта ссылка также хранится в поле базы данных, вместе с остальными данными объекта. Кроме того, ссылка может быть использована как значение какого-либо поля другого объекта. Например, ссылка на объект справочника Контрагенты может быть использована как значение соответствующего реквизита документа Приходная накладная.

Составные типы

Существенной возможностью модели данных, которая поддерживается «1С:Предприятием 8», является то, что для поля базы данных можно определить сразу несколько типов данных, значения которых могут храниться в этом поле. При этом значение в каждый момент времени будет храниться одно, но оно может быть разных типов — как ссылочных, так и примитивных — число, строка, дата и т.п.:

Такая возможность очень важна для экономических задач — например, в расходной накладной в качестве покупателя может быть указано либо юридическое лицо из справочника организаций, либо физическое лицо из справочника частных лиц. Соответственно, при проектировании базы данных разработчик может определить поле, которое будет хранить значение любого из этих типов.

Хранение любых данных как Хранилище значения

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

Для этого введен специальный тип данных — ХранилищеЗначения. Поля базы данных могут хранить значения такого типа, а встроенный язык содержит специальный одноименный объект, позволяющий преобразовывать значения других типов к специальному формату Хранилища значений.

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

Создание и обновление структур данных на основе метаданных

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

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

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

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

Все, что требуется сделать разработчику — щелчком мыши добавить к справочнику табличную часть и задать два ее строковых реквизита: Имя и Родство. При сохранении или обновлении конфигурации платформа самостоятельно выполнит реорганизацию структуры базы данных, создаст необходимые таблицы и т.д.

Объектный / табличный доступ к данным

Штатной возможностью «1С:Предприятия 8» является поддержка двух способов доступа к данным — объектного (для чтения и записи) и табличного (для чтения).

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

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

В табличной модели все множество объектов того или иного класса представляется как совокупность связанных между собой таблиц, к которым можно обращаться при помощи запросов — как к отдельной таблице, так и к нескольким таблицам во взаимосвязи:

В этом случае разработчик получает доступ к данным сразу нескольких объектов, что очень удобно для анализа больших объемов данных, например, при создании отчетов. Однако в силу того, что данные, выбираемые таким способом, содержат не все, а лишь некоторые реквизиты анализируемых объектов, табличный способ доступа не позволяет изменять эти данные.

База данных – это физический объект на диске сервера представляющий из себя связанные таблицы. Для создания существует два метода:

  • С помощью инструкций Transact-SQL;
  • Средствами графической среды MS SQL Server.

Они рассмотрены в соответствующих разделах ниже.

Средствами обозревателя объектов MSSMS

Для возможности создания баз этим способом запустите MS SQL Server Management Studio и у становите соединение с сервером.

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

Как видно на рисунке выше на сервере уже созданы 4 системные базы данных: master, model, msdb и tempdb. Добавим к ней еще одну, пользовательскую:

  1. Щёлкните правой кнопкой по пункту «База данных».
  2. В контекстном меню выберите «создать базу данных» (верхняя строка).

Откроется мастер создания баз данных.

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

Шаг увеличения – это порог размера, при превышении которого база будет автоматически увеличена в 2 раза.

Средствами Transact SQL

Для создания баз данных в Transact SQL предназначена инструкция CREATE DATABASE. Ее обобщенная форма представлена ниже:

CREATE DATABASE testdb { file_spec1} ,…]

Конструкция CREATE DATABASE состоит из 4 необязательных блока. Обязательно лишь указывать имя новой базы данных (БД), в нашем случае – testdb. Согласно синтаксически правилам MS SQL Server имя БД не может быть длиннее 128 символов.

Инструкция после выполнения создаст файл базы данных на диске. MS SQL Server поддерживает 32 767 баз данных (215). Шаблон для формирования пустой базы инструкция берет из системной базы данных model.

ON указывает что файл базы данных указывается явно. Если его не использовать, система сделает это сама неявно. Параметр PRIMARY указывает на файл системных таблиц, если не указан, то выбирается первый в списке файл.

LOG ON создает системных журнал или файл транзакций, в который записываются все изменения в базе данных, для возможности ее восстановления при сбое. Если не указан, будет создан все равно.

В опции COLLATE программист может указать способ сортировки БД. Если не указан используется способ сортировки по умолчанию.

FOR ATTACH позволяет присоединить к создаваемой базе уже существующий набор данных. Если указать параметр ATTACH_REBUILD_LOG, вместо ATTACH – то присоединится набор данных операционной системы.

Пример использования:

USE master; GO CREATE DATABASE test ON (NAME = Sales_dat, FILENAME = ‘C:\Briarius\MSSQLBASES\testdat.mdf’, SIZE = 20, MAXSIZE = 120, FILEGROWTH = 5 ) LOG ON ( NAME = Sales_log, FILENAME = ‘C:\Briarius\MSSQLBASES\testlog.ldf’, — Файл транзакций и путь к нему. SIZE = 10MB, — размер в мегабайтах, указано явно. MAXSIZE = 100MB, — максимальный размер в мегабайтах. FILEGROWTH = 5MB ) ; GO

Обратите внимание на блоки опций ON и LOG ON, они практически одинаковы. Разница в том, что первая задает сам файл базы, вторая – файл транзакций. Параметр FILENAME указывается потому, что опушен PRIMARY. Допустимо указывать несколько файлов баз и несколько журналов транзакций.

Инструкция USE используется чтобы задать текущую базу данных. Сейчас это – master.

Go группирует запрос по пакетам и позволяет выполнить каждый из них столько раз сколько указано в ее параметре. Например, GO (5) – пять раз. Ее использование, то есть разбивка кода по пакетам – хороший стиль программирования – группирует блоки и всегда можно вписать параметр, в зависимости от того сколько раз код должен быть выполнен.

В 8-ых версий нет встроенной функции получения каталога базы данных, так напишем ее,
Код 1C v 8.2 УП //Получить представление информационной базы для отображения пользователю.
// Пример возвращаемого результата:
// — для ИБ в файлом режиме: \\FileServer\1c_ib\
// — для ИБ в серверном режиме: ServerName:1111 / information_base_name
Функция ПолучитьПредставлениеИнформационнойБазы() Экспорт
Если ПустаяСтрока(СтрокаСоединенияИнформационнойБазы) Тогда
СтрокаСоединенияИнформационнойБазы = СтрокаСоединенияИнформационнойБазы();
КонецЕсли;
ЭтоФайловаяИБ = Найти(Врег(СтрокаСоединенияИнформационнойБазы), «FILE=») = 1;
Если ЭтоФайловаяИБ Тогда
ПутьКБД = Сред(СтрокаСоединенияСБД, 6, СтрДлина(СтрокаСоединенияСБД) — 6);
ФайловаяБД = Истина;
Иначе
// надо к имени сервера прибавить имя пути информационной базы
ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), «SRVR=»);
Если ПозицияПоиска <> 1 Тогда
Возврат Неопределено;
КонецЕсли;
ПозицияТочкиСЗапятой = Найти(СтрокаСоединенияСБД, «;»);
НачальнаяПозицияКопирования = 6 + 1;
КонечнаяПозицияКопирования = ПозицияТочкиСЗапятой — 2;
ИмяСервера = Сред(СтрокаСоединенияСБД, НачальнаяПозицияКопирования, КонечнаяПозицияКопирования — НачальнаяПозицияКопирования + 1);
СтрокаСоединенияСБД = Сред(СтрокаСоединенияСБД, ПозицияТочкиСЗапятой + 1);
// позиция имени сервера
ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), «REF=»);
Если ПозицияПоиска <> 1 Тогда
Возврат Неопределено;
КонецЕсли;
НачальнаяПозицияКопирования = 6;
ПозицияТочкиСЗапятой = Найти(СтрокаСоединенияСБД, «;»);
КонечнаяПозицияКопирования = ПозицияТочкиСЗапятой — 2;
ИмяИБНаСервере = Сред(СтрокаСоединенияСБД, НачальнаяПозицияКопирования, КонечнаяПозицияКопирования — НачальнаяПозицияКопирования + 1);

ПутьКБД = ИмяСервера + «/ » + ИмяИБНаСервере;
ФайловаяБД = Ложь;
КонецЕсли;
Возврат ПутьКБД;
КонецФункции
ТОЛЬКО эта функция работает для файлового варианта базы данных:
Код 1C v 8.х
Функция КаталогИБ()
СтрокаСоединенияСБД = СтрокаСоединенияИнформационнойБазы();
// в зависимости от того файловый это вариант БД или нет, по-разному отображается путь в БД
ПозицияПоиска = Найти(Врег(СтрокаСоединенияСБД), «FILE=»);
Если ПозицияПоиска = 1 тогда
// Файловая
Возврат Сред(СтрокаСоединенияСБД,7,СтрДлина(СтрокаСоединенияСБД)-8)+»\»;
Иначе
// Серверная — Используем КаталогВременныхФайлов()
Возврат КаталогВременныхФайлов();
КонецЕсли;
КонецФункции
Для серверного — используйте другие каталоги, например:
Код 1C v 8.х
КаталогВременныхФайлов(); //Возвращает что-то типо: C:\Documents and Settings\E.S.Migachev\Local Settings\Temp\
КаталогПрограммы(); //Возвращает что-то типо: C:\Program Files\1cv81\bin\

Материал предоставлен сайтом www.learn1c.ru/

Итак, SQL сервер запущен. Теперь самое время создать базу данных, с которой будет работать программа 1С. Несмотря на всю простоту этой процедуры, в ней есть несколько особенностей, о которых Вам следует знать. Запустите программу «Enterprise Manager». Поставьте курсор на название сервера и из контекстного меню выберите пункт «Свойства». Перейдите на закладку «Security»:

Материал, изложенный в этой главе, описан для случая авторизации «SQL Server and Windows».

Если же у Вас будет выбрана авторизация «Windows only», то при попытке подключения 1С к SQL серверу, Вы получите сообщение, аналогичное приведенному ниже:

О том, как в 1С настраивается подключение к SQL серверу, я расскажу позже.

📌 Реклама Отключить

Кто владелец базы данных?

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

Чтобы посмотреть настройки подключения, поставьте курсор на название сервера и из контекстного меню выберите пункт «Edit SQL Server Registration properties …»:

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

Определить владельца существующей базы очень легко — просто посмотрите ее свойства. По приведенному ниже рисунку видно, что владелец базы pubs — учетная запись sa.

📌 Реклама Отключить

Если же Вы авторизовались средствами Windows и создали новую базу, то информация о ее владельце будет выглядеть немного иначе:

Вы можете спросить, зачем нужно знать владельца базы данных?
Отвечаю: доступ к базе данных из 1С может быть осуществлен только ее владельцем. Если это правило нарушается, при сохранении параметров базы данных SQL или при запуске 1С выдается следующее сообщение:

Есть уточнение — доступ от имени sa разрешен, даже если владелец базы данных не sa.

Предвижу Ваше желание подключать 1С к SQL серверу от имени учетной записи sa. Это не самая лучшая идея, т.к. у этой учетной записи полные права на управление SQL сервером. Для работы 1С лучше завести отдельную учетную запись с ограниченными правами. Назовем ее Login1C.

📌 Реклама Отключить

Управление учетными записями производится в ветке «Security»:

Создайте новую учетную запись с именем Login1C. На закладках «Server Roles» и «Database Access» не проставляйте никаких галочек:

Следующий шаг — сделать учетную запись Login1C владельцем базы данных. Эту операцию надо выполнять, когда база данных уже создана. Поскольку на данном этапе мы еще не создали свою базу, я расскажу, как это сделать на примере базы pubs.

Запустите программу «Query analyzer». В выпадающем списке баз данных выберите базу pubs. В окне запросов наберите команду

sp_changedbowner ‘Login1c’ Выполните ее. Вы должны получить следующий результат:

📌 Реклама Отключить

Владелец базы изменится на Login1C:

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

Создаем свою базу

Новая база создается в ветке «Databases»:

В поле «Name» введите имя Вашей базы, например, Base1C. В поле «Collation name» оставьте значение по умолчанию — » (Server default)»:

Перейдите на закладку «Data Files». Здесь Вам следует проверить, где SQL сервер предлагает расположить файл данных. Изначально в поле «Location» должен быть выбран путь, который во время установки мы указали SQL серверу в качестве папки для файлов данных. Если Ваши жесткие диски разбиты согласно таблице из главы «SQL сервер для 1С: установка операционной системы», то файл данных должен находиться на диске F:

📌 Реклама Отключить

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

Если Вы только собираетесь начинать учет в программе 1С, то имеет смысл установить небольшое значение этого параметра, например, 100 Мб. Если же Вы переносите на платформу SQL существующую базу 1С размером, скажем, 1,5 Гб, то укажите в этом поле значение 1500 Мб. Поступив подобным образом, Вы выиграете в скорости загрузки данных в базу SQL, ведь файлу данных не придется постоянно увеличиваться в размере по мере его заполнения.

Обратите внимание на настройки внизу закладки:

Обязательно оставьте установленной галочку «Automatically grow file». Это позволит SQL серверу автоматически увеличивать размер файла данных по мере его заполнения. Остальные настройки оставьте по умолчанию (как на рисунке). Тогда при необходимости ваш файл данных будет увеличиваться на 10% от его текущего размера. Ставить меньшее значение не советую, так как в этом случае операции по увеличению размера файла будут происходить довольно часто, и это скажется на производительности SQL сервера.

📌 Реклама Отключить

Перейдите на закладку «Transaction Log». Вы видите те же самые поля, что и на закладке «Data Files». Здесь Вам следует указать расположение файла транзакций и его начальный размер. Руководствуйтесь теми же принципами, что и при настройке файла данных.

После указания всех параметров нажмите кнопку «ОК» и запишите базу данных.

Откройте свойства вновь созданной базы данных и перейдите на закладку «Options».

Что Вы скажете, если в результате сбоя (не важно какого) будет потеряна работа вашего предприятия за 1 день? Наверное, Вы будете не в восторге, да и все сотрудники тоже. Если такая перспектива Вас не устраивает, выбирайте модель восстановления «Full». Я пока не буду вдаваться в подробности, но выбор этой модели позволит Вам создавать архивные копии через небольшие промежутки времени при работающей программе 1С. Одно дело потерять работу предприятия за 10 минут, другое дело — за сутки.

📌 Реклама Отключить

Установите флажки остальных настроек как показано на рисунке. Ни в коем случае не ставьте флажок «Auto shrink», если только Вы не хотите периодически чувствовать провалы в скорости работы 1С. Вам незачем позволять серверу сжимать базу данных без вашего ведома.

Сохраните внесенные изменения. Измените владельца базы данных, как было описано выше. Теперь ваша база готова для работы с 1С.

Подключение базы данных к 1С

Еще чуть-чуть, и Вы сможете начать работать в SQL версии 1С. Осталось настроить подключение 1С к SQL серверу.

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

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

📌 Реклама Отключить

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

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

В следующей главе мы рассмотрим вопросы архивирования базы данных средствами SQL сервера.

Примечание: в статье отражено мое мнение по настройке сервера. Оно может не совпадать с Вашим мнением и / или мнением других специалистов.

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

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