Quantcast
Channel: SQL.ru: Microsoft SQL Server
Viewing all 7251 articles
Browse latest View live

MS SSRS - автонастройка ширины столбцов

$
0
0
Други, помогите дубу стать ясенем!

Банальная таблица в 20 столбцов.
"Ручками" было все приведено в адекватный названию и содержанию столбов вид (что уже мне не очень нравится, но более красивого решения не нашлось).
При выгрузке пользователями отчета в Excel столбцы "взбесились" - объединились где по 2, где по 3 по закону г-на Мёрфи, т.е. там где этого особенно не надо.

Вопрос: есть ли автонастройка ширины столбцов в RS, да так чтобы Excel ее признавал?

Помогите пожалуйста решить задачу

$
0
0
Есть три таблицы:

CREATE TABLE departments (
id INT NOT NULL,
departments_name varchar (50) NULL,
PRIMARY KEY (id)
);



CREATE TABLE employees (
id int NOT NULL,
first_name varchar(50) NULL,
last_name varchar(50) NULL,
department_id int NULL,
salary money NULL,
PRIMARY KEY (id),
FOREIGN KEY (department_id) REFERENCES departments (id)
);



CREATE TABLE sales (
employee_id int NOT NULL,
sales_time datetime NOT NULL,
amount money NULL,
PRIMARY KEY (employee_id, sales_time),
FOREIGN KEY (employee_id) REFERENCES employees (id)
);


Условие задачи звучит так:
Вывести список названий отделов прибыль КАЖДОГО из сотрудников которого составляет больше 10000.

Я делаю так, но этот запрос выводит всех сотрудников, у кого зп больше 10000. А мне надо вывести только те отделы, в котором каждый из работающих сотрудников получает не меньше 10000, если есть хоть один кто получает меньше, то название этого отдела не выводить.

WITH Result AS
(SELECT dep.departments_name, emp.first_name, SUM(s.amount) AS Total_amount
FROM departments dep
LEFT JOIN employees emp
ON dep.id = emp.department_id
LEFT JOIN sales s
ON s.employee_id = emp.id
GROUP BY emp.first_name, dep.departments_name)
SELECT *
FROM Result
WHERE Total_amount > 10000;

Помогите пожалуйста с UPDATE

$
0
0
Задача такова:
Обновить значение salary в таблице employees установив заработные платы для
сотрудников по следующим правилам:
Если итоговая выручка за последний год составляет от 10000 и более - удвоить текущее
значение.

Я пишу:
UPDATE employees
SET salary = salary * 2 
        WHERE EXISTS   (SELECT e.first_name, sum (amount) as total_amt, YEAR (CAST (sales_time AS DATE)) AS SALES_DATE
						FROM sales s join employees e on s.employee_id = e.id
						GROUP BY e.first_name, YEAR(CAST(sales_time AS DATE))
						having  YEAR(CAST(sales_time AS DATE)) = 2017
						AND sum (amount) > 10000)	


и у меня обновляются зарплаты не тех двух человек, которые выбираются в этом селекте, а всех что есть. Где моя ошибка?

Стоит ли так делать?

$
0
0
Требуется совет знатоков.

В разработке мини учетная система. Как всегда вначале разработке предполагалось соответствие одного платежа или прихода с одним проектом. Но в итоге есть острая необходимость к одному движению делать соответствие к нескольким проектам.
Есть спорная идея. Что если создать дополнительно таблицу соответствия фин.движения - проект, но писать там не для каждого фин движения, а только для тех которым требуется такое деление. То есть в основном реестре строки идут с каким-нибудь предопределенным проектом, что означает что есть детальное разделение на проекты.
Вопрос каким образом потом сделать запрос чтобы получить движения в деление по проектам? И вообще есть ли подводные камни такого подхода.

есть общая таблица движений
idsumproekt
1100first
2500second
31000obsh

новая таблица по соответствиям по проектам для строк с obsh
idsumproekt
3700first
3300second


Как получить?
idsumproekt
1100first
2500second
3700first
3300second

Помогите написать UPDATE с двумя условиями

$
0
0
-1
голос «против»
избранное
Есть три таблицы:

CREATE TABLE departments (
id INT NOT NULL,
departments_name varchar (50) NULL,
PRIMARY KEY (id)
);



CREATE TABLE employees (
id int NOT NULL,
first_name varchar(50) NULL,
last_name varchar(50) NULL,
department_id int NULL,
salary money NULL,
PRIMARY KEY (id),
FOREIGN KEY (department_id) REFERENCES departments (id)
);



CREATE TABLE sales (
employee_id int NOT NULL,
sales_time datetime NOT NULL,
amount money NULL,
PRIMARY KEY (employee_id, sales_time),
FOREIGN KEY (employee_id) REFERENCES employees (id)
);





Есть три таблицы:

CREATE TABLE departments (
id INT NOT NULL,
departments_name varchar (50) NULL,
PRIMARY KEY (id)
);



CREATE TABLE employees (
id int NOT NULL,
first_name varchar(50) NULL,
last_name varchar(50) NULL,
department_id int NULL,
salary money NULL,
PRIMARY KEY (id),
FOREIGN KEY (department_id) REFERENCES departments (id)
);



CREATE TABLE sales (
employee_id int NOT NULL,
sales_time datetime NOT NULL,
amount money NULL,
PRIMARY KEY (employee_id, sales_time),
FOREIGN KEY (employee_id) REFERENCES employees (id)
);
Обновить значение salary в таблице employees установив заработные платы для сотрудников по следующим правилам:
Если выручка меньше 10000, но больше чем 20 * salary сотрудника - умножить значение salary на 1.5.

Мой запрос:

UPDATE employees SET
salary = salary * 2
WHERE EXISTS (
SELECT 1
FROM sales s
WHERE s.employee_id = employees.id AND
YEAR(CAST(sales_time AS DATE)) = 2017
group by s.employee_id
HAVING sum(s.amount) < 10000 AND sum(s.amount) > (
SELECT salary * 20
FROM employees e
where e.id = s.employee_id)
)
Обрабатывает 0 строк, а должна быть одна

Переменная в where

$
0
0
DECLARE @str NVARCHAR(50)
DECLARE @INDEX INT
IF @INDEX = 0
SET @str = ' AND fil_code = 12'
ELSE IF @INDEX = 1
SET @str = ' AND fil_code = 13'
ELSE
SET @str = ''
SELECT required_stages FROM TBL where region = 45 + @str

Подскажите пожалуйста как правильно поставить переменную @str,
Спасибо.

Проблема с производительностью outer apply

$
0
0
Добрый день.
Есть 2 таблицы со связью один ко многим. Нужно создать вьюху, где выводятся последняя запись к каждой записи опорной таблицы. Последняя запись определяется сортировкой по столбцу с датой создания. Плюс есть условия, что выводиться должны только строки после определенной даты.
Ну и при вызове с этой вьюхи накладываются внешние условия.

Реализовал я следующим образом

select (что-то там)
from Table1 t1 
  outer apply ( select top 1 ......
                      from table2 t2 left join table3 t3
                      where t2.contactId = t1.Id
                         and t2.CreateOn > '20180401'
                      order by t2.CreateOn decs) 


Вьюха в целом то работает. Но каждый запрос занимает 30-50 секунд, что не допустимо.
По плану запросов, основная стоимость падает на сортировку и фильтрацию внутри outer apply
Как это можно оптимизировать, можете подсказать?

sqlxmlbulkload Помогите найти ошибку(в моей ДНК) Property elements cannot have subelements

$
0
0
Коллеги, приветствую!
Помогите побороть ошибку "Schema: mixed content is not allowed on element 'ZL_LIST'. Property elements cannot have subelements."
(Хотя, возможно, она реально в моей ДНК, т.к. нагородил я, для ее получения, много).
Итак, имеется БД, которая предназначена для загрузки некоего xml (данные о счетах, предъявляемых больницами в адрес страховых компаний, но это так, к делу не относится).
+
USE [exp]
GO
-- Удаление всех refferential

DECLARE @SQL VARCHAR(MAX)=''
Set @SQL = (
SELECT DISTINCT N'ALTER TABLE ' + QUOTENAME(FK.TABLE_SCHEMA) + N'.' + QUOTENAME(FK.TABLE_NAME) + N' DROP CONSTRAINT [' + RTRIM(C.CONSTRAINT_NAME) + N'];'
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS C
 INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS FK ON C.CONSTRAINT_NAME = FK.CONSTRAINT_NAME
 INNER JOIN INFORMATION_SCHEMA.TABLE_CONSTRAINTS PK ON C.UNIQUE_CONSTRAINT_NAME = PK.CONSTRAINT_NAME
 INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE CU  ON C.CONSTRAINT_NAME = CU.CONSTRAINT_NAME
 INNER JOIN (
            SELECT i1.TABLE_NAME, i2.COLUMN_NAME
             FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS i1
				INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE i2 ON i1.CONSTRAINT_NAME = i2.CONSTRAINT_NAME
            WHERE i1.CONSTRAINT_TYPE = 'PRIMARY KEY'
           ) PT ON PT.TABLE_NAME = PK.TABLE_NAME
Where QUOTENAME(FK.TABLE_SCHEMA) + '.' + QUOTENAME(FK.TABLE_NAME) in ('[dbo].[PACIENT]', '[dbo].[SANK]', '[dbo].[SCHET]', '[dbo].[SLUCH]', '[dbo].[USL]', '[dbo].[ZAP]', '[dbo].[ZGLV]', '[dbo].[ZL_LIST]')
For xml path('')
)
EXEC (@SQL)
GO

DROP TABLE IF EXISTS [dbo].[ZL_LIST]
GO

DROP TABLE IF EXISTS [dbo].[ZGLV]
GO

DROP TABLE IF EXISTS [dbo].[EXP]
GO

DROP TABLE IF EXISTS [dbo].[PACIENT]
GO

DROP TABLE IF EXISTS [dbo].[SCHET]
GO

DROP TABLE IF EXISTS [dbo].[ZAP]
GO

DROP TABLE IF EXISTS [dbo].[SLUCH]
GO

DROP TABLE IF EXISTS [dbo].[USL]
GO

DROP TABLE IF EXISTS [dbo].[SANK]
GO

/****** Object:  Table [dbo].[ZL_LIST]    Script Date: 04.05.2018 13:59:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[ZL_LIST] (
	[_ZL_LIST_ID] BIGINT identity(1, 1) NOT NULL,
	-- [_FILIAL_ID] smallint NOT NULL,
	[_LOAD_DATE] DATETIME NOT NULL DEFAULT Current_timestamp
	,CONSTRAINT [PK_ZL_LIST] PRIMARY KEY CLUSTERED ([_ZL_LIST_ID] ASC) ON [PRIMARY]
	) ON [PRIMARY]
GO


/****** Object:  Table [dbo].[ZGLV]    Script Date: 04.05.2018 13:59:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[ZGLV](
	[_ZGLV_ID] bigint identity(1,1) NOT NULL,
	[_ZL_LIST_ID] bigint NOT NULL,
-- [_FILIAL_ID] smallint NOT NULL,

	[VERSION] nvarchar(5) NOT NULL,
	[DATA] [date] NOT NULL,
	[FILENAME] nvarchar(26) NOT NULL,
	[EXP_COUNT] [int]  NULL,
	[SCHET_COUNT] [int] NOT NULL
CONSTRAINT [PK_ZGLV] PRIMARY KEY CLUSTERED 
(
	[_ZGLV_ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
/****** Object:  Table [dbo].[EXP]    Script Date: 04.05.2018 13:59:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[EXP](
	[_EXP_ID] bigint identity(1,1) NOT NULL,
	[_ZL_LIST_ID] bigint NOT NULL,
-- [_FILIAL_ID] smallint NOT NULL,
	[code] nvarchar(40) NOT NULL,
	[CODE_MO] nvarchar(6) NOT NULL,
	[NACT] nvarchar(15) NOT NULL,
	[DACT] [date] NOT NULL,
	[DBEGIN] [date] NOT NULL,
	[DEND] [date] NOT NULL,
	[USER] nvarchar(100) NOT NULL,
	[MODE] [tinyint] NOT NULL,
	[SLUCH_COUNT] int NOT NULL,
	[SUM] numeric(15,2) NOT NULL,
	[PENALTY] numeric(15,2) NOT NULL,
	[DCREATE] [date] NULL,
	[DOUT] [date] NULL,
	[DIN] [date] NULL,
	[FES] smallint NOT NULL,
	[INFO] nvarchar(255) NULL,
 CONSTRAINT [PK_EXP] PRIMARY KEY CLUSTERED 
(
	[_EXP_ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

/****** Object:  Table [dbo].[SCHET]    Script Date: 04.05.2018 13:59:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[SCHET](
	[_SCHET_ID] bigint identity(1,1) NOT NULL,
	[_ZL_LIST_ID] bigint NOT NULL,
-- [_FILIAL_ID] smallint NOT NULL,
	
	[code] nvarchar(40) NOT NULL,
	[CODE_MO] nvarchar(6) NOT NULL,
	[YEAR] [smallint] NOT NULL,
	[MONTH] [tinyint] NOT NULL,
	[NSCHET] nvarchar(15) NULL,
	[DSCHET] [date] NOT NULL,
	[SCH_TYPE] nvarchar(2) NULL,
	[SUMMAV] numeric(15,2) NOT NULL,
	[SUMMA_PF] numeric(15,2) NULL,
	[COMENTS] nvarchar(255) NULL,
	[SUMMAP] numeric(15,2) NULL,
	[SANK_MEK] numeric(15,2) NULL,
	[SANK_MEE] numeric(15,2) NULL,
	[SANK_EKMP] numeric(15,2) NULL,
	[ZAP_COUNT] int NOT NULL,
	[SLUCH_COUNT] int NOT NULL,
 CONSTRAINT [PK_SCHET] PRIMARY KEY CLUSTERED 
(
	[_SCHET_ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

/****** Object:  Table [dbo].[ZAP]    Script Date: 04.05.2018 13:59:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[ZAP](
	[_ZAP_ID] bigint identity(1,1)  NOT NULL,
	[_SCHET_ID] bigint NOT NULL,
-- [_FILIAL_ID] smallint NOT NULL,

	[N_ZAP]  [int] NOT NULL,
	[PR_NOV] [tinyint] NOT NULL,
 CONSTRAINT [PK_ZAP] PRIMARY KEY CLUSTERED 
(
	 [_ZAP_ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO


/****** Object:  Table [dbo].[PACIENT]    Script Date: 04.05.2018 13:59:49 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[PACIENT](
	[_PACIENT_ID] bigint identity(1,1) NOT NULL,
	[_ZAP_ID] bigint NOT NULL,
-- [_FILIAL_ID] smallint NOT NULL,

	[ID_PAC] nvarchar(36) NULL,
	[FAM] nvarchar(40) NULL,
	[IM] nvarchar(40) NULL,
	[OT] nvarchar(40) NULL,
	[W] [tinyint] NOT NULL,
	[DR] [date] NOT NULL,
	[DOST] nvarchar(255) NULL,
	
	[FAM_P] nvarchar(40) NULL,
	[IM_P] nvarchar(40) NULL,
	[OT_P] nvarchar(40) NULL,
	[W_P] [tinyint] NULL,
	[DR_P] [date] NULL,
	[DOST_P] nvarchar(255) NULL,
	
	[MR] nvarchar(255) NULL,

	[DOCTYPE] [tinyint] NULL,
	[DOCSER] nvarchar(10) NULL,
	[DOCNUM] nvarchar(20) NULL,
	[SNILS] nvarchar(14) NULL,
	[OKATO] nvarchar(11) NULL,
	
	[COMENTP] nvarchar(250) NULL,

	[VPOLIS] [tinyint] NOT NULL,
	[SPOLIS] nvarchar(10) NULL,
	[NPOLIS] nvarchar(20) NOT NULL,
	[NOVOR] nvarchar(9) NOT NULL,
	[VNOV_D] smallint NULL,
 CONSTRAINT [PK_PACIENT] PRIMARY KEY CLUSTERED 
(
	[_PACIENT_ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

/****** Object:  Table [dbo].[SLUCH]    Script Date: 04.05.2018 13:59:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[SLUCH](
	[_SLUCH_ID] bigint identity(1,1) NOT NULL,
	[_ZAP_ID] bigint NOT NULL,
-- [_FILIAL_ID] smallint NOT NULL,

	[IDCASE] nvarchar(100) NOT NULL,
	[USL_OK] [smallint] NOT NULL,
	[VIDPOM] [smallint] NOT NULL,
	[FOR_POM] [smallint] NULL,

	[NPR_MO] nvarchar(6) NULL,
	[EXTR] [smallint] NULL,

	[LPU] nvarchar(6) NOT NULL,
	[LPU_1] nvarchar(8) NULL,
	[PODR] nvarchar(8) NULL,

	[PROFIL] [smallint] NULL,
	[DET] [tinyint] NOT NULL,
	[NHISTORY] nvarchar(50) NULL,

	[DATE_1] [date] NOT NULL,
	[DATE_2] [date] NOT NULL,

	[DS0] nvarchar(10) NULL,
	[DS1] nvarchar(10) NULL,
	[DS2] nvarchar(10) NULL,
	[DS3] nvarchar(10) NULL,
	
	[VNOV_M] smallint NULL,
	
	[CODE_MES1] nvarchar(20) NULL,
	[CODE_MES2] nvarchar(20) NULL,

	[CASE_TYPE] nvarchar(2) NOT NULL,

	[RSLT] [smallint] NOT NULL,
	[ISHOD] [smallint] NULL,
	[PRVS] [smallint] NULL,

	[VID_HMP]	nvarchar(18) NULL,
	[METOD_HMP] nvarchar(3) NULL, 
	[VBR]		tinyint NULL,
	[P_OTK]		tinyint NULL,
	[DS1_PR]	tinyint NULL,
	
	[NAZR] nvarchar(255) NULL,
	[NAZ_SP] nvarchar(255) NULL,
	[NAZ_V] nvarchar(255) NULL,
	[NAZ_PMP] nvarchar(255) NULL,
	[NAZ_PK] nvarchar(255) NULL,
	
	[PR_D_N]	tinyint NULL,
	
	[SMP_T1]	nvarchar(5) NULL,
	[SMP_T2]	nvarchar(5) NULL,

	[IDDOKT] nvarchar(128) NULL,
	[OS_SLUCH] nvarchar(255) NULL,

	[IDSP] [smallint] NOT NULL,
	[ED_COL] numeric(5,2) NULL,

	[TARIF] numeric(15,2) NULL,
	[SUMV] numeric(15,2) NULL,

	[OPLATA] [tinyint] NOT NULL,

	[SUMP] numeric(15,2) NULL,
	[SANK_IT] numeric(15,2) NULL,
	[COMENTSL] nvarchar(255) NULL,
 CONSTRAINT [PK_SLUCH] PRIMARY KEY CLUSTERED 
(
	 [_SLUCH_ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

/****** Object:  Table [dbo].[USL]    Script Date: 04.05.2018 13:59:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[USL](
	[_USL_ID] bigint identity(1,1) NOT NULL,
	[_SLUCH_ID] bigint NOT NULL,
-- [_FILIAL_ID] smallint NOT NULL,

	[IDSERV] nvarchar(36) NOT NULL,
	[LPU]  nvarchar(6) NOT NULL,
	[LPU_1]  nvarchar(8) NULL,
	[PODR]  nvarchar(8) NULL,

	[PROFIL] [smallint] NULL,
	[VID_VME]  nvarchar(15) NULL,

	[DET] [tinyint] NOT NULL,
	[DATE_IN] [date] NOT NULL,
	[DATE_OUT] [date] NOT NULL,

	[DS] nvarchar(10) NULL,
	
	[CODE_USL] nvarchar(20) NULL,
	[KOL_USL] numeric(6,2) NOT NULL,
	[TARIF] numeric(15,2) NULL,
	[SUMV_USL] numeric(15,2) NULL,
	[PRVS] [int] NULL,

	[IDDOKT] nvarchar(128) NULL,
	[P_OTK] [tinyint] NULL,
	[COMENTU] nvarchar(255) NULL,
 CONSTRAINT [PK_USL] PRIMARY KEY CLUSTERED 
(
	 [_USL_ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

/****** Object:  Table [dbo].[SANK]    Script Date: 04.05.2018 13:59:50 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE TABLE [dbo].[SANK](
	[_SANK_ID] bigint identity(1,1) NOT NULL,
	[_SLUCH_ID] bigint NOT NULL,
-- [_FILIAL_ID] smallint NOT NULL,

	[S_CODE] nvarchar(40) NOT NULL,
	[S_SUM] numeric(15,2) NOT NULL,

	[S_TIP] [tinyint] NOT NULL,

	[S_OSN] [smallint] NULL,
	[S_COM] nvarchar(255) NULL,
	[S_IST] [tinyint] NOT NULL,
	[EXP_CODE] nvarchar(40) NULL,
	[EXP_DOCTOR] nvarchar(128) NULL,
	[EXP_FILTER] nvarchar(255) NULL,
	[EXP_PENALTY] numeric(15,2) NULL,
	[EXP_PERCENT] numeric(3,2) NULL,
	[EXP_INFO] nvarchar(255)

 CONSTRAINT [PK_SANK] PRIMARY KEY CLUSTERED 
(
	 [_SANK_ID] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO

ALTER TABLE dbo.SCHET ADD CONSTRAINT
	FK_SCHET_ZL_LIST FOREIGN KEY
	(
	_ZL_LIST_ID
	) REFERENCES dbo.ZL_LIST
	(
	_ZL_LIST_ID
	) ON UPDATE  NO ACTION 
	 ON DELETE  NO ACTION 
	
GO

ALTER TABLE dbo.ZAP ADD CONSTRAINT
	FK_ZAP_SCHET FOREIGN KEY
	(
	_SCHET_ID
	) REFERENCES dbo.SCHET
	(
	_SCHET_ID
	) ON UPDATE  NO ACTION 
	 ON DELETE  NO ACTION 
	
GO

ALTER TABLE dbo.SLUCH ADD CONSTRAINT
	FK_SLUCH_ZAP FOREIGN KEY
	(
	_ZAP_ID
	) REFERENCES dbo.ZAP
	(
	_ZAP_ID
	) ON UPDATE  NO ACTION 
	 ON DELETE  NO ACTION 
	
GO

ALTER TABLE dbo.SANK ADD CONSTRAINT
	FK_SANK_SLUCH FOREIGN KEY
	(
	_SLUCH_ID
	) REFERENCES dbo.SLUCH
	(
	_SLUCH_ID
	) ON UPDATE  NO ACTION 
	 ON DELETE  NO ACTION 
	
GO

ALTER TABLE dbo.PACIENT ADD CONSTRAINT
	FK_PACIENT_ZAP FOREIGN KEY
	(
	_ZAP_ID
	) REFERENCES dbo.ZAP
	(
	_ZAP_ID
	) ON UPDATE  NO ACTION 
	 ON DELETE  NO ACTION 
	
GO

ALTER TABLE dbo.ZGLV ADD CONSTRAINT
	FK_ZGLV_ZL_LIST FOREIGN KEY
	(
	_ZL_LIST_ID
	) REFERENCES dbo.ZL_LIST
	(
	_ZL_LIST_ID
	) ON UPDATE  NO ACTION 
	 ON DELETE  NO ACTION 
	
GO

ALTER TABLE dbo.USL ADD CONSTRAINT
	FK_USL_SLUCH FOREIGN KEY
	(
	_SLUCH_ID
	) REFERENCES dbo.SLUCH
	(
	_SLUCH_ID
	) ON UPDATE  NO ACTION 
	 ON DELETE  NO ACTION 
GO

ALTER TABLE dbo.EXP ADD CONSTRAINT
	FK_EXP_ZL_LIST FOREIGN KEY
	(
	_ZL_LIST_ID
	) REFERENCES dbo.ZL_LIST
	(
	_ZL_LIST_ID
	) ON UPDATE  NO ACTION 
	 ON DELETE  NO ACTION 
	
GO


Я создаю для нее аннотированную схему, для загрузки с помощью sqlxmlbulkload.
Причем, т.к. описывать всё каждый раз мне лень, а адекватного инструмента по созданию таких схем я не знаю - я написал запрос, который делает для меня почти готовый полуфабрикат для такой загрузки:
+
Use [exp]
go 

;WITH XMLNAMESPACES (
	 'http://www.w3.org/2001/XMLSchema' AS xs
	,'urn:schemas-microsoft-com:mapping-schema' AS sql
	,'http://schemas.microsoft.com/sqlserver/2004/sqltypes' as sqltypes
	) 

Select 
Cast(
N'<xs:schema xmlns:schema="urn:schemas-microsoft-com:sql:SqlRowSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" elementFormDefault="qualified">'
+ N'<xs:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" />'
+ (Select  
		Replace (
		Replace (
		Replace (
				(Select 
				(Select 
				(
				SELECT f.[name] [@name]
					,OBJECT_NAME(f.referenced_object_id) [@parent]
					,COL_NAME(fc.referenced_object_id, fc.referenced_column_id) [@parent-key]
					,OBJECT_NAME(f.parent_object_id) [@child]
					,COL_NAME(fc.parent_object_id, fc.parent_column_id) [@child-key]
				FROM sys.foreign_keys f
				INNER JOIN sys.foreign_key_columns fc ON f.object_id = fc.constraint_object_id
				Order by f.referenced_object_id
				For xml path('sql:relationship'), type
				)
				For xml path('xs:appinfo'), type
				)
				For xml path('xs:annotation')
				)
				+(
					SELECT 
						 a.[name] [@name]
						,(Select	
							(Select Case when t.[name] in (N'varchar', N'nvarchar', N'char', N'nchar', N'varbinary', N'binary') 
										 then
												(Select b.[name] [@name]
														,Quotename(b.[name]) [@sql:field]
														,t.[name] + '(' + iif(b.max_length = -1, 'max', Cast(b.max_length/iif(t.[name] in (N'nvarchar', N'nchar'), 2, 1) as nvarchar(10)) + ')') [@sql:datatype]
														,Case when b.is_nullable=1 then 0 end [@minOccurs]
														,(Select 
																(Select 
																		'sqltypes:' + t.[name] [@base]
																		,(Select iif(b.max_length = -1, NULL, b.max_length)/iif(t.[name] in (N'nvarchar', N'nchar'), 2, 1) [@value] for xml path('xs:maxLength'), type)
																for xml path('xs:restriction'), type
																)
														for xml path('xs:simpleType'), type
														)
													for xml path('xs:element'), type
												)
											when t.[name] in (N'numeric', N'decimal')
											then
												(Select b.[name] [@name]
														,Quotename(b.[name]) [@sql:field]
														,t.[name] [@sql:datatype]
														,Case when b.is_nullable=1 then 0 end [@minOccurs]
														,(Select 
																(Select 
																		'sqltypes:' + t.[name] [@base]
																		,(Select  b.[precision] [@value] for xml path('xs:totalDigits'), type)
																		,(Select  b.[scale] [@value] for xml path('xs:fractionDigits'), type)
																for xml path('xs:restriction'), type
																)
														for xml path('xs:simpleType'), type
														)
													for xml path('xs:element'), type
												)
											Else (Select b.[name] [@name]
														,Quotename(b.[name]) [@sql:field]
														,'sqltypes:' + t.[name] [@type]
														,Case when b.is_nullable=1 then 0 end [@minOccurs]
														,t.[name] [@sql:datatype]
												  for xml path('xs:element'), type
												  )
									End 
									from 
									sys.columns b 
									inner join sys.types t on b.user_type_id=t.user_type_id
									Where a.[object_id]=b.[object_id]
										and b.[name] not like '[_]%'
							Order by b.column_id ASC
							For xml path(''), type
							)
							,(Select 
								 OBJECT_NAME(f.parent_object_id)  [@name]
								,OBJECT_NAME(f.parent_object_id)  [@type]
								,OBJECT_NAME(f.parent_object_id)  [@sql:relation]
								,f.[name] [@sql:relationship]
								,COL_NAME(fc.parent_object_id, fc.parent_column_id) [@sql:field]
								,0 [@minOccurs]
								,'unbounded' [@maxOccurs]
								from sys.foreign_keys f
								INNER JOIN sys.foreign_key_columns fc
								   ON f.object_id = fc.constraint_object_id
								where f.referenced_object_id = a.object_id
								for xml path('xs:element'), type
							)
							For xml path('xs:sequence'), type
							)
					FROM sys.tables a 
					WHERE a.[type] = 'U'
						AND a.[name] <> 'sysdiagrams' 
					FOR XML path ('xs:complexType')
				)
---------------------------------------------------------------------------------------------				
				,' xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes"', ''
				)
				,' xmlns:sql="urn:schemas-microsoft-com:mapping-schema"', ''
				)
				,' xmlns:xs="http://www.w3.org/2001/XMLSchema"', ''
				)
)
+ N'</xs:schema>'
as xml)

Сам запрос - тоже полуфабрикат, так что сильно - не пинайте.
... Хотя нет, пинайте, полезно будет.

С помощью него я получаю почти готовую, как мне кажется, схему для проверки xml и для его загрузки, которую потом слегка допиливаю напильником.
Вот уже допиленная схема:
+
<xs:schema xmlns:schema="urn:schemas-microsoft-com:sql:SqlRowSet" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:sqltypes="http://schemas.microsoft.com/sqlserver/2004/sqltypes" xmlns:sql="urn:schemas-microsoft-com:mapping-schema" elementFormDefault="qualified">
  <xs:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="http://schemas.microsoft.com/sqlserver/2004/sqltypes/sqltypes.xsd" />
  <xs:annotation>
    <xs:appinfo>
      <sql:relationship name="FK_SCHET_ZL_LIST" parent="ZL_LIST" parent-key="_ZL_LIST_ID" child="SCHET" child-key="_ZL_LIST_ID" />
      <sql:relationship name="FK_ZGLV_ZL_LIST" parent="ZL_LIST" parent-key="_ZL_LIST_ID" child="ZGLV" child-key="_ZL_LIST_ID" />
      <sql:relationship name="FK_EXP_ZL_LIST" parent="ZL_LIST" parent-key="_ZL_LIST_ID" child="EXP" child-key="_ZL_LIST_ID" />
      <sql:relationship name="FK_ZAP_SCHET" parent="SCHET" parent-key="_SCHET_ID" child="ZAP" child-key="_SCHET_ID" />
      <sql:relationship name="FK_SLUCH_ZAP" parent="ZAP" parent-key="_ZAP_ID" child="SLUCH" child-key="_ZAP_ID" />
      <sql:relationship name="FK_PACIENT_ZAP" parent="ZAP" parent-key="_ZAP_ID" child="PACIENT" child-key="_ZAP_ID" />
      <sql:relationship name="FK_SANK_SLUCH" parent="SLUCH" parent-key="_SLUCH_ID" child="SANK" child-key="_SLUCH_ID" />
      <sql:relationship name="FK_USL_SLUCH" parent="SLUCH" parent-key="_SLUCH_ID" child="USL" child-key="_SLUCH_ID" />
    </xs:appinfo>
  </xs:annotation>
  <xs:complexType name="ZL_LIST"  mixed="true">
    <xs:sequence>
      <xs:element name="ZGLV" type="ZGLV" sql:relation="ZGLV" sql:relationship="FK_ZGLV_ZL_LIST" sql:field="_ZL_LIST_ID" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="EXP" type="EXP" sql:relation="EXP" sql:relationship="FK_EXP_ZL_LIST" sql:field="_ZL_LIST_ID" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="SCHET" type="SCHET" sql:relation="SCHET" sql:relationship="FK_SCHET_ZL_LIST" sql:field="_ZL_LIST_ID" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ZGLV">
    <xs:sequence>
      <xs:element name="VERSION" sql:field="[VERSION]" sql:datatype="nvarchar(5)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="5" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DATA" sql:field="[DATA]" type="sqltypes:date" sql:datatype="date" />
      <xs:element name="FILENAME" sql:field="[FILENAME]" sql:datatype="nvarchar(26)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="26" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="EXP_COUNT" sql:field="[EXP_COUNT]" type="sqltypes:int" minOccurs="0" sql:datatype="int" />
      <xs:element name="SCHET_COUNT" sql:field="[SCHET_COUNT]" type="sqltypes:int" sql:datatype="int" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="EXP">
    <xs:sequence>
      <xs:element name="CODE" sql:field="[code]" sql:datatype="nvarchar(40)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="40" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="CODE_MO" sql:field="[CODE_MO]" sql:datatype="nvarchar(6)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="6" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="NACT" sql:field="[NACT]" sql:datatype="nvarchar(15)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="15" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DACT" sql:field="[DACT]" type="sqltypes:date" sql:datatype="date" />
      <xs:element name="DBEGIN" sql:field="[DBEGIN]" type="sqltypes:date" sql:datatype="date" />
      <xs:element name="DEND" sql:field="[DEND]" type="sqltypes:date" sql:datatype="date" />
      <xs:element name="USER" sql:field="[USER]" sql:datatype="nvarchar(100)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="100" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="MODE" sql:field="[MODE]" type="sqltypes:tinyint" sql:datatype="tinyint" />
      <xs:element name="SLUCH_COUNT" sql:field="[SLUCH_COUNT]" type="sqltypes:int" sql:datatype="int" />
      <xs:element name="SUM" sql:field="[SUM]" sql:datatype="numeric">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PENALTY" sql:field="[PENALTY]" sql:datatype="numeric">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DCREATE" sql:field="[DCREATE]" type="sqltypes:date" minOccurs="0" sql:datatype="date" />
      <xs:element name="DOUT" sql:field="[DOUT]" type="sqltypes:date" minOccurs="0" sql:datatype="date" />
      <xs:element name="DIN" sql:field="[DIN]" type="sqltypes:date" minOccurs="0" sql:datatype="date" />
      <xs:element name="FES" sql:field="[FES]" type="sqltypes:smallint" sql:datatype="smallint" />
      <xs:element name="INFO" sql:field="[INFO]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SCHET">
    <xs:sequence>
      <xs:element name="CODE" sql:field="[code]" sql:datatype="nvarchar(40)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="40" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="CODE_MO" sql:field="[CODE_MO]" sql:datatype="nvarchar(6)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="6" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="YEAR" sql:field="[YEAR]" type="sqltypes:smallint" sql:datatype="smallint" />
      <xs:element name="MONTH" sql:field="[MONTH]" type="sqltypes:tinyint" sql:datatype="tinyint" />
      <xs:element name="NSCHET" sql:field="[NSCHET]" sql:datatype="nvarchar(15)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="15" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DSCHET" sql:field="[DSCHET]" type="sqltypes:date" sql:datatype="date" />
      <xs:element name="SCH_TYPE" sql:field="[SCH_TYPE]" sql:datatype="nvarchar(2)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SUMMAV" sql:field="[SUMMAV]" sql:datatype="numeric">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SUMMA_PF" sql:field="[SUMMA_PF]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="COMENTS" sql:field="[COMENTS]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SUMMAP" sql:field="[SUMMAP]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SANK_MEK" sql:field="[SANK_MEK]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SANK_MEE" sql:field="[SANK_MEE]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SANK_EKMP" sql:field="[SANK_EKMP]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="ZAP_COUNT" sql:field="[ZAP_COUNT]" type="sqltypes:int" sql:datatype="int" />
      <xs:element name="SLUCH_COUNT" sql:field="[SLUCH_COUNT]" type="sqltypes:int" sql:datatype="int" />
      <xs:element name="ZAP" type="ZAP" sql:relation="ZAP" sql:relationship="FK_ZAP_SCHET" sql:field="_SCHET_ID" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ZAP">
    <xs:sequence>
      <xs:element name="N_ZAP" sql:field="[N_ZAP]" type="sqltypes:int" sql:datatype="int" />
      <xs:element name="PR_NOV" sql:field="[PR_NOV]" type="sqltypes:tinyint" sql:datatype="tinyint" />
      <xs:element name="PACIENT" type="PACIENT" sql:relation="PACIENT" sql:relationship="FK_PACIENT_ZAP" sql:field="_ZAP_ID" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="SLUCH" type="SLUCH" sql:relation="SLUCH" sql:relationship="FK_SLUCH_ZAP" sql:field="_ZAP_ID" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="PACIENT">
    <xs:sequence>
      <xs:element name="ID_PAC" sql:field="[ID_PAC]" sql:datatype="nvarchar(36)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="36" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="FAM" sql:field="[FAM]" sql:datatype="nvarchar(40)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="40" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="IM" sql:field="[IM]" sql:datatype="nvarchar(40)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="40" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OT" sql:field="[OT]" sql:datatype="nvarchar(40)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="40" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="W" sql:field="[W]" type="sqltypes:tinyint" sql:datatype="tinyint" />
      <xs:element name="DR" sql:field="[DR]" type="sqltypes:date" sql:datatype="date" />
      <xs:element name="DOST" sql:field="[DOST]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="FAM_P" sql:field="[FAM_P]" sql:datatype="nvarchar(40)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="40" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="IM_P" sql:field="[IM_P]" sql:datatype="nvarchar(40)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="40" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OT_P" sql:field="[OT_P]" sql:datatype="nvarchar(40)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="40" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="W_P" sql:field="[W_P]" type="sqltypes:tinyint" minOccurs="0" sql:datatype="tinyint" />
      <xs:element name="DR_P" sql:field="[DR_P]" type="sqltypes:date" minOccurs="0" sql:datatype="date" />
      <xs:element name="DOST_P" sql:field="[DOST_P]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="MR" sql:field="[MR]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DOCTYPE" sql:field="[DOCTYPE]" type="sqltypes:tinyint" minOccurs="0" sql:datatype="tinyint" />
      <xs:element name="DOCSER" sql:field="[DOCSER]" sql:datatype="nvarchar(10)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="10" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DOCNUM" sql:field="[DOCNUM]" sql:datatype="nvarchar(20)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="20" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SNILS" sql:field="[SNILS]" sql:datatype="nvarchar(14)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="14" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OKATO" sql:field="[OKATO]" sql:datatype="nvarchar(11)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="11" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="COMENTP" sql:field="[COMENTP]" sql:datatype="nvarchar(250)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="250" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="VPOLIS" sql:field="[VPOLIS]" type="sqltypes:tinyint" sql:datatype="tinyint" />
      <xs:element name="SPOLIS" sql:field="[SPOLIS]" sql:datatype="nvarchar(10)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="10" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="NPOLIS" sql:field="[NPOLIS]" sql:datatype="nvarchar(20)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="20" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="NOVOR" sql:field="[NOVOR]" sql:datatype="nvarchar(9)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="9" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="VNOV_D" sql:field="[VNOV_D]" type="sqltypes:smallint" minOccurs="0" sql:datatype="smallint" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SLUCH">
    <xs:sequence>
      <xs:element name="IDCASE" sql:field="[IDCASE]" sql:datatype="nvarchar(100)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="100" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="USL_OK" sql:field="[USL_OK]" type="sqltypes:smallint" sql:datatype="smallint" />
      <xs:element name="VIDPOM" sql:field="[VIDPOM]" type="sqltypes:smallint" sql:datatype="smallint" />
      <xs:element name="FOR_POM" sql:field="[FOR_POM]" type="sqltypes:smallint" minOccurs="0" sql:datatype="smallint" />
      <xs:element name="NPR_MO" sql:field="[NPR_MO]" sql:datatype="nvarchar(6)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="6" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="EXTR" sql:field="[EXTR]" type="sqltypes:smallint" minOccurs="0" sql:datatype="smallint" />
      <xs:element name="LPU" sql:field="[LPU]" sql:datatype="nvarchar(6)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="6" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="LPU_1" sql:field="[LPU_1]" sql:datatype="nvarchar(8)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="8" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PODR" sql:field="[PODR]" sql:datatype="nvarchar(8)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="8" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PROFIL" sql:field="[PROFIL]" type="sqltypes:smallint" minOccurs="0" sql:datatype="smallint" />
      <xs:element name="DET" sql:field="[DET]" type="sqltypes:tinyint" sql:datatype="tinyint" />
      <xs:element name="NHISTORY" sql:field="[NHISTORY]" sql:datatype="nvarchar(50)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="50" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DATE_1" sql:field="[DATE_1]" type="sqltypes:date" sql:datatype="date" />
      <xs:element name="DATE_2" sql:field="[DATE_2]" type="sqltypes:date" sql:datatype="date" />
      <xs:element name="DS0" sql:field="[DS0]" sql:datatype="nvarchar(10)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="10" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DS1" sql:field="[DS1]" sql:datatype="nvarchar(10)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="10" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DS2" sql:field="[DS2]" sql:datatype="nvarchar(10)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="10" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DS3" sql:field="[DS3]" sql:datatype="nvarchar(10)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="10" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="VNOV_M" sql:field="[VNOV_M]" type="sqltypes:smallint" minOccurs="0" sql:datatype="smallint" />
      <xs:element name="CODE_MES1" sql:field="[CODE_MES1]" sql:datatype="nvarchar(20)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="20" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="CODE_MES2" sql:field="[CODE_MES2]" sql:datatype="nvarchar(20)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="20" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="CASE_TYPE" sql:field="[CASE_TYPE]" sql:datatype="nvarchar(2)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="RSLT" sql:field="[RSLT]" type="sqltypes:smallint" sql:datatype="smallint" />
      <xs:element name="ISHOD" sql:field="[ISHOD]" type="sqltypes:smallint" minOccurs="0" sql:datatype="smallint" />
      <xs:element name="PRVS" sql:field="[PRVS]" type="sqltypes:smallint" minOccurs="0" sql:datatype="smallint" />
      <xs:element name="VID_HMP" sql:field="[VID_HMP]" sql:datatype="nvarchar(18)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="18" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="METOD_HMP" sql:field="[METOD_HMP]" sql:datatype="nvarchar(3)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="3" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="VBR" sql:field="[VBR]" type="sqltypes:tinyint" minOccurs="0" sql:datatype="tinyint" />
      <xs:element name="P_OTK" sql:field="[P_OTK]" type="sqltypes:tinyint" minOccurs="0" sql:datatype="tinyint" />
      <xs:element name="DS1_PR" sql:field="[DS1_PR]" type="sqltypes:tinyint" minOccurs="0" sql:datatype="tinyint" />
      <xs:element name="NAZR" sql:field="[NAZR]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="NAZ_SP" sql:field="[NAZ_SP]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="NAZ_V" sql:field="[NAZ_V]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="NAZ_PMP" sql:field="[NAZ_PMP]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="NAZ_PK" sql:field="[NAZ_PK]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PR_D_N" sql:field="[PR_D_N]" type="sqltypes:tinyint" minOccurs="0" sql:datatype="tinyint" />
      <xs:element name="SMP_T1" sql:field="[SMP_T1]" sql:datatype="nvarchar(5)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="5" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SMP_T2" sql:field="[SMP_T2]" sql:datatype="nvarchar(5)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="5" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="IDDOKT" sql:field="[IDDOKT]" sql:datatype="nvarchar(128)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="128" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OS_SLUCH" sql:field="[OS_SLUCH]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="IDSP" sql:field="[IDSP]" type="sqltypes:smallint" sql:datatype="smallint" />
      <xs:element name="ED_COL" sql:field="[ED_COL]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="5" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="TARIF" sql:field="[TARIF]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SUMV" sql:field="[SUMV]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="OPLATA" sql:field="[OPLATA]" type="sqltypes:tinyint" sql:datatype="tinyint" />
      <xs:element name="SUMP" sql:field="[SUMP]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SANK_IT" sql:field="[SANK_IT]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="COMENTSL" sql:field="[COMENTSL]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="USL" type="USL" sql:relation="USL" sql:relationship="FK_USL_SLUCH" sql:field="_SLUCH_ID" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="SANK" type="SANK" sql:relation="SANK" sql:relationship="FK_SANK_SLUCH" sql:field="_SLUCH_ID" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="USL">
    <xs:sequence>
      <xs:element name="IDSERV" sql:field="[IDSERV]" sql:datatype="nvarchar(36)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="36" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="LPU" sql:field="[LPU]" sql:datatype="nvarchar(6)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="6" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="LPU_1" sql:field="[LPU_1]" sql:datatype="nvarchar(8)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="8" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PODR" sql:field="[PODR]" sql:datatype="nvarchar(8)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="8" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PROFIL" sql:field="[PROFIL]" type="sqltypes:smallint" minOccurs="0" sql:datatype="smallint" />
      <xs:element name="VID_VME" sql:field="[VID_VME]" sql:datatype="nvarchar(15)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="15" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="DET" sql:field="[DET]" type="sqltypes:tinyint" sql:datatype="tinyint" />
      <xs:element name="DATE_IN" sql:field="[DATE_IN]" type="sqltypes:date" sql:datatype="date" />
      <xs:element name="DATE_OUT" sql:field="[DATE_OUT]" type="sqltypes:date" sql:datatype="date" />
      <xs:element name="DS" sql:field="[DS]" sql:datatype="nvarchar(10)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="10" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="CODE_USL" sql:field="[CODE_USL]" sql:datatype="nvarchar(20)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="20" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="KOL_USL" sql:field="[KOL_USL]" sql:datatype="numeric">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="6" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="TARIF" sql:field="[TARIF]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="SUMV_USL" sql:field="[SUMV_USL]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="PRVS" sql:field="[PRVS]" type="sqltypes:int" minOccurs="0" sql:datatype="int" />
      <xs:element name="IDDOKT" sql:field="[IDDOKT]" sql:datatype="nvarchar(128)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="128" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="P_OTK" sql:field="[P_OTK]" type="sqltypes:tinyint" minOccurs="0" sql:datatype="tinyint" />
      <xs:element name="COMENTU" sql:field="[COMENTU]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="SANK">
    <xs:sequence>
      <xs:element name="S_CODE" sql:field="[S_CODE]" sql:datatype="nvarchar(40)">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="40" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="S_SUM" sql:field="[S_SUM]" sql:datatype="numeric">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="S_TIP" sql:field="[S_TIP]" type="sqltypes:tinyint" sql:datatype="tinyint" />
      <xs:element name="S_OSN" sql:field="[S_OSN]" type="sqltypes:smallint" minOccurs="0" sql:datatype="smallint" />
      <xs:element name="S_COM" sql:field="[S_COM]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="S_IST" sql:field="[S_IST]" type="sqltypes:tinyint" sql:datatype="tinyint" />
      <xs:element name="EXP_CODE" sql:field="[EXP_CODE]" sql:datatype="nvarchar(40)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="40" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="EXP_DOCTOR" sql:field="[EXP_DOCTOR]" sql:datatype="nvarchar(128)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="128" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="EXP_FILTER" sql:field="[EXP_FILTER]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="EXP_PENALTY" sql:field="[EXP_PENALTY]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="15" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="EXP_PERCENT" sql:field="[EXP_PERCENT]" sql:datatype="numeric" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:numeric">
            <xs:totalDigits value="3" />
            <xs:fractionDigits value="2" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
      <xs:element name="EXP_INFO" sql:field="[EXP_INFO]" sql:datatype="nvarchar(255)" minOccurs="0">
        <xs:simpleType>
          <xs:restriction base="sqltypes:nvarchar">
            <xs:maxLength value="255" />
          </xs:restriction>
        </xs:simpleType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
<xs:element name="ZL_LIST" type="ZL_LIST" sql:relation="ZL_LIST" sql:field="_ZL_LIST_ID" />
</xs:schema>

Допиливание, собственно, заключается в добавлении корневого элемента, и кое-где - в том, что я меняю местами некоторые элементы в соответствии с их порядком в хмл.
В результате - хмли проходят валидацию по этой схеме, но данные - не грузятся, выдаётся сабжевая ошибка.
Набор таблиц из схемы - также не создается.
Помогите понять, в чем дело!
Что я генерирую не так?
Не исключено, что всё, конечно, тогда пните в нужном направлении!

SQL Server 2017 - где оптимальнее ставить Cast()

$
0
0
что будет быстрее?:
A:
select date_key,store_key,sum(cast(sales as money))sales
from store_sales group by date_key,store_key
или
B:
select date_key,store_key,cast(sum(sales)as money)sales
from store_sales group by date_key,store_key

База SUSPECT

$
0
0
Уважаемые знатоки SQL подскажите пожалуйста, после некорректного выключения сервера база перешла в SUSPECT
checkdb выдает следующее:

Сообщение 7985, уровень 16, состояние 2, строка 1
Предварительная проверка системных таблиц: объект с идентификатором 5. Не удалось прочитать страницу (1:144) и заблокировать ее кратковременной блокировкой типа SH. Инструкция проверки прервана из-за неустранимой ошибки.
Результаты DBCC для "GGLite".
Сообщение 5233, уровень 16, состояние 98, строка 1
Ошибка таблицы: идентификатор единицы размещения 327680, страница (1:144). Выполнить тест (IS_OFF (BUF_IOERR, pBUF->bstat)) не удалось. Значения равны 12584969 и -1.
CHECKDB обнаружил 0 ошибок размещения и 1 ошибок согласованности, не связанных ни с одним объектом.
CHECKDB обнаружил 0 ошибок размещения и 1 ошибок согласованности в базе данных "GGLite".

Подскажите, можно ли как нибудь восстановить эту 144 страницу?

Или баг или я туплю. Кто то сталкивался с подобным?

$
0
0
Задачу поставили - мониторить на серверах и оповещать если создание удаление изменение индексов и хранить историю изменений.
Реализовал по принципу - сделал табличку где хранится "слепок индекс", периодически (раз в час) читаю все индексы, сверяю с тем что уже сохранено в этой таблице, если есть изменения - на почту шлю оповещение.
+ табличка для хранения истории
USE [msdb]
GO

CREATE TABLE [dbo].[index_list]
(
	[type_desc] [varchar](60) NOT NULL,
	[db] [varchar](128) NOT NULL,
	[object_name] [varchar](250) NOT NULL,
	[index_name] [varchar](128) NOT NULL,
	[index_column] [varchar](max) NULL,
	[include_column] [varchar](max) NULL,
	[filter_definition] [varchar](max) NULL,
	[is_primary_key] [bit] NULL,
	[is_unique_constraint] [bit] NULL,
	[is_unique] [bit] NOT NULL,
	[index_type] [varchar](60) NULL,
	[dt$] [datetime] NOT NULL,
	[oper$] [char](1) NOT NULL,
 CONSTRAINT [pk_index_list] PRIMARY KEY CLUSTERED 
(
	[db] ASC,
	[object_name] ASC,
	[index_name] ASC,
	[dt$] DESC
)
)
GO

+ тело JOB. Отладил - работает
if object_id('tempdb..#index_list') is not null drop table #index_list
create table #index_list
(
	db varchar(128) not null,
	type_desc varchar(60) null,
	is_primary_key bit null,
	is_unique_constraint bit null,
	is_unique bit null,
	index_type varchar(60) null,
	object_name varchar(250),
	index_name varchar(128) not null,
	index_column varchar(max) null,
	include_column varchar(max) null,
	filter_definition varchar(max) null,
	primary key (db,object_name,index_name)
)

insert #index_list
exec sp_msforeachdb 'use [?];
select
	 db_name() db
	,o.type_desc
	,i.is_primary_key
	,i.is_unique_constraint
	,i.is_unique
	,lower(i.type_desc) index_type
	,''[''+s.name collate Cyrillic_General_CI_AS+''].[''+o.name+'']'' object_name
	,''[''+i.name+'']'' index_name
	,case when i.type in (1,2) then
	stuff((
		select '',''+name+case when ic.is_descending_key=0 then '' asc'' else '' desc'' end
		from sys.columns c
		join sys.index_columns ic
			on c.column_id = ic.column_id
			and c.object_id = ic.object_id
			and c.object_id = i.object_id
			and ic.index_id = i.index_id
			and ic.is_included_column=0
		order by ic.key_ordinal
		for xml path('''')
	),1,1,'''')
	when i.type=5 then ''<CLUSTERED COLUMNSTORE>''
	else ''<UNKNOWN>''
	end index_column
	,coalesce(stuff((
		select '',''+name
		from sys.columns c
		join sys.index_columns ic
			on c.column_id = ic.column_id
			and c.object_id = ic.object_id
			and c.object_id = i.object_id
			and ic.index_id = i.index_id
			and ic.is_included_column=1
		order by ic.key_ordinal
		for xml path('''')
	),1,1,''''),''-'') include_column
	,coalesce(filter_definition,''-'') filter_definition
from sys.indexes i
join sys.objects o on i.object_id = o.object_id
join sys.schemas s on s.schema_id = o.schema_id
where 1=1
and i.type != 0
and o.type in (''U'',''V'')
and db_id() != 2'

declare @dt datetime = getdate()
--delete from dbo.index_list where dt$ = (select max(dt$) from dbo.index_list)

;with trg as
(
	select *
	from
	(
		select *,
			rn$ = row_number() over
			(
				partition by db,object_name,index_name
				order by dt$ desc
			)
		from dbo.index_list
	) t
	where rn$=1 and oper$ != 'D'
)
, recordset as
(
	select
		coalesce(src.type_desc, trg.type_desc) as type_desc,
		coalesce(src.db, trg.db) as db,
		coalesce(src.object_name, trg.object_name) as object_name,
		coalesce(src.index_name, trg.index_name) as index_name,
		coalesce(src.index_column, trg.index_column) as index_column,
		coalesce(src.include_column, trg.include_column) as include_column,
		coalesce(src.filter_definition, trg.filter_definition) as filter_definition,
		coalesce(src.is_primary_key, trg.is_primary_key) as is_primary_key,
		coalesce(src.is_unique_constraint, trg.is_unique_constraint) as is_unique_constraint,
		coalesce(src.is_unique, trg.is_unique) as is_unique,
		coalesce(src.index_type, trg.index_type) as index_type,
		@dt as dt$,
		oper$ = case
			when src.db is null then 'D'
			when trg.db is null then 'I'
			when	src.type_desc != trg.type_desc
				or	src.index_column != trg.index_column
				or	coalesce(src.include_column,'') != coalesce(trg.include_column,'')
				or	coalesce(src.filter_definition,'') != coalesce(trg.filter_definition,'')
				or	src.is_primary_key != trg.is_primary_key
				or	src.is_unique_constraint != trg.is_unique_constraint
				or	src.is_unique != trg.is_unique
				or	src.index_type != trg.index_type
								then 'U'
		end
	from trg full join #index_list as src
		on  trg.db = src.db
		and trg.object_name = src.object_name
		and trg.index_name = src.index_name
)
--insert dbo.index_list
select *
from recordset
where oper$ is not null
return
--- формируем оповещение на емэйл
--select @dt = max(dt$) from dbo.index_list
if not exists (select * from dbo.index_list where dt$ = @dt) return

if object_id('tempdb..#curr') is not null drop table #curr
select *
into #curr
from dbo.index_list
where dt$ = @dt

if object_id('tempdb..#prev') is not null drop table #prev
select *
into #prev
from dbo.index_list
where dt$ in (
select max(dt$)
from dbo.index_list
where dt$ < @dt
)

if object_id('tempdb..#res') is not null drop table #res
select 
	 type_desc
	,db
	,object_name
	,index_name
	,index_column
	,isnull(include_column,'') include_column
	,isnull(filter_definition,'') filter_definition
	,case
		when is_primary_key=1 then 'primary key '
		when is_unique_constraint=1 then 'unique constraint '
		when is_unique=1 then 'unique index '
		else ''
	end+index_type as index_type
	,dt$
	,'drop index' oper$
into #res
from #curr
where oper$='D'
union all
select 
	 type_desc
	,db
	,object_name
	,index_name
	,index_column
	,include_column
	,filter_definition
	,case
		when is_primary_key=1 then 'primary key '
		when is_unique_constraint=1 then 'unique constraint '
		when is_unique=1 then 'unique index '
		else ''
	end+index_type
	,dt$
	,'create index'
from #curr
where oper$='I'
union all
select 
	 case when c.type_desc!=p.type_desc
		then 'old: ('+p.type_desc+'); new: ('+c.type_desc+')'
		else c.type_desc
	end
	,c.db
	,c.object_name
	,c.index_name
	,c.index_column cix
	--,p.index_column pix
	,case when c.include_column!=p.include_column
		then 'old: ('+p.include_column+'); new: ('+c.include_column+')'
		else c.include_column
	end
	,case when c.filter_definition!=p.filter_definition
		then 'old: ('+p.filter_definition+'); new: ('+c.filter_definition+')'
		else c.filter_definition
	end
	,case when	c.is_primary_key!=p.is_primary_key or
				c.is_unique_constraint!=p.is_unique_constraint or
				c.is_unique!=p.is_unique or
				c.index_type!=p.index_type
		then 'old: ('+
				case
					when c.is_primary_key=1 then 'primary key '
					when c.is_unique_constraint=1 then 'unique constraint '
					when c.is_unique=1 then 'unique index '
					else ''
				end+c.index_type+'); new: ('+
				case
					when p.is_primary_key=1 then 'primary key '
					when p.is_unique_constraint=1 then 'unique constraint '
					when p.is_unique=1 then 'unique index '
					else ''
				end+p.index_type+')'
		else
				case
					when c.is_primary_key=1 then 'primary key '
					when c.is_unique_constraint=1 then 'unique constraint '
					when c.is_unique=1 then 'unique index '
					else ''
				end+c.index_type
	end
	,convert(nvarchar,c.dt$,120)
	,'modify index'
--select c.*, p.*
from #curr c join #prev p	on	c.db = p.db
							and	c.object_name = p.object_name
							and c.index_name = p.index_name
where c.oper$='U'


DECLARE @tableHTML nvarchar(max) = N'<style type="text/css">
#box-table
{
font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
font-size: 12px;
text-align: center;
border-collapse: collapse;
border-top: 7px solid #9baff1;
border-bottom: 7px solid #9baff1;
}
#box-table th
{
font-size: 13px;
font-weight: normal;
background: #b9c9fe;
border-right: 2px solid #9baff1;
border-left: 2px solid #9baff1;
border-bottom: 2px solid #9baff1;
color: #039;
}
#box-table td
{
border-right: 1px solid #aabcfe;
border-left: 1px solid #aabcfe;
border-bottom: 1px solid #aabcfe;
color: #669;
}
tr:nth-child(odd) { background-color:#eee; }
tr:nth-child(even) { background-color:#fff; } 
</style>'+ 
N'<table id="box-table" >' +
N'
<th>Object Type</th>
<th>Database Name</th>
<th>Object Name</th>
<th>Index Name</th>
<th>Index Colum</th>
<th>Include Column</th>
<th>Filter Definition</th>
<th>Index Type</th>
<th>DateTime</th>
<th>Operation</th>'
+
coalesce(cast ( (
select 
	 td=type_desc, ''
	,td=db, ''
	,td=object_name, ''
	,td=index_name, ''
	,td=index_column, ''
	,td=include_column, ''
	,td=filter_definition, ''
	,td=index_type, ''
	,td=dt$, ''
	,td=oper$, ''
from #res
order by oper$, dt$
for xml path('tr'), type
) as nvarchar(max) ),'')+
N'</table>';

print @tableHTML
declare @sub nvarchar(200)
set @sub = 'Index changed on[' + @@servername+']'
EXEC msdb.dbo.sp_send_dbmail 
@profile_name = 'AlertSystem',
@recipients = 'dba@myemail',
@subject = @sub,
@body = @tableHTML,
@body_format = 'HTML'


Но! Начал периодически получать оповещения, что все индексы удалены, то все индексы заново созданы!!!! Не могу понять как выловить ошибку! Похоже ошибка в том, что во временную таблицу ниче не записывается процедурой sp_msforeachdb - это пока предположение. Даже если это выясню - тоже не понятно что с этим делать? Баг?

Сервер - SQL 2008R2 Enterprise x64. Странно, то что то сутки двое норм работает без ошибок, после иногда фигакс и вываливает что индексы удалены, после созданы...

Кто может сталкивался с подобным? Есть какие то идеи что с этим сделать можно?

JSON. Как соеденить разнородные данные?

$
0
0
Всем привет!
Есть такая задачка: соеденить разнородные элементы в одном JSON.
Много гуглил но так и не понял как сделать...

Пример:

DECLARE @T TABLE (Name VARCHAR(50),Adress VARCHAR(50))
INSERT INTO @T SELECT 'Maksim','Moscow' UNION ALL SELECT 'Vasya','Vladivostok'

DECLARE @Сars TABLE (Brand VARCHAR(50),EngineType VARCHAR(50))
INSERT INTO @Сars SELECT 'Toyota','JZ' UNION ALL SELECT 'Nissan','RB-34'

SELECT Name,Adress FROM @T
SELECT Brand,EngineType FROM @Сars


Эти данные никак не соединены, но вывести их нужно в одном JSON:
Делаю вот так:

SELECT 
NAMES.*,
CARS.*
FROM  @T AS NAMES
FULL OUTER JOIN
@Сars AS CARS ON  1 <> 1
FOR JSON AUTO


Но получается не то что нужно...
На скриншоте попытался показать как вышло моим скриптом, и то, как нужно в итоге..
Кто нибудь готовил такой JSON?

Странная оценка количества строк

$
0
0
Добрый день
Исходные данные:
Версия сервера:
Microsoft SQL Server 2014 (KB4019093) - 12.0.5207.0 (X64)

Есть две тестовые таблицы (для того чтобы показать поведение):
Основная :
CREATE TABLE [Main](
	[OrderID] [int] NOT NULL,
	[RegID] [int] NULL,
PRIMARY KEY CLUSTERED 
(
	[OrderID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
/*некластерный индекс*/
Create INdex IX_RegID ON Main(RegID)


Содержит около 500 000 строк

и вспомогательная:
CREATE TABLE [Linked](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[OrderID] [int] NULL,
	[BoxID] [int] 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]
GO
/*Индексы*/
CREATE NONCLUSTERED INDEX [IX_Order_ID] ON [dbo].[Linked]([OrderID] ASC)
GO
CREATE  INDEX [IX_BOX_ID] ON [dbo].[Linked]([BoxID] ASC)


Содержит около 430 000 строк


При выполнении запроса
Select TOP 1000 T0.OrderID,T7.OrderID from
Main T0
LEFT JOIN Linked T7 ON T0.OrderID = T7.OrderId
where T0.RegID Is Not Null
AND T7.OrderID Is null
order by T0.RegID

План выполнения запроса в оценке строк показывает меньше записей чем их реальное количество.
План прикрепил.
Почему так?

Разбор XBRL в SQL Server

$
0
0
Добрый день, необходимо считать данные из формата xbrl
Можно как то через XQuery?

Например
XPATH =
 /xbrli:xbrl/uk-dic:Den_sredstva_dolya_stoim_aktiv[5]/text()

XPATH =
/xbrli:xbrl/uk-dic:Den_sredstva_dolya_stoim_aktiv[5]/@contextRef

Replace

$
0
0
Всем привет, есть столбец с текстом, в тексте есть двойные кавычки, их нужно заменить на одинарные.
Функция replace([Collection],'"',''') в таком виде не помогает.
Подскажите, пожалуйста, как быть?

Как сгруппировать в зависимости от сортировки

$
0
0
Есть данные таблицы номер операции(nop), операция(op) , норма(nv),участок(uh)

05 отрезка 2.5 заготовительный
10 очистка 2,1 заготовительный
15 сверление 2,5 механический
20 слесарная 1,1 заготовительный

Мне нужно отсортировать по номеру операции и сгруппировать по участку , и взять максимальную операцию и сумму норм

должно получиться

10 4,6 заготовительный
15 2,5 механический
20 1,1 заготовительный

Объединить запросы после цикла

$
0
0
Добрый день!
Задача: из запросов, получаемых циклом, получить одну таблицу.

DECLARE @Doc XML,
@i int

SET @i = 1
WHILE @i < 100
BEGIN
SELECT @Doc=Реестр
FROM РеестрФНС
WHERE Док = @i

SELECT MyColumn.value('@КодОКВЭД','nvarchar(300)') AS КодОКВЭДОсн
FROM @Doc.nodes('/Файл/Документ/СвОКВЭД/СвОКВЭДОсн') MyTable(MyColumn)
SET @i = @i +1
END

Переменная @Doc - это xml-строка.

xml.value вложенные значения

$
0
0
Добрый вечер, помогите пожалуйста с запросом.
Есть xml вида

Declare @xml XML

SET @xml = 
'<xbrli:xbrl xmlns:xbrli="http://www.xbrl.org/2003/instance" 
xmlns:xbrldi="http://xbrl.org/2006/xbrldi" 
xmlns:dim-int="http://www.cbr.ru/xbrl/udr/dim/dim-int" >
<xbrli:context id="A175">
	<xbrli:entity>
		<xbrli:identifier scheme="http://www.cbr.ru">0000000000000</xbrli:identifier>
	</xbrli:entity>
	<xbrli:period>
		<xbrli:instant>2018-01-01</xbrli:instant>
	</xbrli:period>
	<xbrli:scenario>
		<xbrldi:explicitMember dimension="dim-int:Dz_DataAxis">mem-int:SredstvaNaxodUProfUchRynkaCzenBumagMember</xbrldi:explicitMember>
		<xbrldi:typedMember dimension="dim-int:IdAifPifTaxis"><dim-int:IdAifPif_TypedName>ПИФ</dim-int:IdAifPif_TypedName></xbrldi:typedMember>
	</xbrli:scenario>
</xbrli:context>
<xbrli:context id="A176">
	<xbrli:entity>
		<xbrli:identifier scheme="http://www.cbr.ru">0000000000000</xbrli:identifier>
	</xbrli:entity>
	<xbrli:period>
		<xbrli:instant>2018-01-01</xbrli:instant>
	</xbrli:period>
	<xbrli:scenario>
		<xbrldi:explicitMember dimension="dim-int:Dz_DataAxis">mem-int:SredstvaNaxodUProfUchRynkaCzenBumagMember1</xbrldi:explicitMember>
		<xbrldi:typedMember dimension="dim-int:IdAifPifTaxis"><dim-int:IdAifPif_TypedName>qwe</dim-int:IdAifPif_TypedName></xbrldi:typedMember>
	</xbrli:scenario>
</xbrli:context>
</xbrli:xbrl>
'


Хочу считать в таблицу данные в виде
text type
A175mem-int:SredstvaNaxodUProfUchRynkaCzenBumagMember
A176 mem-int:SredstvaNaxodUProfUchRynkaCzenBumagMember1


т.е. во второй столбец только данные с @dimension="dim-int:Dz_DataAxis"

Запрос
;WITH XMLNAMESPACES ('http://www.xbrl.org/2003/instance' as xbrli, 'http://www.cbr.ru/xbrl/nso/uk/dic2' as [xbrldi], 'http://www.cbr.ru/xbrl/nso/uk/dic3' as [dim-int])
select  
 t.c.value('(@id)', 'nvarchar(100)') as [text]
  ,  t.c.query('xbrli:scenario').value('(xbrldi:explicitMember[@dimension="dim-int:Dz_DataAxis"]/text())[1]', 'nvarchar(100)') as [type]
from    @xml.nodes('xbrli:xbrl/xbrli:context') as t(c)


выдает
text type
A175
A176


Если считывать с точкой
;WITH XMLNAMESPACES ('http://www.xbrl.org/2003/instance' as xbrli, 'http://www.cbr.ru/xbrl/nso/uk/dic2' as [xbrldi], 'http://www.cbr.ru/xbrl/nso/uk/dic3' as [dim-int])
select t.c.value('(@id)', 'nvarchar(100)') as [text]
 ,  t.c.query('xbrli:scenario').value('.', 'nvarchar(100)') as [type]
from    @xml.nodes('xbrli:xbrl/xbrli:context') as t(c)


Выдает без пробелов из всех строк
texttype
A175mem-int:SredstvaNaxodUProfUchRynkaCzenBumagMemberПИФ
A176mem-int:SredstvaNaxodUProfUchRynkaCzenBumagMember1qwe

Как бы объяснить SQL чтобы при наличии хоть одного "да", он ставил "да"!

$
0
0
Доброе утро.
Ребят, у меня проблемка и я не знаю с какой стороны к ней подобраться.
Есть у меня выборка, которая показывает какие данные загружены в базу данных.
В моем случае, это данные геофизического каротажа, то есть ИМЯ СКВАЖИНЫ, ГАММА, ВЫЗВ.ПОЛЯРИЗАЦИЯ, КАЖ.СОПРОТИВЛЕНИЕ и т.д.
Вот такие столбцы. Если эти значения есть в базе, то "да", если пусто, то "нет". Но тут вдруг всплыло, что иногда замеры начинали с середины скважины, то есть до 50м, к примеру гамма не замеряли, а от 50 до 100 измерили, а потом снова не замеряли, вот и получается, что он мне по 3-4 раза одну скважину рисует. А мне надо, чтобы "если хоть где-то по скважине есть "да", то он на всю скважину ставил "да" и глубины меня не интересуют.
Пыталась использовать
case row_number() over(partition by...
но не вышло
Помогите идеями, пожалуйста. В какую сторону смотреть?

+
Select distinct top 100 PROJECTCODE,HOLEID
,case when [AR_Om_m] is null THEN 'r'
   ELSE 'a' END [AR_Om_m]
,case when [GR_K_cps] is null THEN 'r'
   ELSE 'a' END [GR_K_cps]
,case when [GR_mkRph] is null THEN 'r'
   ELSE 'a' END [GR_mkRph]
   ,case when [GR_U_cps] is null THEN 'r'
   ELSE 'a' END [GR_U_cps]
,case when [MS_10ppm_u_SI] is null THEN 'r'
   ELSE 'a' END [MS_10ppm_u_SI]
,case when [IC_mSipm] is null THEN 'r'
   ELSE 'a' END [IC_mSipm]
   ,case when [GR_Th_cps] is null THEN 'r'
   ELSE 'a' END [GR_Th_cps]
,case when [GR_Tc_cps] is null THEN 'r'
   ELSE 'a' END [GR_Tc_cps]
,case when [H_nTl] is null THEN 'r'
   ELSE 'a' END [H_nTl]
   ,case when [NP_mV] is null THEN 'r'
   ELSE 'a' END [NP_mV]
,case when [IP_2_pct] is null THEN 'r'
   ELSE 'a' END [IP_2_pct]
,case when [IP_16_pct] is null THEN 'r'
   ELSE 'a' END [IP_16_pct]
   ,case when [IP_10_pct] is null THEN 'r'
   ELSE 'a' END [IP_10_pct]
,case when [IP_04_pct] is null THEN 'r'
   ELSE 'a' END [IP_04_pct]
,case when [I_ab_mA] is null THEN 'r'
   ELSE 'a' END [I_ab_mA]
   ,case when [R_Om] is null THEN 'r'
   ELSE 'a' END [R_Om]
,case when [GR_Tc_cps] is null THEN 'r'
   ELSE 'a' END [GR_Tc_cps]
,case when [T_res_C_ddeg] is null THEN 'r'
   ELSE 'a' END [T_res_C_ddeg]
   ,case when [MS_cor_mSi] is null THEN 'r'
   ELSE 'a' END [MS_cor_mSi] 
   ,case when [Spd_mph] is null THEN 'r'
   ELSE 'a' END [Spd_mph]
,case when [SPV_mV] is null THEN 'r'
   ELSE 'a' END [SPV_mV]
   ,case when [U0] is null THEN 'r'
   ELSE 'a' END [U0]from 
(SELECT TOP 100 PERCENT * FROM (SELECT * FROM (SELECT TOP 100 PERCENT * FROM  (SELECT [HOLEID], [PROJECTCODE], [DEPTHSTEP], [RUN], [PRIORITY], [DEPTH], [AR_Om_m], [Ax_ddeg], [Az_ddeg], [Az_mag_ddeg], [Az_spline_ddeg], [Dip_ddeg]
, [Dip_spline_ddeg], [DISTC], [GR_K_cps], [GR_mkRph], [GR_Tc_cps], [GR_Th_cps], [GR_U_cps], [H_nTl], [I_ab_mA], [I_SO_mA], [IC_mSipm], [IP_04_pct], [IP_10_pct], [IP_16_pct], [IP_2_pct], [IP_pct], [MAPO], [Mask], [MS_10ppm_u_SI]
, [MS_cor_mSi], [MS_spline_10ppm_u_SI], [NP_mV], [R_Om], [Spd_mph], [SPV_mV], [T_barrel_C_ddeg], [T_res_C_ddeg], [T_water_C_ddeg], [Time_s], [U0], [Volatge_cV], [Z_nTl] 
FROM (SELECT 
[HOLEID]
,[PROJECTCODE]
,[DEPTHSTEP]
,[RUN]
,[PRIORITY]
,[DEPTH]
,[AR_Om_m]
,[Ax_ddeg]
,[Az_ddeg]
,[Az_mag_ddeg]
,[Az_spline_ddeg]
,[Dip_ddeg]
,[Dip_spline_ddeg]
,[DISTC]
,[GR_K_cps]
,[GR_mkRph]
,[GR_Tc_cps]
,[GR_Th_cps]
,[GR_U_cps]
,[H_nTl]
,[I_ab_mA]
,[I_SO_mA]
,[IC_mSipm]
,[IP_04_pct]
,[IP_10_pct]
,[IP_16_pct]
,[IP_2_pct]
,[IP_pct]
,[MAPO]
,[Mask]
,[MS_10ppm_u_SI]
,[MS_cor_mSi]
,[MS_spline_10ppm_u_SI]
,[NP_mV]
,[R_Om]
,[Spd_mph]
,[SPV_mV]
,[T_barrel_C_ddeg]
,[T_res_C_ddeg]
,[T_water_C_ddeg]
,[Time_s]
,[U0]
,[Volatge_cV]
,[Z_nTl]
FROM [GEOPHYSHEADER] a 
INNER JOIN 
  (SELECT PROJECTCODE PROJECTCODE_WSF, HOLEID HOLEID_WSF, HOLETYPE FROM (SELECT * FROM [HOLELOCATION]) AS [CollarWSF]) b
ON a.HOLEID = b.HOLEID_WSF 
AND a.PROJECTCODE = b.PROJECTCODE_WSF 
AND b.HOLETYPE = 'DRILLHOLE' 
INNER JOIN 
  (SELECT GEOPHYSGID 
         ,DEPTH 
         ,min(CASE when NAME = 'AR_Om_m' then VALUE ELSE NULL END) as [AR_Om_m]
         ,min(CASE when NAME = 'Ax_ddeg' then VALUE ELSE NULL END) as [Ax_ddeg]
         ,min(CASE when NAME = 'Az_ddeg' then VALUE ELSE NULL END) as [Az_ddeg]
         ,min(CASE when NAME = 'Az_mag_ddeg' then VALUE ELSE NULL END) as [Az_mag_ddeg]
         ,min(CASE when NAME = 'Az_spline_ddeg' then VALUE ELSE NULL END) as [Az_spline_ddeg]
         ,min(CASE when NAME = 'Dip_ddeg' then VALUE ELSE NULL END) as [Dip_ddeg]
         ,min(CASE when NAME = 'Dip_spline_ddeg' then VALUE ELSE NULL END) as [Dip_spline_ddeg]
         ,min(CASE when NAME = 'DISTC' then VALUE ELSE NULL END) as [DISTC]
         ,min(CASE when NAME = 'GR_K_cps' then VALUE ELSE NULL END) as [GR_K_cps]
         ,min(CASE when NAME = 'GR_mkRph' then VALUE ELSE NULL END) as [GR_mkRph]
         ,min(CASE when NAME = 'GR_Tc_cps' then VALUE ELSE NULL END) as [GR_Tc_cps]
         ,min(CASE when NAME = 'GR_Th_cps' then VALUE ELSE NULL END) as [GR_Th_cps]
         ,min(CASE when NAME = 'GR_U_cps' then VALUE ELSE NULL END) as [GR_U_cps]
         ,min(CASE when NAME = 'H_nTl' then VALUE ELSE NULL END) as [H_nTl]
         ,min(CASE when NAME = 'I_ab_mA' then VALUE ELSE NULL END) as [I_ab_mA]
         ,min(CASE when NAME = 'I_SO_mA' then VALUE ELSE NULL END) as [I_SO_mA]
         ,min(CASE when NAME = 'IC_mSipm' then VALUE ELSE NULL END) as [IC_mSipm]
         ,min(CASE when NAME = 'IP_04_pct' then VALUE ELSE NULL END) as [IP_04_pct]
         ,min(CASE when NAME = 'IP_10_pct' then VALUE ELSE NULL END) as [IP_10_pct]
         ,min(CASE when NAME = 'IP_16_pct' then VALUE ELSE NULL END) as [IP_16_pct]
         ,min(CASE when NAME = 'IP_2_pct' then VALUE ELSE NULL END) as [IP_2_pct]
         ,min(CASE when NAME = 'IP_pct' then VALUE ELSE NULL END) as [IP_pct]
         ,min(CASE when NAME = 'MAPO' then VALUE ELSE NULL END) as [MAPO]
         ,min(CASE when NAME = 'Mask' then VALUE ELSE NULL END) as [Mask]
         ,min(CASE when NAME = 'MS_10ppm_u_SI' then VALUE ELSE NULL END) as [MS_10ppm_u_SI]
         ,min(CASE when NAME = 'MS_cor_mSi' then VALUE ELSE NULL END) as [MS_cor_mSi]
         ,min(CASE when NAME = 'MS_spline_10ppm_u_SI' then VALUE ELSE NULL END) as [MS_spline_10ppm_u_SI]
         ,min(CASE when NAME = 'NP_mV' then VALUE ELSE NULL END) as [NP_mV]
         ,min(CASE when NAME = 'R_Om' then VALUE ELSE NULL END) as [R_Om]
         ,min(CASE when NAME = 'Spd_mph' then VALUE ELSE NULL END) as [Spd_mph]
         ,min(CASE when NAME = 'SPV_mV' then VALUE ELSE NULL END) as [SPV_mV]
         ,min(CASE when NAME = 'T_barrel_C_ddeg' then VALUE ELSE NULL END) as [T_barrel_C_ddeg]
         ,min(CASE when NAME = 'T_res_C_ddeg' then VALUE ELSE NULL END) as [T_res_C_ddeg]
         ,min(CASE when NAME = 'T_water_C_ddeg' then VALUE ELSE NULL END) as [T_water_C_ddeg]
         ,min(CASE when NAME = 'Time_s' then VALUE ELSE NULL END) as [Time_s]
         ,min(CASE when NAME = 'U0' then VALUE ELSE NULL END) as [U0]
         ,min(CASE when NAME = 'Volatge_cV' then VALUE ELSE NULL END) as [Volatge_cV]
         ,min(CASE when NAME = 'Z_nTl' then VALUE ELSE NULL END) as [Z_nTl]
   FROM 
     (SELECT GEOPHYSGID,DEPTH,NAME,VALUE FROM GEOPHYSDETAILS WHERE PROPERTYID=0) z
      WHERE NAME IN
        (' '
                 ,'AR_Om_m' 
                 ,'Ax_ddeg' 
                 ,'Az_ddeg' 
                 ,'Az_mag_ddeg' 
                 ,'Az_spline_ddeg' 
                 ,'Dip_ddeg' 
                 ,'Dip_spline_ddeg' 
                 ,'DISTC' 
                 ,'GR_K_cps' 
                 ,'GR_mkRph' 
                 ,'GR_Tc_cps' 
                 ,'GR_Th_cps' 
                 ,'GR_U_cps' 
                 ,'H_nTl' 
                 ,'I_ab_mA' 
                 ,'I_SO_mA' 
                 ,'IC_mSipm' 
                 ,'IP_04_pct' 
                 ,'IP_10_pct' 
                 ,'IP_16_pct' 
                 ,'IP_2_pct' 
                 ,'IP_pct' 
                 ,'MAPO' 
                 ,'Mask' 
                 ,'MS_10ppm_u_SI' 
                 ,'MS_cor_mSi' 
                 ,'MS_spline_10ppm_u_SI' 
                 ,'NP_mV' 
                 ,'R_Om' 
                 ,'Spd_mph' 
                 ,'SPV_mV' 
                 ,'T_barrel_C_ddeg' 
                 ,'T_res_C_ddeg' 
                 ,'T_water_C_ddeg' 
                 ,'Time_s' 
                 ,'U0' 
                 ,'Volatge_cV' 
                 ,'Z_nTl' 
        ) 
      GROUP BY GEOPHYSGID,DEPTH) c 
ON a.GEOPHYSGID = c.GEOPHYSGID) [TMPVIEW11] WHERE ([TMPVIEW11].[AR_Om_m] IS NOT NULL OR [TMPVIEW11].[Ax_ddeg] IS NOT NULL OR [TMPVIEW11].[Az_ddeg] IS NOT NULL OR [TMPVIEW11].[Az_mag_ddeg] IS NOT NULL 
OR [TMPVIEW11].[Az_spline_ddeg] IS NOT NULL OR [TMPVIEW11].[Dip_ddeg] IS NOT NULL OR [TMPVIEW11].[Dip_spline_ddeg] IS NOT NULL OR [TMPVIEW11].[DISTC] IS NOT NULL OR [TMPVIEW11].[GR_K_cps] IS NOT NULL OR [TMPVIEW11].[GR_mkRph] IS NOT NULL 
OR [TMPVIEW11].[GR_Tc_cps] IS NOT NULL OR [TMPVIEW11].[GR_Th_cps] IS NOT NULL OR [TMPVIEW11].[GR_U_cps] IS NOT NULL OR [TMPVIEW11].[H_nTl] IS NOT NULL OR [TMPVIEW11].[I_ab_mA] IS NOT NULL OR [TMPVIEW11].[I_SO_mA] IS NOT NULL
 OR [TMPVIEW11].[IC_mSipm] IS NOT NULL OR [TMPVIEW11].[IP_04_pct] IS NOT NULL OR [TMPVIEW11].[IP_10_pct] IS NOT NULL OR [TMPVIEW11].[IP_16_pct] IS NOT NULL OR [TMPVIEW11].[IP_2_pct] IS NOT NULL OR [TMPVIEW11].[IP_pct] IS NOT NULL 
 OR [TMPVIEW11].[MAPO] IS NOT NULL OR [TMPVIEW11].[Mask] IS NOT NULL OR [TMPVIEW11].[MS_10ppm_u_SI] IS NOT NULL OR [TMPVIEW11].[MS_cor_mSi] IS NOT NULL OR [TMPVIEW11].[MS_spline_10ppm_u_SI] IS NOT NULL OR [TMPVIEW11].[NP_mV] IS NOT NULL 
 OR [TMPVIEW11].[R_Om] IS NOT NULL OR [TMPVIEW11].[Spd_mph] IS NOT NULL OR [TMPVIEW11].[SPV_mV] IS NOT NULL OR [TMPVIEW11].[T_barrel_C_ddeg] IS NOT NULL OR [TMPVIEW11].[T_res_C_ddeg] IS NOT NULL OR [TMPVIEW11].[T_water_C_ddeg] IS NOT NULL
  OR [TMPVIEW11].[Time_s] IS NOT NULL OR [TMPVIEW11].[U0] IS NOT NULL OR [TMPVIEW11].[Volatge_cV] IS NOT NULL OR [TMPVIEW11].[Z_nTl] IS NOT NULL) ) AS [ACQCONVERT] ) AS [TMPVIEW11]) [TMPSQLSHEETVIEW])gdt





Кажется у меня кривые руки...

Log_Shipping

$
0
0
Добрый день всем .

Дали мне сервер на винде с SQL server EE 2000 , на нем стоит несколько баз и у всех настроен log_shipping. Все работают отлично кроме одной БД .
Судя по логам сначала все работало :
+ Логи
Картинка с другого сайта.


Потом судя по логам все пошло наперекосяк и начало выдавать ошибку 701:

There is insufficient memory to run this query
+ Логи Error 701
Картинка с другого сайта.


И уже конец логов , выдает другую ошибку :

Backup can not be performed on this database. This sub task is ignored

+ Логи Task is ignored
Картинка с другого сайта.


Я как понимаю сейчас log_shipping отключен на базе да ?

Что вообще произошло с ней и почему логи не отправлялись ? Неужели правда памяти не хватало ? Или же некий параметр неправильно выставлен ?

Тапками не кидайтесь , первый день с MSSQL , до этого только Oracle.

Всем спасибо за внимание .
Viewing all 7251 articles
Browse latest View live