Настройка резервного копирования

Все данные, внесенные в программу ArchiMed, хранятся на специальном сервере (Карты, Записи, Документы, Счета, Организации, Лабораторные исследования и т.д.), который может выйти из строя по разным причинам. Соответственно данные, хранимые на нем, могут быть утеряны навсегда. Для защиты от подобных ситуаций было разработано приложение ArchiDBServices, которое позволяет автоматически делать резервные копии этих данных, и позволяет восстановить их при необходимости.

Установка

Для установки приложения необходимо иметь в наличии файл «ArchiDBServices.exe». Файл идет в стандартной поставке ArchiMed+ и находится в папке «Создание резервной копии».

Запустите его от имени администратора, откроется окно защиты системы (актуально для Windows 8 и Windows 10), затем нажмите «Да».

Настройка

Откроется окно «Центр управления Archi», в меню «Обслуживание БД» нужно установить службу.

Далее нажимаем Служба — Настройки службы.

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

Параметры подключения:

  • Имя сервера — указать имя сервера или его IP. Внимание: обязательно через запятую прописать порт 1433;
  • Имя пользователя — указать имя пользователя для подключения к базе данных. Обычно «sa»;
  • Пароль — указать пароль для доступа к базе данных;

Для проверки настроек нажмите на кнопку «Проверить соединение». Если настройки указаны верно, то откроется окошко с уведомлением.

В папке резервных копий БД нужно указать путь к папке, где будут храниться бэкапы. Создаем отдельную папку под названием «backup» (бэкап), желательно на другом диске. Если диск один, подойдет съемный носитель, который будет постоянно в компьютере. Далее сохраняем настройки.

После этого нужно в разделе «Службы» настроить график резервного копирования базы. Для этого нажмите на кнопку службы «Расписание резервного копирования». Откроется окно для добавления расписания.

Для добавления расписания, нажмите на кнопку «Добавить».

Откроется окно с настройками расписания.

Где указать:

  • Время — время создания резервной копии (в этот момент сервер должен быть включен).
  • База данных — база данных ArchiMed;
  • Имя файла — путь к папке резервной копии (прописывается автоматически);
  • Архивировать — архивация копии для экономии места;
  • Удалять старые — удаление основного bak-файла для экономии места;

Проставляем галки по всем пунктам, как на фото, представленное выше (рекомендуется).

ВНИМАНИЕ! Рекомендуется делать копии в момент минимальной загрузки сервера.

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

Ошибка сервера ключей

Ошибка соединения с сервером ключей: Socket Error # 10061

Безымянный

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

Решение проблемы:

1)Мы должны проверить настройки подключения к серверу ключей. Для этого нажимаем кнопку ОК.

Безымянны2й

 

Проверяем настройки ip адреса и номер порта, по которым находится сервер ключей.

2) Мы должны проверить запущено ли приложение Medserver.exe

Безымянный4

если файл не загружен, то запускаем приложение medserver.exe Как правило ярлык для запуска находиться в автозагрузке в меню «ПУСК»

Безымянный3

 

Либо необходимо проверить запущена ли служба сервера ключей ArchiKeyServer.exe , в зависимости от того что было настроено при первичной установки программы (служба ArchiKeyServer.exe или приложение  Medserver.exe)

 

 

Если выходит ошибка при попытке распечатать печатную форму “canvas do not allow drawing”

Чтобы исправить ошибку, нужно открыть форму для редактирования.

Открыть раздел Отчет->Настройки. В Настройках печати принтер выбрать «По умолчанию». Перезапустить Архимед.

Если не поможет зайти в те же настройки, только нужно выбрать принтер, с которым работает данный компьютер. Перезапустить Архимед.

Если и это не поможет, зайти в Настройки системы(зеленый значок Архимеда).

Сервис -> Настройки системы -> раздел «Другое»(третий снизу)-> Принтер для печатных форм ->Выбрать принтер. Перезапустить Архимед.

Ошибка “Превышен максимальный уровень вложенности хранимой процедуры, функции, триггера или представления (ограничение 32)”

Данная ошибка может выходить при открытии договора организации (Справочники — Организации — открываем на редактирование любую из выбранных организаций — вкладка “Договоры” — открываем на редактирование договор), либо при нажатии на кнопку «Аванс» в модуле «Платные услуги».

Может быть две причины, почему возникает такая ошибка:

Случай 1:

нужно запустить скрипт 1

select * 

from GROUPSERVICES

where OWNER = ID

Где GROUPSERVICES — таблица , где хранятся группы услуг, OWNER — поле в таблице GROUPSERVICES, которое указывает на “родителя” этой записи, ID — идентификатор записи.

Если при выполнении этого запроса вышел результат с записями, получается, что “родитель” ссылается сам на себя, такого быть не может! В таком случае надо выяснить, к какой родительской группе принадлежит данная запись(можно зайти в прайс, по названию группы услуг определить, где находится она), либо если у неё нет родителя, нужно обновить OWNER этой записи, поставить 0, то есть нужно выполнить один из скриптов:

1.1 если эта запись принадлежит к какой-то родительской группе:

update  GROUPSERVICES

set OWNER = здесь указываете ID родительской группы

where ID = здесь указываете ID записи

1.2 если у записи нет родителя

update  GROUPSERVICES

set OWNER = 0

where ID = здесь указываете ID записи

Случай 2:

Когда группа услуг ‘A’ является с одной стороны родителем для группы услуг ‘B’, но с другой стороны эта группа услуг ‘B’ тоже является родителем для группы услуг ‘A’. Из-за данной особенности получается бесконечная рекурсия и возникает ошибка. 

Скрипт, который отобразит данные группы:

Select * from  GROUPSERVICES GS

where 

GS.OWNER IN (Select GS2.ID FROM GROUPSERVICES GS2 WHERE GS2.OWNER = GS.ID)

Исправление ошибки при присоединении базы данных «Ошибка 5120 MS SQL Server»

Иногда при попытке присоединить локальную базу данных из MS SQL Server Management Studio возникаетошибка «Ошибка операционной системы. Microsoft SQL Server, ошибка 5120».

Аварийное сообщение выглядит следующим образом :

Всё дело в опциях доступа Пользователя к подкаталогу, в котором находится база данных. Чтобы изменить их, жмём в Проводнике на правую кнопку мыши нужного каталога и выбираем «Свойства»:

Затем  выбираем вкладку «Безопасность»,  выбираем Пользователи и жмём кнопку «Изменить»:

Далее выставляем галочки в разрешениях «Полный доступ» и «Изменение»:

Для надёжности можно пройтись подобным образом и по другим группам: «Администраторы» и «Система».

После проведённого  «лечения» присоединение к базе в SQL Server Management Studio должно произойти без проблем.

Ошибка соединения с базой данных

[DBNETLIB][ConnectionOpen (Connect()).] SQLServer не существует, или доступ запрещен

Чтобы программа заработала, нужно:

  1.  получить доступ к серверу клиники;
  2.  зайти в список служб сервера, найти службу SQL Server(SQLEXPRESS), нажать на кнопку “Запустить”: 

Настройка filestream в базе данных на примере таблицы ATTACHMENT_FILES

 1. Запускаем диспетчер конфигурации MS SQL Server;

 2. В свойствах сервера во вкладке “Filestream” включаем все настройки(отмечаем все галочки), сохраняем, перезапускаем службу MS Sql Server:

 3. Запускаем скрипт :

EXEC sp_configure filestream_access_level, 2

RECONFIGURE;

4. Делаем резервную копию базы данных;

 5. С помощью скрипта создаём Файловую группу:

— Создание файловой группы FILESTREAM

ALTER DATABASE [название БД]
ADD FILEGROUP [attach] CONTAINS FILESTREAM;

 6. С помощью скрипта добавляем файл в файловую группу:

— Добавление файла в файловую группу. Скрипт сам создаст папку.

ALTER DATABASE [название БД]
ADD FILE (
NAME = N’attach_file’,
FILENAME = N’C:\Archimed\Filestream’ — путь к ПАПКЕ, не к файлу
) TO FILEGROUP [attach];

7. С помощью скрипта создаем таблицу:

CREATE TABLE [dbo].[ATTACHMENT_FILES_NEW](

[ID] [dbo].[DT_ID] IDENTITY(1,1) NOT NULL,

[ROWGUID] uniqueidentifier rowguidcol DEFAULT newid() NOT NULL

UNIQUE,

[NAME] [dbo].[DT_STR200] NULL,

[EPMZID] [dbo].[DT_REF] NOT NULL,

[CONTENT] varbinary(max) FILESTREAM NULL,

[UPDDATETIME] [dbo].[DT_DATETIME] NULL,

[ENABLED] [dbo].[DT_ENABLED] NOT NULL,

[AUTHOR] [dbo].[DT_REF] NOT NULL,

[CREATIONDATETIME] [dbo].[DT_DATETIME] NULL,

[EXDATAXML] [dbo].[DT_XML] NULL,

[FILENAME] [dbo].[DT_STR1024] NULL,

[ISOLE] [dbo].[DT_BYTE] NULL,

[ISNATIVFORMAT] [dbo].[DT_BYTE] NULL,

PRIMARY KEY CLUSTERED ( [ID] ASC )

WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]

) ON [PRIMARY]

FILESTREAM_ON [attach]

GO

SET ANSI_PADDING OFF

GO

EXEC sys.sp_addextendedproperty @name=N’MS_Description’, @value=N’Поле содержит расширеный XML (например для док-в Word) это содержимое всех полей формы’ , @level0type=N’SCHEMA’,@level0name=N’dbo’, @level1type=N’TABLE’,@level1name=N’ATTACHMENT_FILES_NEW’, @level2type=N’COLUMN’,@level2name=N’EXDATAXML’

GO

EXEC sys.sp_addextendedproperty @name=N’MS_Description’, @value=N’Имя файла’ , @level0type=N’SCHEMA’,@level0name=N’dbo’, @level1type=N’TABLE’,@level1name=N’ATTACHMENT_FILES_NEW’, @level2type=N’COLUMN’,@level2name=N’FILENAME’

GO

EXEC sys.sp_addextendedproperty @name=N’MS_Description’, @value=N’Файл храниться в «Родном» формате. Иначе в формате OLE’ , @level0type=N’SCHEMA’,@level0name=N’dbo’, @level1type=N’TABLE’,@level1name=N’ATTACHMENT_FILES_NEW’, @level2type=N’COLUMN’,@level2name=N’ISNATIVFORMAT’

GO

После чего прогоняем следующий скрипт:

USE [ArchiMed]
GO
SET IDENTITY_INSERT ATTACHMENT_FILES_NEW ON;
INSERT INTO [dbo].[ATTACHMENT_FILES_NEW]
           ([ID]
           ,[NAME]
           ,[EPMZID]
           ,[CONTENT]
           ,[UPDDATETIME]
           ,[ENABLED]
           ,[AUTHOR]
           ,[CREATIONDATETIME]
           ,[EXDATAXML]
           ,[FILENAME]
           ,[ISOLE]
           ,[ISNATIVFORMAT])
   select [ID]
           ,[NAME]
           ,[EPMZID]
           ,[CONTENT]
           ,[UPDDATETIME]
           ,[ENABLED]
           ,[AUTHOR]
           ,[CREATIONDATETIME]
           ,[EXDATAXML]
           ,[FILENAME]
           ,[ISOLE]
           ,[ISNATIVFORMAT] from ATTACHMENT_FILES
GO
SET IDENTITY_INSERT ATTACHMENT_FILES_NEW OFF;

8. Удаляем старую таблицу ATTACHMENT_FILES

9. После чего переименовываем новую таблицу ATTACHMENT_FILES_NEW в ATTACHMENT_FILES.

Запрос выводит список “тяжелых” запросов (первые 20 запросов)

SELECT TOP 20 SUBSTRING(qt.text, (qs.statement_start_offset/2)+1, 

((CASE qs.statement_end_offset

WHEN -1 THEN DATALENGTH(qt.text)

ELSE qs.statement_end_offset

END — qs.statement_start_offset)/2)+1), 

qs.execution_count, 

qs.total_logical_reads, qs.last_logical_reads,

qs.min_logical_reads, qs.max_logical_reads,

qs.total_elapsed_time, qs.last_elapsed_time,

qs.min_elapsed_time, qs.max_elapsed_time,

qs.last_execution_time,

qp.query_plan

FROM sys.dm_exec_query_stats qs

CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) qt

CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp

WHERE qt.encrypted=0

ORDER BY qs.total_logical_reads DESC

Запрос, который выводит названия таблиц и размер в Мегабайтах

select t.name as TableName, Min(t.create_date) as CreateDate, ds.name as FileGroupName, SUM(u.total_pages) * 8 / 1024 as SizeMB
from sys.tables as t
inner join sys.partitions as p on t.object_id = p.object_id
inner join sys.allocation_units as u on p.partition_id = u.container_id
inner join sys.data_spaces as ds on u.data_space_id = ds.data_space_id
group by t.name, ds.name
order by SizeMB desc