Ошибка “Превышен максимальный уровень вложенности хранимой процедуры, функции, триггера или представления (ограничение 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

«Ошибка безопасности SSL»

Нужно удалить ключ в реестре:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Cryptography\Providers\Crypto-Pro Primitive Provider\UM\00010002

и перезагрузить компьютер.

Работоспособность SQL Server будет восстановлена, но может на некоторых сайтах не работать ГОСТ TLS. 

Ссылка на статью(форум): https://www.cryptopro.ru/forum2/default.aspx?g=posts&t=13898

Разновидности ALTER TABLE

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

1. alter table dbo.Services alter column Name DT_STR2048 — теперь поле NAME в таблице Services  будет принимать строковое значение до 2048 символов;

2. alter table [dbo].[PI_DOCTYPE_RESULTS_FOR_MEDCARD] ADD [HAZARDS] [DT_STRMAX] NULL — в таблицу PI_DOCTYPE_RESULTS_FOR_MEDCARD добавляется столбец HAZARDS, который принимает строковые значение DT_STRMAX, также может принимать нулевое значение NULL;

3. alter table Risk_list alter column POLISENUMBER DT_STR100 null — теперь поле POLISENUMBER будет принимать строковые значение до 100 символов, но разрешается NULL-значения;

4. alter table [USERS] add  AUTHARCHIMED DT_BYTE — добавляет столбец AUTHARCHIMED в таблицу USERS, который будет принимать два значение 0 или 1 (тип DT_BYTE);

5. alter table dbo.[TALON_SERVICE] DROP COLUMN PARAMSTR —  удаляется столбец PARAMSTR с таблицы TALON_SERVICE.

Ошибка при пробитии услуг

Выходит ошибка при пробитии услуг «Неверная длина»

1. Нужно закрыть программу.
2. Зайти в корень папки Архимеда (можно нажать правой клавишей мыши по ярлычку программы Archimed на рабочем столе -> выбрать «Расположение файла»).
Найти папку plugins, открыть ее, найти ini-файл плагина кассы (названия могут быть FiscReg_Atol.ini или FiscReg_Shtrih.ini), открыть этот файлик, найти параметр CharLineLength, если этот парамет не указан, то написать его перед [HideOptions], поставить значение до 1024.
3. Сохранить ini-файл, зайти в программу, попробовать пробить услуги.