使用臨時 (SQLXMLBULKLOAD) 工具將 FIAS 加載到 MSSQLSERVER 上的數據庫中。 如何(可能)不應該這樣做

銘文:
“當你手裡拿著錘子時,你周圍的一切看起來都像釘子。”

使用臨時 (SQLXMLBULKLOAD) 工具將 FIAS 加載到 MSSQLSERVER 上的數據庫中。 如何(可能)不應該這樣做
似乎曾幾何時——上週五,當我在辦公室附近走來走去時,該死的老闆們開始擔心我是在無所事事和沈思貓貓。

- 為什麼不下載 FIAS,我親愛的朋友! - 當局說。 “因為我們的業務部門不喜歡下載它的過程。 很長一段時間,他們說它正在加載,加載雜貨店服務器,前幾天寫加載過程的傢伙退出了,好像已經三年了。
此外,那裡的一切都需要在很久以前重做,所以接受它,為自己創建一個基地並確保 FIAS 的定期填充。 正如他們所說,一切都不要拖延!

在這裡,我必須說我與編程有著遙遠的關係,因為。 我是一個DBA。 雖然,另一方面,加載大量預先準備好的信息只是 DBA 的任務,但 nest pa?

“來吧……我們現在就做,”我告訴當局,然後捲起袖子衝到 FIAS 網站。

“關於! 是的,有 dbf! - 我想,高興地搓著手,同時驚嘆於沒有標準的“事實上的”zip 存檔,相反,arj 的存在,它早已在 Bose 中消亡,當然還有一個專有的抱歉,打開, 7zip [但仍然無法使用 powershell Expand -Archive 解壓縮]。 那些。 pure powershell'om 你不會下載也不會解壓。 我們將不得不在服務器上堆放各種垃圾。 反正。

幾年來,我已經編寫了一個用於大規模並行加載 dbf 文件的工具包,所以應該沒有任何問題。

我解壓了 dbfs,啟動了下載程序,在加載數據的同時,我草擬了一個腳本,根據它們的隸屬關係,將單獨的“幾乎相似”的盤子粘在一起。

數據上傳了,本來想去管理辦公室搖,t.s.,老天爺拉著我看導入結果!

使用臨時 (SQLXMLBULKLOAD) 工具將 FIAS 加載到 MSSQLSERVER 上的數據庫中。 如何(可能)不應該這樣做

- 哎呀。 臥槽!???

使用臨時 (SQLXMLBULKLOAD) 工具將 FIAS 加載到 MSSQLSERVER 上的數據庫中。 如何(可能)不應該這樣做

大表加載正常,小表包含錯誤。

這一切讓我變得如此悲傷和難過,以至於我勇敢地振作起來,開始了拖延和我的直接職責。 我真的不想亂用損壞的 dbfs。

我拖延了兩天,直到申請用完,當局再次出現在地平線上,帶著神聖的問題“我們在做什麼?”。

而且,由於沒有什麼可回答的,而且我仍然不想弄亂 dbf,我決定從 xml 加載 FIAS,特別是因為正如他們所說,它時尚、時尚、年輕,而且“dbf 是一種垂死的格式”。
至此,讓我結束冗長的介紹性獨白,進入正題。

題詞2:
是的,這也是可能的。 🙂

所以,決定加載使用 SQLXML批量加載 - 一個很棒的庫,專為結構化 xml 文件的批量(bulk)填充而設計。
為了使用它,你需要 下載 並安裝 SqlXml 4.0 Service Pack 1 (SP1) 庫。

然而,就 FIAS 而言,“結構化”並不是特別需要。 因為那裡的文件沒有不是 xml 的東西……它們當然是 xml,但實際上,它們是帶有數據的平面表,每個文件中都有一個表。

在網站 sql.ru I 成立 程序 spXMLBulkLoad 親愛的用戶 初級,以免完全脫離 SQL 服務器,甚至不在 CLR 上編寫對 SQLXMLBULKLOAD 的調用。

這是它的一個稍微修改的版本:

spXMLBulkLoad

USE [FIAS2]
GO

/****** Object:  StoredProcedure [dbo].[spXMLBulkLoad]    Script Date: 13.05.2019 18:05:58 ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO


-- Необходимо разрешить Ole Automation Procedures:
	-- EXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE WITH OVERRIDE;

-- Пример:
	-- EXEC dbo.spXMLBulkLoad 'Z:PathData.xml','Z:PathSchema.xsd', 'FIAS', 'Z:Patherror.xml'

CREATE PROCEDURE [dbo].[spXMLBulkLoad] (
	 @File		SysName
	,@Schema	SysName
	,@DataBase	SysName	= '<DefaultDataBase>'
	,@ErrorLog	SysName
) AS 
BEGIN 
	DECLARE	 @ErrCode	Int
		,@OLEXMLBulk	Int
		,@ErrMethod		SysName
		,@ErrDescript	NVarChar(4000)
	
	EXEC @ErrCode = sys.sp_OACreate 'SQLXMLBulkLoad.SQLXMLBulkload', @OLEXMLBulk OUT
	IF (@ErrCode = 0) 
	BEGIN
		SET	@DataBase	= 'Provider=SQLOLEDB;Data Source=.;DataBase=' + @DataBase + ';Integrated Security=SSPI'
		EXEC @ErrCode = sys.sp_OASetProperty @OLEXMLBulk ,'ConnectionString', @DataBase		
			IF (@ErrCode <> 0) 
				BEGIN SET @ErrMethod = 'ConnectionString'	
					  GOTO Error 
				END
		EXEC @ErrCode = sys.sp_OASetProperty @OLEXMLBulk ,'ErrorLogFile', @ErrorLog		
			IF (@ErrCode <> 0) 
				BEGIN SET @ErrMethod = 'ErrorLogFile'	
					  GOTO Error 
				END

		EXEC @ErrCode = sys.sp_OASetProperty @OLEXMLBulk, 'CheckConstraints', 1			
			IF (@ErrCode <> 0) 
				BEGIN SET @ErrMethod = 'CheckConstraints'	
					  GOTO Error 
				END

		--EXEC @ErrCode = sys.sp_OASetProperty @OLEXMLBulk, 'ForceTableLock', 1			
		--	IF (@ErrCode <> 0) 
		--		BEGIN SET @ErrMethod = 'ForceTableLock'	
		--			  GOTO Error 
		--		END
		
		EXEC @ErrCode = sys.sp_OAMethod	@OLEXMLBulk, 'Execute', NULL, @Schema, @File
		IF (@ErrCode <> 0) 
		BEGIN
			SET @ErrMethod = 'Execute'
			DECLARE	 @Exist	Int
					,@Error	XML
				    ,@SQL	NvarChar(max)
			EXEC master.dbo.xp_FileExist @ErrorLog, @Exist OUT
			IF (@Exist = 1) 
			BEGIN
				 -- Из @ErrorLog файла
				Set @SQL = N'SELECT  @Error = E.Error + CASE WHEN Right(E.Error,1) <> ''>'' THEN ''lt>'' ELSE '''' END '
						   + N'FROM OPENROWSET(BULK '''+ @ErrorLog +''', SINGLE_NCLOB) E(Error)'
				exec sp_executesql @SQL, N'@Error xml OUTPUT', @Error=@Error OUTPUT 
				
				SELECT	@ErrDescript	= IsNull(@ErrDescript,'') + E.Error.value('Description[1]','SysName') + ' '
				FROM	@Error.nodes('/Result/Error')E(Error)
				SELECT	@ErrDescript	= IsNull(@ErrDescript,'') + E.Error.value('Description[1]','SysName') + ' '
				FROM	@Error.nodes('/Error/Record')E(Error)
			END 
			ELSE
				GOTO Error
		END
		GOTO Destroy
	Error:	
			EXEC @ErrCode = sys.sp_OAGetErrorInfo @OLEXMLBulk, @ErrorLog OUT, @ErrDescript OUT
	Destroy:
			EXEC @ErrCode = sys.sp_OADestroy @OLEXMLBulk
	END 
	ELSE
		SELECT	 
			 @ErrMethod	= 'SQLXMLBulkLoad.SQLXMLBulkload'
			,@ErrorLog	= 'sp_OACreate'
			,@ErrDescript	= 'Ошибка создания OLE объекта'
	
	-- Вывод ошибок
	IF (@ErrMethod IS NOT NULL) 
	BEGIN
		RAISERROR('Ошибка при выполнении метода "%s" в "%s": %s',18,1, @ErrMethod, @ErrorLog, @ErrDescript)
		RETURN	@@Error
	END
END
GO

但是,為了使用此庫批量加載 xml,需要帶註釋的 xsd 模式,其中實際上指示了加載內容的方式和位置。

提到有這樣的方案,“但只有舊方案”——我已經在十幾個網站上找到了,但我沒有找到這些方案本身。 並且生氣了。

修改 FIAS 網站上提供的用於手動導入數據的方案並不困難。
但是......總共 - 有 271 個字段! 好吧,這就是您需要坐下來直言不諱的程度!

因此,我決定自動修改這些模式,同時在數據庫中創建目標表。

SQLXMLBULKLOAD 可以為從帶註釋的模式加載的數據自動創建表,但是,另一方面,如果我執行此模式,那麼為什麼不根據需要自己創建這些表呢?

我從FIAS網站上下載了xsd schemes,純視覺分析。

幸運的是,它們都是同一類型,因此您可以創建一個目標數據庫並自行修改模式,以便僅使用幾個不太複雜的查詢進行加載。

1. 創建一個空的 FIAS2 數據庫。
為什麼是“2”? 好吧,因為“1”是 dbf-ok 的基礎。 也許我們稍後再談。

數據庫創建腳本 FIAS2

CREATE DATABASE [FIAS2]
 CONTAINMENT = NONE
 ON  PRIMARY 
( NAME = N'FIAS', FILENAME = N'E:DataFIAS1.mdf' , SIZE = 10485760KB , FILEGROWTH = 1048576KB )
 LOG ON 
( NAME = N'FIAS_log', FILENAME = N'E:DataFIAS1_log.ldf' , SIZE = 1048576KB , FILEGROWTH = 131072KB )
GO
ALTER DATABASE [FIAS2] SET COMPATIBILITY_LEVEL = 120
GO
ALTER DATABASE [FIAS2] SET ANSI_NULL_DEFAULT ON 
GO
ALTER DATABASE [FIAS2] SET ANSI_NULLS ON 
GO
ALTER DATABASE [FIAS2] SET ANSI_PADDING ON 
GO
ALTER DATABASE [FIAS2] SET ANSI_WARNINGS ON 
GO
ALTER DATABASE [FIAS2] SET ARITHABORT OFF 
GO
ALTER DATABASE [FIAS2] SET AUTO_CLOSE OFF 
GO
ALTER DATABASE [FIAS2] SET AUTO_SHRINK OFF 
GO
ALTER DATABASE [FIAS2] SET AUTO_CREATE_STATISTICS ON(INCREMENTAL = OFF)
GO
ALTER DATABASE [FIAS2] SET AUTO_UPDATE_STATISTICS ON 
GO
ALTER DATABASE [FIAS2] SET CURSOR_CLOSE_ON_COMMIT OFF 
GO
ALTER DATABASE [FIAS2] SET CURSOR_DEFAULT  GLOBAL 
GO
ALTER DATABASE [FIAS2] SET CONCAT_NULL_YIELDS_NULL ON 
GO
ALTER DATABASE [FIAS2] SET NUMERIC_ROUNDABORT OFF 
GO
ALTER DATABASE [FIAS2] SET QUOTED_IDENTIFIER ON 
GO
ALTER DATABASE [FIAS2] SET RECURSIVE_TRIGGERS OFF 
GO
ALTER DATABASE [FIAS2] SET  DISABLE_BROKER 
GO
ALTER DATABASE [FIAS2] SET AUTO_UPDATE_STATISTICS_ASYNC OFF 
GO
ALTER DATABASE [FIAS2] SET DATE_CORRELATION_OPTIMIZATION OFF 
GO
ALTER DATABASE [FIAS2] SET PARAMETERIZATION SIMPLE 
GO
ALTER DATABASE [FIAS2] SET READ_COMMITTED_SNAPSHOT ON 
GO
ALTER DATABASE [FIAS2] SET  READ_WRITE 
GO
ALTER DATABASE [FIAS2] SET RECOVERY SIMPLE 
GO
ALTER DATABASE [FIAS2] SET  MULTI_USER 
GO
ALTER DATABASE [FIAS2] SET PAGE_VERIFY CHECKSUM  
GO
ALTER DATABASE [FIAS2] SET TARGET_RECOVERY_TIME = 0 SECONDS 
GO
ALTER DATABASE [FIAS2] SET DELAYED_DURABILITY = DISABLED 
GO
USE [FIAS2]
GO
IF NOT EXISTS (SELECT name FROM sys.filegroups WHERE is_default=1 AND name = N'PRIMARY') ALTER DATABASE [FIAS2] MODIFY FILEGROUP [PRIMARY] DEFAULT
GO

2. 讓我們在這個數據庫中創建幾個盤子。

第一個板塊將包含 xsd 模式,第二個板塊實際上是從這些 xsd 模式中獲得的數據模式。

xsd 模式實際上是普通的 xml 文件,因此您可以像處理普通的 xml 文件一樣使用它們。

USE [FIAS2]
go

if OBJECT_ID('dbo.[_FIAS]') is not null 
	drop table dbo.[_FIAS]
go

if OBJECT_ID('dbo._FIAS_SCHEMAS') is not null 
	drop table dbo.[_FIAS_SCHEMAS]
go

Create table dbo.[_FIAS_SCHEMAS] (x xml, [table “” not found /]
sysname) go -- Первый запрос: Загрузим схемы в табличку на сервере, для дальнейших манипуляций. insert into dbo.[_FIAS_SCHEMAS] (x, [table “” not found /]
) SELECT x = CAST(BulkColumn AS XML).query('.'), '_ACTSTAT' [table “” not found /]
FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_ACTSTAT_2_250_08_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_ADDROBJ' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_ADDROBJ_2_250_01_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_CENTERST' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_CENTERST_2_250_10_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_CURENTST' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_CURENTST_2_250_07_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_DEL_ADDROBJ' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_DEL_ADDROBJ_2_250_15_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_DEL_HOUSEINT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_DEL_HOUSEINT_2_250_17_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_DEL_HOUSE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_DEL_HOUSE_2_250_16_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_DEL_LANDMARK' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_DEL_LANDMARK_2_250_18_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_DEL_NORMDOC' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_DEL_NORMDOC_2_250_19_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_ESTSTAT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_ESTSTAT_2_250_13_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_FLATTYPE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_FLATTYPE_2_250_23_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_HOUSEINT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_HOUSEINT_2_250_03_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_HOUSE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_HOUSE_2_250_02_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_HSTSTAT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_HSTSTAT_2_250_12_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_INTVSTAT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_INTVSTAT_2_250_11_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_LANDMARK' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_LANDMARK_2_250_04_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_NDOCTYPE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_NDOCTYPE_2_250_20_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_NORMDOC' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_NORMDOC_2_250_05_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_OPERSTAT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_OPERSTAT_2_250_09_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_ROOMTYPE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_ROOMTYPE_2_250_24_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_ROOM' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_ROOM_2_250_21_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_SOCRBASE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_SOCRBASE_2_250_06_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_STEAD' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_STEAD_2_250_22_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_STRSTAT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_STRSTAT_2_250_14_04_01_01.xsd', SINGLE_BLOB) x -- Второй запрос: Распотрошим схемы, и создадим рабочую таблицу с метаданными ;WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema' as xs) Select a.[table “” not found /]
,tbl.[root_name] ,tbl.[root_description] ,tbl.[name] ,ROW_NUMBER() over (partition by a.[table “” not found /]
order by 1/0) N ,tbl.[column] ,tbl.[required] ,tbl.[description] ,tbl.[type] ,tbl.[len] ,Case tbl.[type] when N'byte' then N'tinyint' when N'date' then N'date' when N'int' then N'int' when N'string' then Case when tbl.[len] = 36 and (tbl.[column] like N'%ID' or tbl.[column] = N'NORMDOC') then N'uniqueidentifier' when tbl.[len] is Null then N'nvarchar(max)' Else N'nvarchar(' + cast(tbl.[len] as nvarchar(4000)) + N')' END when N'integer' then Case when tbl.[len] > 9 then N'bigint' when tbl.[len] <= 4 then N'smallint' Else N'int' end else N'nvarchar(max)' End [sqltype] ,t.n.query('.') [node] into dbo.[_FIAS] from dbo.[_FIAS_SCHEMAS] a Cross apply a.x.nodes('//xs:attribute') t(n) Cross apply (values -- некоторые поля используются несколько раз, поэтому сделаем так :) ( x.value('(xs:schema[1]/xs:element[1]/@name)', 'nvarchar(255)') ,x.value('(xs:schema[1]/xs:element[1]/xs:annotation/xs:documentation[1]/text())[1]', 'nvarchar(4000)') ,x.value('(xs:schema[1]/xs:element[1]/xs:complexType[1]/xs:sequence[1]/xs:element[1]/@name)', 'nvarchar(255)') ,t.n.value('(./@name)[1]', 'nvarchar(255)') ,t.n.value('(./@use)[1]', 'nvarchar(255)') ,Stuff(Coalesce(t.n.value('(./xs:simpleType/xs:restriction/@base)[1]', 'nvarchar(255)'), t.n.value('(./@type)[1]', 'nvarchar(255)')), 1, 3, '') ,Coalesce(t.n.value('(./xs:simpleType/xs:restriction/xs:length/@value)[1]', 'int') ,t.n.value('(./xs:simpleType/xs:restriction/xs:maxLength/@value)[1]', 'int') ,t.n.value('(./xs:simpleType/xs:restriction/xs:totalDigits/@value)[1]', 'int')) ,Replace( Replace( Replace( Replace( Replace( Replace( Replace( Replace( Replace(t.n.value('(./xs:annotation/xs:documentation)[1]', 'nvarchar(4000)'), ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') ) ) tbl([root_name], [root_description], [name], [column], [required], [type], [len], [description]) -- Посмотрим на результат Select * from dbo.[_FIAS]

應要求提供更多信息:

第一個將 xsd 模式加載到服務器上的表中,同時在 [table "" not found /] 字段中註釋每個模式
- 我要從相應表加載數據的表的名稱。

當然,也可以做到每次模式發生變化時,都可以下載它們,放入某個文件夾並根據它們再次自動重新創建目標表的結構,並再次自動修改模式,但是 t.To. 結構變化極少,上次變化時——已經是 16 年了——製造這樣一台自動機器是極其懶惰的。 最好在 CTRL+C - CTRL+V 上花費 30 秒。

因此,加載到一個有圖表的表格中是如此硬編碼,加載文件的路徑以及表格的名稱都是手寫的。

第二個查詢從模式中提取有關表結構的信息。 我沒有理會 3nf,而是將其部署為單個表。

順便關註一下這塊(+)

很多時候,初學者會問這樣的問題:是否可以在一個查詢中評估一些複雜的表達式 1 次,然後在多個地方重複使用它。 是的你可以。 像這樣,例如:

from dbo.[_FIAS_SCHEMAS] a
	Cross apply a.x.nodes('//xs:attribute') t(n)
	Cross apply 
			(values -- некоторые поля используются несколько раз, поэтому сделаем так :) 
			(
			 x.value('(xs:schema[1]/xs:element[1]/@name)', 'nvarchar(255)')
, ... здесь можно перечислить все сложновычисляемые поля, чтобы потом использовать их в любой части запроса
			)
			) tbl([root_name], [root_description], [name], [column], [required], [type], [len], [description])

當然,有一些限制。 但是,一旦開始使用它,您就會很快了解它們是什麼。

3. 讓我們創建創建 FIAS 表的腳本,然後運行它們並自行創建表:


Declare @schema sysname = N'dbo'
Declare @sql nvarchar(max)

-- Создадим код для создания таблиц, и запустим его
set @sql = (
	Select Distinct 
		N';Create table ' 
		+ Quotename(@schema)
		+ N'.'
		+ Quotename([table “” not found /]
) + N'(' + Stuff((Select N',' + QUOTENAME(b.[column]) + N' ' + b.[sqltype] + Case b.[required] when 'required' then N' NOT NULL' when 'optional' then N' NULL' End From dbo.[_FIAS] b where b.[table “” not found /]
= a.[table “” not found /]
Order by N ASC For xml path(N''), type ).value(N'.', 'nvarchar(max)'), 1, 1, N'') + N')' from dbo.[_FIAS] a For xml path(N''), type).value(N'.', N'nvarchar(max)') exec (@sql)

誰懶得做這一切 - 用於創建表的腳本和帶註釋的 FIAS 方案將在文章末尾附上。

查詢創建表,這是查詢的結果

;
CREATE TABLE [dbo].[_ACTSTAT] (
[NAME] NVARCHAR(100) NOT NULL
,[ACTSTATID] BIGINT NOT NULL
);
CREATE TABLE [dbo].[_ADDROBJ] (
[AOGUID] UNIQUEIDENTIFIER NOT NULL
,[FORMALNAME] NVARCHAR(120) NOT NULL
,[REGIONCODE] NVARCHAR(2) NOT NULL
,[AUTOCODE] NVARCHAR(1) NOT NULL
,[AREACODE] NVARCHAR(3) NOT NULL
,[CITYCODE] NVARCHAR(3) NOT NULL
,[CTARCODE] NVARCHAR(3) NOT NULL
,[PLACECODE] NVARCHAR(3) NOT NULL
,[PLANCODE] NVARCHAR(4) NOT NULL
,[STREETCODE] NVARCHAR(4) NULL
,[EXTRCODE] NVARCHAR(4) NOT NULL
,[SEXTCODE] NVARCHAR(3) NOT NULL
,[OFFNAME] NVARCHAR(120) NULL
,[POSTALCODE] NVARCHAR(6) NULL
,[IFNSFL] NVARCHAR(4) NULL
,[TERRIFNSFL] NVARCHAR(4) NULL
,[IFNSUL] NVARCHAR(4) NULL
,[TERRIFNSUL] NVARCHAR(4) NULL
,[OKATO] NVARCHAR(11) NULL
,[UPDATEDATE] DATE NOT NULL
,[SHORTNAME] NVARCHAR(10) NOT NULL
,[AOLEVEL] BIGINT NOT NULL
,[PARENTGUID] UNIQUEIDENTIFIER NULL
,[AOID] UNIQUEIDENTIFIER NOT NULL
,[PREVID] UNIQUEIDENTIFIER NULL
,[NEXTID] UNIQUEIDENTIFIER NULL
,[CODE] NVARCHAR(17) NULL
,[PLAINCODE] NVARCHAR(15) NULL
,[ACTSTATUS] BIGINT NOT NULL
,[CENTSTATUS] BIGINT NOT NULL
,[OPERSTATUS] BIGINT NOT NULL
,[CURRSTATUS] BIGINT NOT NULL
,[STARTDATE] DATE NOT NULL
,[ENDDATE] DATE NOT NULL
,[NORMDOC] UNIQUEIDENTIFIER NULL
,[LIVESTATUS] TINYINT NOT NULL
,[DIVTYPE] INT NOT NULL
,[OKTMO] NVARCHAR(11) NULL
);
CREATE TABLE [dbo].[_CENTERST] (
[CENTERSTID] BIGINT NOT NULL
,[NAME] NVARCHAR(100) NOT NULL
);
CREATE TABLE [dbo].[_CURENTST] (
[CURENTSTID] BIGINT NOT NULL
,[NAME] NVARCHAR(100) NOT NULL
);
CREATE TABLE [dbo].[_DEL_ADDROBJ] (
[AOGUID] UNIQUEIDENTIFIER NOT NULL
,[FORMALNAME] NVARCHAR(120) NOT NULL
,[REGIONCODE] NVARCHAR(2) NOT NULL
,[AUTOCODE] NVARCHAR(1) NOT NULL
,[AREACODE] NVARCHAR(3) NOT NULL
,[CITYCODE] NVARCHAR(3) NOT NULL
,[CTARCODE] NVARCHAR(3) NOT NULL
,[PLACECODE] NVARCHAR(3) NOT NULL
,[STREETCODE] NVARCHAR(4) NULL
,[EXTRCODE] NVARCHAR(4) NOT NULL
,[PLANCODE] NVARCHAR(4) NOT NULL
,[SEXTCODE] NVARCHAR(3) NOT NULL
,[OFFNAME] NVARCHAR(120) NULL
,[POSTALCODE] NVARCHAR(6) NULL
,[SHORTNAME] NVARCHAR(10) NOT NULL
,[AOLEVEL] BIGINT NOT NULL
,[PARENTGUID] UNIQUEIDENTIFIER NULL
,[AOID] UNIQUEIDENTIFIER NOT NULL
,[PREVID] UNIQUEIDENTIFIER NULL
,[NEXTID] UNIQUEIDENTIFIER NULL
,[CODE] NVARCHAR(17) NULL
,[PLAINCODE] NVARCHAR(15) NULL
,[ACTSTATUS] BIGINT NOT NULL
,[CENTSTATUS] BIGINT NOT NULL
,[OPERSTATUS] BIGINT NOT NULL
,[CURRSTATUS] BIGINT NOT NULL
,[STARTDATE] DATE NOT NULL
,[ENDDATE] DATE NOT NULL
,[NORMDOC] UNIQUEIDENTIFIER NULL
,[LIVESTATUS] TINYINT NOT NULL
,[IFNSFL] NVARCHAR(4) NULL
,[TERRIFNSFL] NVARCHAR(4) NULL
,[IFNSUL] NVARCHAR(4) NULL
,[TERRIFNSUL] NVARCHAR(4) NULL
,[OKATO] NVARCHAR(11) NULL
,[OKTMO] NVARCHAR(11) NULL
,[UPDATEDATE] DATE NOT NULL
);
CREATE TABLE [dbo].[_DEL_HOUSE] (
[POSTALCODE] NVARCHAR(6) NULL
,[IFNSFL] NVARCHAR(4) NULL
,[TERRIFNSFL] NVARCHAR(4) NULL
,[IFNSUL] NVARCHAR(4) NULL
,[TERRIFNSUL] NVARCHAR(4) NULL
,[OKATO] NVARCHAR(11) NULL
,[OKTMO] NVARCHAR(11) NULL
,[UPDATEDATE] DATE NOT NULL
,[HOUSENUM] NVARCHAR(20) NULL
,[ESTSTATUS] SMALLINT NOT NULL
,[BUILDNUM] NVARCHAR(10) NULL
,[STRUCNUM] NVARCHAR(10) NULL
,[STRSTATUS] BIGINT NULL
,[HOUSEID] UNIQUEIDENTIFIER NOT NULL
,[HOUSEGUID] UNIQUEIDENTIFIER NOT NULL
,[AOGUID] UNIQUEIDENTIFIER NOT NULL
,[STARTDATE] DATE NOT NULL
,[ENDDATE] DATE NOT NULL
,[STATSTATUS] BIGINT NOT NULL
,[NORMDOC] UNIQUEIDENTIFIER NULL
,[COUNTER] BIGINT NOT NULL
,[CADNUM] NVARCHAR(100) NULL
,[DIVTYPE] INT NOT NULL
);
CREATE TABLE [dbo].[_DEL_HOUSEINT] (
[IFNSUL] NVARCHAR(4) NULL
,[TERRIFNSUL] NVARCHAR(4) NULL
,[OKATO] NVARCHAR(11) NULL
,[OKTMO] NVARCHAR(11) NULL
,[UPDATEDATE] DATE NOT NULL
,[INTSTART] BIGINT NOT NULL
,[INTEND] BIGINT NOT NULL
,[POSTALCODE] NVARCHAR(6) NULL
,[IFNSFL] NVARCHAR(4) NULL
,[TERRIFNSFL] NVARCHAR(4) NULL
,[HOUSEINTID] UNIQUEIDENTIFIER NOT NULL
,[INTGUID] UNIQUEIDENTIFIER NOT NULL
,[AOGUID] UNIQUEIDENTIFIER NOT NULL
,[STARTDATE] DATE NOT NULL
,[ENDDATE] DATE NOT NULL
,[INTSTATUS] BIGINT NOT NULL
,[NORMDOC] UNIQUEIDENTIFIER NULL
,[COUNTER] BIGINT NOT NULL
);
CREATE TABLE [dbo].[_DEL_LANDMARK] (
[LOCATION] NVARCHAR(500) NOT NULL
,[POSTALCODE] NVARCHAR(6) NULL
,[IFNSFL] NVARCHAR(4) NULL
,[TERRIFNSFL] NVARCHAR(4) NULL
,[IFNSUL] NVARCHAR(4) NULL
,[TERRIFNSUL] NVARCHAR(4) NULL
,[OKATO] NVARCHAR(11) NULL
,[OKTMO] NVARCHAR(11) NULL
,[UPDATEDATE] DATE NOT NULL
,[LANDID] UNIQUEIDENTIFIER NOT NULL
,[LANDGUID] UNIQUEIDENTIFIER NOT NULL
,[AOGUID] UNIQUEIDENTIFIER NOT NULL
,[STARTDATE] DATE NOT NULL
,[ENDDATE] DATE NOT NULL
,[NORMDOC] UNIQUEIDENTIFIER NULL
);
CREATE TABLE [dbo].[_DEL_NORMDOC] (
[NORMDOCID] UNIQUEIDENTIFIER NOT NULL
,[DOCNAME] NVARCHAR(max) NULL
,[DOCDATE] DATE NULL
,[DOCNUM] NVARCHAR(20) NULL
,[DOCTYPE] BIGINT NOT NULL
,[DOCIMGID] UNIQUEIDENTIFIER NULL
);
CREATE TABLE [dbo].[_ESTSTAT] (
[ESTSTATID] BIGINT NOT NULL
,[NAME] NVARCHAR(20) NOT NULL
,[SHORTNAME] NVARCHAR(20) NULL
);
CREATE TABLE [dbo].[_FLATTYPE] (
[SHORTNAME] NVARCHAR(20) NULL
,[FLTYPEID] BIGINT NOT NULL
,[NAME] NVARCHAR(20) NOT NULL
);
CREATE TABLE [dbo].[_HOUSE] (
[POSTALCODE] NVARCHAR(6) NULL
,[REGIONCODE] NVARCHAR(2) NULL
,[IFNSFL] NVARCHAR(4) NULL
,[TERRIFNSFL] NVARCHAR(4) NULL
,[IFNSUL] NVARCHAR(4) NULL
,[TERRIFNSUL] NVARCHAR(4) NULL
,[OKATO] NVARCHAR(11) NULL
,[OKTMO] NVARCHAR(11) NULL
,[UPDATEDATE] DATE NOT NULL
,[HOUSENUM] NVARCHAR(20) NULL
,[ESTSTATUS] SMALLINT NOT NULL
,[BUILDNUM] NVARCHAR(10) NULL
,[STRUCNUM] NVARCHAR(10) NULL
,[STRSTATUS] BIGINT NULL
,[HOUSEID] UNIQUEIDENTIFIER NOT NULL
,[HOUSEGUID] UNIQUEIDENTIFIER NOT NULL
,[AOGUID] UNIQUEIDENTIFIER NOT NULL
,[STARTDATE] DATE NOT NULL
,[ENDDATE] DATE NOT NULL
,[STATSTATUS] BIGINT NOT NULL
,[NORMDOC] UNIQUEIDENTIFIER NULL
,[COUNTER] BIGINT NOT NULL
,[CADNUM] NVARCHAR(100) NULL
,[DIVTYPE] INT NOT NULL
);
CREATE TABLE [dbo].[_HOUSEINT] (
[OKTMO] NVARCHAR(11) NULL
,[OKATO] NVARCHAR(11) NULL
,[IFNSUL] NVARCHAR(4) NULL
,[TERRIFNSUL] NVARCHAR(4) NULL
,[TERRIFNSFL] NVARCHAR(4) NULL
,[POSTALCODE] NVARCHAR(6) NULL
,[IFNSFL] NVARCHAR(4) NULL
,[ENDDATE] DATE NOT NULL
,[INTSTATUS] BIGINT NOT NULL
,[AOGUID] UNIQUEIDENTIFIER NOT NULL
,[STARTDATE] DATE NOT NULL
,[INTGUID] UNIQUEIDENTIFIER NOT NULL
,[HOUSEINTID] UNIQUEIDENTIFIER NOT NULL
,[INTSTART] BIGINT NOT NULL
,[INTEND] BIGINT NOT NULL
,[UPDATEDATE] DATE NOT NULL
,[NORMDOC] UNIQUEIDENTIFIER NULL
,[COUNTER] BIGINT NOT NULL
);
CREATE TABLE [dbo].[_HSTSTAT] (
[HOUSESTID] BIGINT NOT NULL
,[NAME] NVARCHAR(60) NOT NULL
);
CREATE TABLE [dbo].[_INTVSTAT] (
[INTVSTATID] BIGINT NOT NULL
,[NAME] NVARCHAR(60) NOT NULL
);
CREATE TABLE [dbo].[_LANDMARK] (
[NORMDOC] UNIQUEIDENTIFIER NULL
,[STARTDATE] DATE NOT NULL
,[ENDDATE] DATE NOT NULL
,[LANDGUID] UNIQUEIDENTIFIER NOT NULL
,[AOGUID] UNIQUEIDENTIFIER NOT NULL
,[LANDID] UNIQUEIDENTIFIER NOT NULL
,[LOCATION] NVARCHAR(500) NOT NULL
,[POSTALCODE] NVARCHAR(6) NULL
,[TERRIFNSFL] NVARCHAR(4) NULL
,[IFNSFL] NVARCHAR(4) NULL
,[UPDATEDATE] DATE NOT NULL
,[OKTMO] NVARCHAR(11) NULL
,[OKATO] NVARCHAR(11) NULL
,[IFNSUL] NVARCHAR(4) NULL
,[TERRIFNSUL] NVARCHAR(4) NULL
);
CREATE TABLE [dbo].[_NDOCTYPE] (
[NDTYPEID] BIGINT NOT NULL
,[NAME] NVARCHAR(250) NOT NULL
);
CREATE TABLE [dbo].[_NORMDOC] (
[NORMDOCID] UNIQUEIDENTIFIER NOT NULL
,[DOCNAME] NVARCHAR(max) NULL
,[DOCDATE] DATE NULL
,[DOCNUM] NVARCHAR(20) NULL
,[DOCTYPE] BIGINT NOT NULL
,[DOCIMGID] UNIQUEIDENTIFIER NULL
);
CREATE TABLE [dbo].[_OPERSTAT] (
[OPERSTATID] BIGINT NOT NULL
,[NAME] NVARCHAR(100) NOT NULL
);
CREATE TABLE [dbo].[_ROOM] (
[ROOMGUID] UNIQUEIDENTIFIER NOT NULL
,[FLATNUMBER] NVARCHAR(50) NOT NULL
,[FLATTYPE] INT NOT NULL
,[ROOMNUMBER] NVARCHAR(50) NULL
,[ROOMTYPE] INT NULL
,[REGIONCODE] NVARCHAR(2) NOT NULL
,[POSTALCODE] NVARCHAR(6) NULL
,[UPDATEDATE] DATE NOT NULL
,[HOUSEGUID] UNIQUEIDENTIFIER NOT NULL
,[ROOMID] UNIQUEIDENTIFIER NOT NULL
,[PREVID] UNIQUEIDENTIFIER NULL
,[NEXTID] UNIQUEIDENTIFIER NULL
,[STARTDATE] DATE NOT NULL
,[ENDDATE] DATE NOT NULL
,[LIVESTATUS] TINYINT NOT NULL
,[NORMDOC] UNIQUEIDENTIFIER NULL
,[OPERSTATUS] BIGINT NOT NULL
,[CADNUM] NVARCHAR(100) NULL
,[ROOMCADNUM] NVARCHAR(100) NULL
);
CREATE TABLE [dbo].[_ROOMTYPE] (
[SHORTNAME] NVARCHAR(20) NULL
,[NAME] NVARCHAR(20) NOT NULL
,[RMTYPEID] BIGINT NOT NULL
);
CREATE TABLE [dbo].[_SOCRBASE] (
[LEVEL] BIGINT NOT NULL
,[SCNAME] NVARCHAR(10) NULL
,[SOCRNAME] NVARCHAR(50) NOT NULL
,[KOD_T_ST] NVARCHAR(4) NOT NULL
);
CREATE TABLE [dbo].[_STEAD] (
[STEADGUID] UNIQUEIDENTIFIER NOT NULL
,[NUMBER] NVARCHAR(120) NULL
,[REGIONCODE] NVARCHAR(2) NOT NULL
,[POSTALCODE] NVARCHAR(6) NULL
,[IFNSFL] NVARCHAR(4) NULL
,[TERRIFNSFL] NVARCHAR(4) NULL
,[IFNSUL] NVARCHAR(4) NULL
,[TERRIFNSUL] NVARCHAR(4) NULL
,[OKATO] NVARCHAR(11) NULL
,[OKTMO] NVARCHAR(11) NULL
,[UPDATEDATE] DATE NOT NULL
,[PARENTGUID] UNIQUEIDENTIFIER NULL
,[STEADID] UNIQUEIDENTIFIER NOT NULL
,[PREVID] UNIQUEIDENTIFIER NULL
,[NEXTID] UNIQUEIDENTIFIER NULL
,[OPERSTATUS] BIGINT NOT NULL
,[STARTDATE] DATE NOT NULL
,[ENDDATE] DATE NOT NULL
,[NORMDOC] UNIQUEIDENTIFIER NULL
,[LIVESTATUS] TINYINT NOT NULL
,[CADNUM] NVARCHAR(100) NULL
,[DIVTYPE] INT NOT NULL
);
CREATE TABLE [dbo].[_STRSTAT] (
[NAME] NVARCHAR(20) NOT NULL
,[SHORTNAME] NVARCHAR(20) NULL
,[STRSTATID] BIGINT NOT NULL
)

4、由於xsd中有正常的表和字段的描述,我們就利用它,在表及其字段的擴展屬性中創建結構的描述:

-- Создадим аннотацию к таблицам и полям
Set @sql = (
Select N'; exec sp_addextendedproperty @name=''description'', @value=N''' 
+ a.[root_description] 
+ N''', @level0type =N''Schema'', @level0name = N''' 
+ @schema 
+ N''', @level1type = N''Table'',  @level1name = N''' 
+ a.[table “” not found /]
+ N'''' from (Select distinct [table “” not found /]
, [root_description] from dbo.[_FIAS]) a for xml path(N''), type ).value(N'.', N'nvarchar(max)') exec (@sql) Set @sql = ( Select N'; exec sp_addextendedproperty @name=''description'', @value=N''' + a.[description] + N''', @level0type =N''Schema'', @level0name = N''' + @schema + N''', @level1type = N''Table'', @level1name = N''' + a.[table “” not found /]
+ N''', @level2type = N''Column'', @level2name = N''' + a.[column] + N'''' from dbo.[_FIAS] a for xml path(N''), type ).value(N'.', N'nvarchar(max)') exec (@sql)

這是作為工作結果產生和執行的代碼

;
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по статусу актуальности в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ACTSTAT';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией классификатора адресообразующих элементов БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по статусу центра в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_CENTERST';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по статусу актуальности КЛАДР 4.0 в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_CURENTST';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией классификатора адресообразующих элементов БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по номерам домов улиц городов и населенных пунктов, номера земельных участков и т.п в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по интервалам домов в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по описанию мест расположения  имущественных объектов в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по сведениям по нормативным документам, являющимся основанием присвоения адресному элементу наименования в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по признакам владения в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ESTSTAT';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по типам помещений в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_FLATTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по номерам домов улиц городов и населенных пунктов в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по интервалам домов в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по статусу состояния домов  в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HSTSTAT';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по статусу интервалов домов в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_INTVSTAT';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по описанию мест расположения  имущественных объектов в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по типу нормативного документа в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_NDOCTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по сведениям по нормативным документам, являющимся основанием присвоения адресному элементу наименования в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по статусу действия в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_OPERSTAT';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла со сведениями о помещениях'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по типам комнат в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOMTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по типам адресных объектов в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_SOCRBASE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла со сведениями о земельных участках'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состав и структура файла с информацией по признакам строения в БД ФИАС'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STRSTAT'
;
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Глобальный уникальный идентификатор адресного объекта '
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'AOGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Формализованное наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'FORMALNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код региона'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'REGIONCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код автономии'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'AUTOCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код района'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'AREACODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код города'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'CITYCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код внутригородского района'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'CTARCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код населенного пункта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'PLACECODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код элемента планировочной структуры'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'PLANCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код улицы'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'STREETCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код дополнительного адресообразующего элемента'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'EXTRCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код подчиненного дополнительного адресообразующего элемента'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'SEXTCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Официальное наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'OFFNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Почтовый индекс'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'POSTALCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'IFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'TERRIFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'IFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'TERRIFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKATO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'OKATO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата внесения записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'UPDATEDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Краткое наименование типа объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'SHORTNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уровень адресного объекта '
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'AOLEVEL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор объекта родительского объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'PARENTGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уникальный идентификатор записи. Ключевое поле.'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'AOID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи связывания с предыдушей исторической записью'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'PREVID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи связывания с последующей исторической записью'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'NEXTID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код адресного объекта одной строкой с признаком актуальности из КЛАДР 4.0. '
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'CODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код адресного объекта из КЛАДР 4.0 одной строкой без признака актуальности (последних двух цифр)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'PLAINCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус актуальности адресного объекта ФИАС. Актуальный адрес на текущую дату. Обычно последняя запись об адресном объекте.
0 – Не актуальный
1 - Актуальный
'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'ACTSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус центра'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'CENTSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус действия над записью – причина появления записи (см. описание таблицы OperationStatus):
01 – Инициация;
10 – Добавление;
20 – Изменение;
21 – Групповое изменение;
30 – Удаление;
31 - Удаление вследствие удаления вышестоящего объекта;
40 – Присоединение адресного объекта (слияние);
41 – Переподчинение вследствие слияния вышестоящего объекта;
42 - Прекращение существования вследствие присоединения к другому адресному объекту;
43 - Создание нового адресного объекта в результате слияния адресных объектов;
50 – Переподчинение;
51 – Переподчинение вследствие переподчинения вышестоящего объекта;
60 – Прекращение существования вследствие дробления;
61 – Создание нового адресного объекта в результате дробления
'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'OPERSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус актуальности КЛАДР 4 (последние две цифры в коде)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'CURRSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Начало действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'STARTDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Окончание действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'ENDDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Внешний ключ на нормативный документ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Признак действующего адресного объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'LIVESTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'
Тип адресации:
0 - не определено
1 - муниципальный;
2 - административно-территориальный
'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'DIVTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKTMO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'OKTMO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор статуса (ключ)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_CURENTST'
,@level2type = N'Column'
,@level2name = N'CURENTSTID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование (0 - актуальный, 1-50, 2-98 – исторический (кроме 51), 51 - переподчиненный, 99 - несуществующий)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_CURENTST'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Краткое наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_FLATTYPE'
,@level2type = N'Column'
,@level2name = N'SHORTNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Тип помещения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_FLATTYPE'
,@level2type = N'Column'
,@level2name = N'FLTYPEID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_FLATTYPE'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор статуса'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HSTSTAT'
,@level2type = N'Column'
,@level2name = N'HOUSESTID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HSTSTAT'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи (ключ)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_NDOCTYPE'
,@level2type = N'Column'
,@level2name = N'NDTYPEID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование типа нормативного документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_NDOCTYPE'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор статуса (ключ)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_OPERSTAT'
,@level2type = N'Column'
,@level2name = N'OPERSTATID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование
01 – Инициация;
10 – Добавление;
20 – Изменение;
21 – Групповое изменение;
30 – Удаление;
31 - Удаление вследствие удаления вышестоящего объекта;
40 – Присоединение адресного объекта (слияние);
41 – Переподчинение вследствие слияния вышестоящего объекта;
42 - Прекращение существования вследствие присоединения к другому адресному объекту;
43 - Создание нового адресного объекта в результате слияния адресных объектов;
50 – Переподчинение;
51 – Переподчинение вследствие переподчинения вышестоящего объекта;
60 – Прекращение существования вследствие дробления;
61 – Создание нового адресного объекта в результате дробления;
70 – Восстановление объекта прекратившего существование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_OPERSTAT'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Глобальный уникальный идентификатор адресного объекта '
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'AOGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Формализованное наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'FORMALNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код региона'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'REGIONCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код автономии'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'AUTOCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код района'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'AREACODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код города'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'CITYCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код внутригородского района'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'CTARCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код населенного пункта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'PLACECODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код улицы'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'STREETCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код дополнительного адресообразующего элемента'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'EXTRCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код элемента планировочной структуры'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'PLANCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код подчиненного дополнительного адресообразующего элемента'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'SEXTCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Официальное наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'OFFNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Почтовый индекс'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'POSTALCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Краткое наименование типа объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'SHORTNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уровень адресного объекта '
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'AOLEVEL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор объекта родительского объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'PARENTGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уникальный идентификатор записи. Ключевое поле.'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'AOID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи связывания с предыдушей исторической записью'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'PREVID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи связывания с последующей исторической записью'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'NEXTID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код адресного объекта одной строкой с признаком актуальности из КЛАДР 4.0. '
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'CODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код адресного объекта из КЛАДР 4.0 одной строкой без признака актуальности (последних двух цифр)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'PLAINCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус актуальности адресного объекта ФИАС. Актуальный адрес на текущую дату. Обычно последняя запись об адресном объекте.
0 – Не актуальный
1 - Актуальный
'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'ACTSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус центра'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'CENTSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус действия над записью – причина появления записи (см. описание таблицы OperationStatus):
01 – Инициация;
10 – Добавление;
20 – Изменение;
21 – Групповое изменение;
30 – Удаление;
31 - Удаление вследствие удаления вышестоящего объекта;
40 – Присоединение адресного объекта (слияние);
41 – Переподчинение вследствие слияния вышестоящего объекта;
42 - Прекращение существования вследствие присоединения к другому адресному объекту;
43 - Создание нового адресного объекта в результате слияния адресных объектов;
50 – Переподчинение;
51 – Переподчинение вследствие переподчинения вышестоящего объекта;
60 – Прекращение существования вследствие дробления;
61 – Создание нового адресного объекта в результате дробления
'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'OPERSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус актуальности КЛАДР 4 (последние две цифры в коде)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'CURRSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Начало действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'STARTDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Окончание действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'ENDDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Внешний ключ на нормативный документ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Признак действующего адресного объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'LIVESTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'IFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'TERRIFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'IFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'TERRIFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKATO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'OKATO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKTMO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'OKTMO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата внесения записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_ADDROBJ'
,@level2type = N'Column'
,@level2name = N'UPDATEDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'IFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'TERRIFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKATO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'OKATO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKTMO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'OKTMO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата внесения записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'UPDATEDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Значение начала интервала'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'INTSTART';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Значение окончания интервала'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'INTEND';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Почтовый индекс'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'POSTALCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'IFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'TERRIFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи интервала домов'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'HOUSEINTID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Глобальный уникальный идентификатор интервала домов'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'INTGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор объекта родительского объекта (улицы, города, населенного пункта и т.п.)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'AOGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Начало действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'STARTDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Окончание действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'ENDDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус интервала (обычный, четный, нечетный)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'INTSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Внешний ключ на нормативный документ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Счетчик записей домов для КЛАДР 4'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'COUNTER';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор нормативного документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_NORMDOC'
,@level2type = N'Column'
,@level2name = N'NORMDOCID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_NORMDOC'
,@level2type = N'Column'
,@level2name = N'DOCNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_NORMDOC'
,@level2type = N'Column'
,@level2name = N'DOCDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_NORMDOC'
,@level2type = N'Column'
,@level2name = N'DOCNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Тип документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_NORMDOC'
,@level2type = N'Column'
,@level2name = N'DOCTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор образа (внешний ключ)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_NORMDOC'
,@level2type = N'Column'
,@level2name = N'DOCIMGID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKTMO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'OKTMO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKATO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'OKATO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'IFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'TERRIFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'TERRIFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Почтовый индекс'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'POSTALCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'IFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Окончание действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'ENDDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус интервала (обычный, четный, нечетный)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'INTSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор объекта родительского объекта (улицы, города, населенного пункта и т.п.)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'AOGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Начало действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'STARTDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Глобальный уникальный идентификатор интервала домов'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'INTGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи интервала домов'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'HOUSEINTID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Значение начала интервала'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'INTSTART';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Значение окончания интервала'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'INTEND';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата внесения записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'UPDATEDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Внешний ключ на нормативный документ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Счетчик записей домов для КЛАДР 4'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSEINT'
,@level2type = N'Column'
,@level2name = N'COUNTER';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор статуса (обычный, четный, нечетный)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_INTVSTAT'
,@level2type = N'Column'
,@level2name = N'INTVSTATID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_INTVSTAT'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Внешний ключ на нормативный документ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Начало действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'STARTDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Окончание действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'ENDDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Глобальный уникальный идентификатор ориентира'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'LANDGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уникальный идентификатор родительского объекта (улицы, города, населенного пункта и т.п.)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'AOGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уникальный идентификатор записи ориентира'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'LANDID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Месторасположение ориентира'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'LOCATION';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Почтовый индекс'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'POSTALCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'TERRIFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'IFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата внесения записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'UPDATEDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKTMO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'OKTMO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKATO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'OKATO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'IFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_LANDMARK'
,@level2type = N'Column'
,@level2name = N'TERRIFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор нормативного документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_NORMDOC'
,@level2type = N'Column'
,@level2name = N'NORMDOCID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_NORMDOC'
,@level2type = N'Column'
,@level2name = N'DOCNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_NORMDOC'
,@level2type = N'Column'
,@level2name = N'DOCDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_NORMDOC'
,@level2type = N'Column'
,@level2name = N'DOCNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Тип документа'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_NORMDOC'
,@level2type = N'Column'
,@level2name = N'DOCTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор образа (внешний ключ)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_NORMDOC'
,@level2type = N'Column'
,@level2name = N'DOCIMGID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Краткое наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOMTYPE'
,@level2type = N'Column'
,@level2name = N'SHORTNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOMTYPE'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Тип комнаты'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOMTYPE'
,@level2type = N'Column'
,@level2name = N'RMTYPEID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уровень адресного объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_SOCRBASE'
,@level2type = N'Column'
,@level2name = N'LEVEL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Краткое наименование типа объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_SOCRBASE'
,@level2type = N'Column'
,@level2name = N'SCNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Полное наименование типа объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_SOCRBASE'
,@level2type = N'Column'
,@level2name = N'SOCRNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Ключевое поле'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_SOCRBASE'
,@level2type = N'Column'
,@level2name = N'KOD_T_ST';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование
0 – Не актуальный
1 – Актуальный (последняя запись по адресному объекту)
'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ACTSTAT'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор статуса (ключ)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ACTSTAT'
,@level2type = N'Column'
,@level2name = N'ACTSTATID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор статуса'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_CENTERST'
,@level2type = N'Column'
,@level2name = N'CENTERSTID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_CENTERST'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Почтовый индекс'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'POSTALCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'IFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'TERRIFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'IFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'TERRIFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKATO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'OKATO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKTMO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'OKTMO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата время внесения записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'UPDATEDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер дома'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'HOUSENUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Признак владения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'ESTSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер корпуса'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'BUILDNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер строения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'STRUCNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Признак строения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'STRSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уникальный идентификатор записи дома'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'HOUSEID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Глобальный уникальный идентификатор дома'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'HOUSEGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Guid записи родительского объекта (улицы, города, населенного пункта и т.п.)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'AOGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Начало действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'STARTDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Окончание действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'ENDDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состояние дома'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'STATSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Внешний ключ на нормативный документ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Счетчик записей домов для КЛАДР 4'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'COUNTER';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Кадастровый номер'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'CADNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Тип адресации:
0 - не определено
1 - муниципальный;
2 - административно-территориальный'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_HOUSE'
,@level2type = N'Column'
,@level2name = N'DIVTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Признак владения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ESTSTAT'
,@level2type = N'Column'
,@level2name = N'ESTSTATID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ESTSTAT'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Краткое наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ESTSTAT'
,@level2type = N'Column'
,@level2name = N'SHORTNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Глобальный уникальный идентификатор адресного объекта (земельного участка)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'STEADGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер земельного участка'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'NUMBER';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код региона'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'REGIONCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Почтовый индекс'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'POSTALCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'IFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'TERRIFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'IFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'TERRIFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKATO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'OKATO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKTMO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'OKTMO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата внесения записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'UPDATEDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор объекта родительского объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'PARENTGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уникальный идентификатор записи. Ключевое поле.'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'STEADID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи связывания с предыдушей исторической записью'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'PREVID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи связывания с последующей исторической записью'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'NEXTID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус действия над записью – причина появления записи (см. описание таблицы OperationStatus):
01 – Инициация;
10 – Добавление;
20 – Изменение;
21 – Групповое изменение;
30 – Удаление;
31 - Удаление вследствие удаления вышестоящего объекта;
40 – Присоединение адресного объекта (слияние);
41 – Переподчинение вследствие слияния вышестоящего объекта;
42 - Прекращение существования вследствие присоединения к другому адресному объекту;
43 - Создание нового адресного объекта в результате слияния адресных объектов;
50 – Переподчинение;
51 – Переподчинение вследствие переподчинения вышестоящего объекта;
60 – Прекращение существования вследствие дробления;
61 – Создание нового адресного объекта в результате дробления
'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'OPERSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Начало действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'STARTDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Окончание действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'ENDDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Внешний ключ на нормативный документ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Признак действующего адресного объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'LIVESTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Кадастровый номер'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'CADNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Тип адресации:
0 - не определено
1 - муниципальный;
2 - административно-территориальный'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STEAD'
,@level2type = N'Column'
,@level2name = N'DIVTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Месторасположение ориентира'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'LOCATION';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Почтовый индекс'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'POSTALCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'IFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'TERRIFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'IFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'TERRIFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKATO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'OKATO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKTMO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'OKTMO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата внесения записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'UPDATEDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уникальный идентификатор записи ориентира'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'LANDID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Глобальный уникальный идентификатор ориентира'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'LANDGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уникальный идентификатор родительского объекта (улицы, города, населенного пункта и т.п.)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'AOGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Начало действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'STARTDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Окончание действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'ENDDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Внешний ключ на нормативный документ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_DEL_LANDMARK'
,@level2type = N'Column'
,@level2name = N'NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Почтовый индекс'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'POSTALCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код региона'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'REGIONCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'IFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ФЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'TERRIFNSFL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'IFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код территориального участка ИФНС ЮЛ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'TERRIFNSUL';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKATO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'OKATO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'OKTMO'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'OKTMO';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата время внесения записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'UPDATEDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер дома'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'HOUSENUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Признак владения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'ESTSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер корпуса'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'BUILDNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер строения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'STRUCNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Признак строения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'STRSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уникальный идентификатор записи дома'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'HOUSEID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Глобальный уникальный идентификатор дома'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'HOUSEGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Guid записи родительского объекта (улицы, города, населенного пункта и т.п.)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'AOGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Начало действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'STARTDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Окончание действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'ENDDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Состояние дома'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'STATSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Внешний ключ на нормативный документ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Счетчик записей домов для КЛАДР 4'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'COUNTER';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Кадастровый номер'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'CADNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Тип адресации:
0 - не определено
1 - муниципальный;
2 - административно-территориальный'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_HOUSE'
,@level2type = N'Column'
,@level2name = N'DIVTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Глобальный уникальный идентификатор адресного объекта (помещения)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'ROOMGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер помещения или офиса'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'FLATNUMBER';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Тип помещения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'FLATTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Номер комнаты'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'ROOMNUMBER';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Тип комнаты'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'ROOMTYPE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Код региона'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'REGIONCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Почтовый индекс'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'POSTALCODE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Дата внесения записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'UPDATEDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор родительского объекта (дома)'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'HOUSEGUID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Уникальный идентификатор записи. Ключевое поле.'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'ROOMID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи связывания с предыдушей исторической записью'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'PREVID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Идентификатор записи связывания с последующей исторической записью'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'NEXTID';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Начало действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'STARTDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Окончание действия записи'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'ENDDATE';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Признак действующего адресного объекта'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'LIVESTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Внешний ключ на нормативный документ'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'NORMDOC';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Статус действия над записью – причина появления записи (см. описание таблицы OperationStatus):
01 – Инициация;
10 – Добавление;
20 – Изменение;
21 – Групповое изменение;
30 – Удаление;
31 - Удаление вследствие удаления вышестоящего объекта;
40 – Присоединение адресного объекта (слияние);
41 – Переподчинение вследствие слияния вышестоящего объекта;
42 - Прекращение существования вследствие присоединения к другому адресному объекту;
43 - Создание нового адресного объекта в результате слияния адресных объектов;
50 – Переподчинение;
51 – Переподчинение вследствие переподчинения вышестоящего объекта;
60 – Прекращение существования вследствие дробления;
61 – Создание нового адресного объекта в результате дробления
'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'OPERSTATUS';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Кадастровый номер помещения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'CADNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Кадастровый номер комнаты в помещении'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_ROOM'
,@level2type = N'Column'
,@level2name = N'ROOMCADNUM';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STRSTAT'
,@level2type = N'Column'
,@level2name = N'NAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Краткое наименование'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STRSTAT'
,@level2type = N'Column'
,@level2name = N'SHORTNAME';
EXEC sp_addextendedproperty @name = 'description'
,@value = N'Признак строения'
,@level0type = N'Schema'
,@level0name = N'dbo'
,@level1type = N'Table'
,@level1name = N'_STRSTAT'
,@level2type = N'Column'
,@level2name = N'STRSTATID'

5.我們自己修改方案:

-- Определение ссылки на импортируемую схему
update a
Set x.modify ('declare namespace xs="http://www.w3.org/2001/XMLSchema";             
insert <xs:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="./sqltypes.xsd" />  as first
into (xs:schema)[1]')
from dbo.[_FIAS_SCHEMAS] a
-- Определение корневого аттрибута
update a
Set x.modify('declare namespace ss="urn:schemas-microsoft-com:mapping-schema";             
insert (              
attribute ss:is-constant {"1"}          
)             
into (/xs:schema[1]/xs:element[1])')
from dbo.[_FIAS_SCHEMAS] a
-- Определение ноды, являющейся строкой таблицы и связанной с ней таблицы
update a
Set x.modify('declare namespace ss="urn:schemas-microsoft-com:mapping-schema";             
insert (              
attribute ss:relation {sql:column("a.table")}         
)             
into (xs:schema[1]/xs:element[1]/xs:complexType[1]/xs:sequence[1]/xs:element[1])')
from dbo.[_FIAS_SCHEMAS] a
-- Аннотация полей в схеме
-- Т.к. за 1 раз можно модифицировать только одну ноду - придется использовать курсор
Declare @table nvarchar(4000)
Declare @column nvarchar(4000)
Declare cur CURSOR LOCAL FORWARD_ONLY
for
Select [table “” not found /]
, [column] from dbo.[_FIAS] Open cur FETCH NEXT FROM cur into @table, @column WHILE @@FETCH_STATUS = 0 BEGIN update a Set x.modify('declare namespace ss="urn:schemas-microsoft-com:mapping-schema"; insert ( attribute ss:field {sql:column("t.column")} ,attribute ss:datatype {sql:column("b.sqltype")} ) into (//xs:attribute[@name = sql:column("b.column")])[1]') from dbo.[_FIAS_SCHEMAS] a inner join dbo.[_FIAS] b on a.[table “” not found /]
= b.[table “” not found /]
cross apply (Values(QUOTENAME(b.[column]))) t([column]) Where b.[table “” not found /]
= @table and b.[column] = @column FETCH NEXT FROM cur into @table, @column END CLOSE cur; DEALLOCATE cur;

6. 最後,將 xsd 模式轉儲到磁盤以供進一步使用:

-- Выгрузка схем
-- Обратите внимание, путь к выгружаемым схемам - захардкожен!
Set @sql = (
Select N'; exec xp_cmdshell ''bcp "Select [x] from [FIAS2].[dbo].[_FIAS_SCHEMAS] where [table “” not found /]
= ''''' + a.[table “” not found /]
+ '''''" queryout "c:filesFIAS' + a.[table “” not found /]
+ '.xsd" -S . -T -w''' from dbo.[_FIAS_SCHEMAS] a for xml path(N''), type ).value(N'.', N'nvarchar(max)') exec (@sql)

全部! :-)))

下面是生成表、它們的描述、修改模式並將它們轉儲到磁盤的整個查詢:

USE [FIAS2]
go
if OBJECT_ID('dbo.[_FIAS]') is not null 
drop table dbo.[_FIAS]
go
if OBJECT_ID('dbo._FIAS_SCHEMAS') is not null 
drop table dbo.[_FIAS_SCHEMAS]
go
Declare @schema sysname = N'dbo'
Declare @sql nvarchar(max)
Create table dbo.[_FIAS_SCHEMAS] (x xml, [table “” not found /]
sysname) insert into dbo.[_FIAS_SCHEMAS] (x, [table “” not found /]
) SELECT x = CAST(BulkColumn AS XML).query('.'), '_ACTSTAT' [table “” not found /]
FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_ACTSTAT_2_250_08_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_ADDROBJ' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_ADDROBJ_2_250_01_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_CENTERST' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_CENTERST_2_250_10_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_CURENTST' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_CURENTST_2_250_07_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_DEL_ADDROBJ' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_DEL_ADDROBJ_2_250_15_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_DEL_HOUSEINT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_DEL_HOUSEINT_2_250_17_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_DEL_HOUSE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_DEL_HOUSE_2_250_16_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_DEL_LANDMARK' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_DEL_LANDMARK_2_250_18_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_DEL_NORMDOC' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_DEL_NORMDOC_2_250_19_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_ESTSTAT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_ESTSTAT_2_250_13_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_FLATTYPE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_FLATTYPE_2_250_23_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_HOUSEINT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_HOUSEINT_2_250_03_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_HOUSE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_HOUSE_2_250_02_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_HSTSTAT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_HSTSTAT_2_250_12_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_INTVSTAT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_INTVSTAT_2_250_11_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_LANDMARK' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_LANDMARK_2_250_04_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_NDOCTYPE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_NDOCTYPE_2_250_20_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_NORMDOC' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_NORMDOC_2_250_05_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_OPERSTAT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_OPERSTAT_2_250_09_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_ROOMTYPE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_ROOMTYPE_2_250_24_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_ROOM' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_ROOM_2_250_21_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_SOCRBASE' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_SOCRBASE_2_250_06_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_STEAD' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_STEAD_2_250_22_04_01_01.xsd', SINGLE_BLOB) x Union all SELECT x = CAST(BulkColumn AS XML).query('.'), '_STRSTAT' FROM OPENROWSET(BULK 's01sq03c$filesFIASAS_STRSTAT_2_250_14_04_01_01.xsd', SINGLE_BLOB) x ;WITH XMLNAMESPACES ('http://www.w3.org/2001/XMLSchema' as xs) Select a.[table “” not found /]
,tbl.[root_name] ,tbl.[root_description] ,tbl.[name] ,ROW_NUMBER() over (partition by a.[table “” not found /]
order by 1/0) N ,tbl.[column] ,tbl.[required] ,tbl.[description] ,tbl.[type] ,tbl.[len] ,Case tbl.[type] when N'byte' then N'tinyint' when N'date' then N'date' when N'int' then N'int' when N'string' then Case when tbl.[len] = 36 and (tbl.[column] like N'%ID' or tbl.[column] = N'NORMDOC') then N'uniqueidentifier' when tbl.[len] is Null then N'nvarchar(max)' Else N'nvarchar(' + cast(tbl.[len] as nvarchar(4000)) + N')' END when N'integer' then Case when tbl.[len] > 9 then N'bigint' when tbl.[len] <= 4 then N'smallint' Else N'int' end else N'nvarchar(max)' End [sqltype] ,t.n.query('.') [node] into dbo.[_FIAS] from dbo.[_FIAS_SCHEMAS] a Cross apply a.x.nodes('//xs:attribute') t(n) Cross apply (values -- некоторые поля используются несколько раз, поэтому сделаем так :) ( x.value('(xs:schema[1]/xs:element[1]/@name)', 'nvarchar(255)') ,x.value('(xs:schema[1]/xs:element[1]/xs:annotation/xs:documentation[1]/text())[1]', 'nvarchar(4000)') ,x.value('(xs:schema[1]/xs:element[1]/xs:complexType[1]/xs:sequence[1]/xs:element[1]/@name)', 'nvarchar(255)') ,t.n.value('(./@name)[1]', 'nvarchar(255)') ,t.n.value('(./@use)[1]', 'nvarchar(255)') ,Stuff(Coalesce(t.n.value('(./xs:simpleType/xs:restriction/@base)[1]', 'nvarchar(255)'), t.n.value('(./@type)[1]', 'nvarchar(255)')), 1, 3, '') ,Coalesce(t.n.value('(./xs:simpleType/xs:restriction/xs:length/@value)[1]', 'int') ,t.n.value('(./xs:simpleType/xs:restriction/xs:maxLength/@value)[1]', 'int') ,t.n.value('(./xs:simpleType/xs:restriction/xs:totalDigits/@value)[1]', 'int')) ,Replace( Replace( Replace( Replace( Replace( Replace( Replace( Replace( Replace(t.n.value('(./xs:annotation/xs:documentation)[1]', 'nvarchar(4000)'), ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') , ' ', ' ') ) ) tbl([root_name], [root_description], [name], [column], [required], [type], [len], [description]) -- Посмотрим на результат Select * from dbo.[_FIAS] -- Создадим код для создания таблиц, и запустим его set @sql = ( Select Distinct N';Create table ' + Quotename(@schema) + N'.' + Quotename([table “” not found /]
) + N'(' + Stuff((Select N',' + QUOTENAME(b.[column]) + N' ' + b.[sqltype] + Case b.[required] when 'required' then N' NOT NULL' when 'optional' then N' NULL' End From dbo.[_FIAS] b where b.[table “” not found /]
= a.[table “” not found /]
Order by N ASC For xml path(N''), type ).value(N'.', 'nvarchar(max)'), 1, 1, N'') + N')' from dbo.[_FIAS] a For xml path(N''), type).value(N'.', N'nvarchar(max)') exec (@sql) -- Создадим аннотацию к таблицам и полям Set @sql = ( Select N'; exec sp_addextendedproperty @name=''description'', @value=N''' + a.[root_description] + N''', @level0type =N''Schema'', @level0name = N''' + @schema + N''', @level1type = N''Table'', @level1name = N''' + a.[table “” not found /]
+ N'''' from (Select distinct [table “” not found /]
, [root_description] from dbo.[_FIAS]) a for xml path(N''), type ).value(N'.', N'nvarchar(max)') exec (@sql) Set @sql = ( Select N'; exec sp_addextendedproperty @name=''description'', @value=N''' + a.[description] + N''', @level0type =N''Schema'', @level0name = N''' + @schema + N''', @level1type = N''Table'', @level1name = N''' + a.[table “” not found /]
+ N''', @level2type = N''Column'', @level2name = N''' + a.[column] + N'''' from dbo.[_FIAS] a for xml path(N''), type ).value(N'.', N'nvarchar(max)') exec (@sql) -- Определение ссылки на импортируемую схему update a Set x.modify ('declare namespace xs="http://www.w3.org/2001/XMLSchema"; insert <xs:import namespace="http://schemas.microsoft.com/sqlserver/2004/sqltypes" schemaLocation="./sqltypes.xsd" /> as first into (xs:schema)[1]') from dbo.[_FIAS_SCHEMAS] a -- Определение корневого аттрибута update a Set x.modify('declare namespace ss="urn:schemas-microsoft-com:mapping-schema"; insert ( attribute ss:is-constant {"1"} ) into (/xs:schema[1]/xs:element[1])') from dbo.[_FIAS_SCHEMAS] a -- Определение ноды, являющейся строкой таблицы и связанной с ней таблицы update a Set x.modify('declare namespace ss="urn:schemas-microsoft-com:mapping-schema"; insert ( attribute ss:relation {sql:column("a.table")} ) into (xs:schema[1]/xs:element[1]/xs:complexType[1]/xs:sequence[1]/xs:element[1])') from dbo.[_FIAS_SCHEMAS] a -- Аннотация полей в схеме -- Т.к. за 1 раз можно модифицировать только одну ноду - придется использовать курсор Declare @table nvarchar(4000) Declare @column nvarchar(4000) Declare cur CURSOR LOCAL FORWARD_ONLY for Select [table “” not found /]
, [column] from dbo.[_FIAS] Open cur FETCH NEXT FROM cur into @table, @column WHILE @@FETCH_STATUS = 0 BEGIN update a Set x.modify('declare namespace ss="urn:schemas-microsoft-com:mapping-schema"; insert ( attribute ss:field {sql:column("t.column")} ,attribute ss:datatype {sql:column("b.sqltype")} ) into (//xs:attribute[@name = sql:column("b.column")])[1]') from dbo.[_FIAS_SCHEMAS] a inner join dbo.[_FIAS] b on a.[table “” not found /]
= b.[table “” not found /]
cross apply (Values(QUOTENAME(b.[column]))) t([column]) Where b.[table “” not found /]
= @table and b.[column] = @column FETCH NEXT FROM cur into @table, @column END CLOSE cur; DEALLOCATE cur; -- Выгрузка схем -- Обратите внимание, путь к выгружаемым схемам - захардкожен! Set @sql = ( Select N'; exec xp_cmdshell ''bcp "Select [x] from [FIAS2].[dbo].[_FIAS_SCHEMAS] where [table “” not found /]
= ''''' + a.[table “” not found /]
+ '''''" queryout "c:filesFIAS' + a.[table “” not found /]
+ '.xsd" -S . -T -w''' from dbo.[_FIAS_SCHEMAS] a for xml path(N''), type ).value(N'.', N'nvarchar(max)') exec (@sql)

現在只需要為每個具有相應模式的 xml 文件調用加載過程 (解壓文件本身存儲在 e:tmp 文件夾中,我們將方案上傳到 c:filesFIAS):

USE FIAS2
GO
Declare @sql nvarchar(max)
if OBJECT_ID('tempdb..#t') is not null
drop table #t
Create table #t ([output] sysname NULL)
insert into #t
exec xp_cmdshell 'dir e:tmp /B'
;With load_data as
(
Select 
'_' + t.x.value('(a[2])', 'nvarchar(255)') [table “” not found /]
,t.x.value('(a[3])', 'date') [fias_date] ,t.x.value('(a[4])', 'uniqueidentifier') [fias_guid] ,a.[output] [file_name] from #t a cross apply (VALUES(Cast('<a>' + Replace(Replace(Replace(Replace(a.[output],'DEL_', 'DEL$'), '_', '</a><a>'), '.', '</a><a>'), '$', '_') + '</a>' as xml))) t(x) Where [output] like 'AS[_]%.xml' ) Select @sql = (Select N';exec [dbo].[spXMLBulkLoad] ''e:tmp' + a.[file_name] + ''', ''c:filesFIAS' + b.[table “” not found /]
+ '.xsd'', ''FIAS2'', ''e:tmperr.xml''' from load_data a inner join [dbo].[_FIAS_SCHEMAS] b on a.[table “” not found /]
= b.[table “” not found /]
For xml path(''), type).value(N'.', N'nvarchar(max)') Exec (@sql)

嗯…

好了,現在終於全部結束了。

但是,這就是我想告訴你的,親愛的同事們!
這一切都很簡單 最狂野的 慢慢來!
當然,我不是在談論創建表和模式。 關於下載。

在測試環境下,下載花了我差不多 5小時 (原文如此!!!)。 這沒有表索引。

與此同時,I/O 系統負載處於 3 Mb/s 的水平,並且只涉及幾個內核。

地址對象的加載速度不超過每秒 3 條記錄,房屋的加載速度不超過每秒 8 條。 一分鐘內,有 60 萬。
這與什麼有關 - 我不能說,我仍然需要更深入地研究代碼,顯然還有 VM 設置。

請注意,加載是在堆中完成的。 只有這樣,它才應該在它們的任何 AOID 上創建聚簇索引。

因為它們是 GUID,最好只這樣做,因為如果您在加載之前創建聚簇索引,則輸出將是一個表,碎片化了大約 50%,不少於此。 那麼,最好在加載後創建索引,因為插入到索引中會使加載速度更慢。

這就是為什麼我的表名以下劃線 (_) 開頭的原因。 我應該先將數據加載到它們中,然後重新創建目標表的索引,然後冷靜地進行一次 Alter 表切換。

還要注意 FIAS 表字段的非最佳數據類型。
例如,使用 int,其中 tinyint 就足夠了,或者在應該只存儲數值的字段中使用 nvarchar,例如區域代碼或 OKATO。
所以在圖中:-(。

然而,在創建元數據表 [dbo].[_FIAS] 後,沒有什麼能阻止您用手深入研究它並對其進行調整,然後才能基於更正後的元數據創建新的啟動方案。

好吧,如果你仍然不能擺脫這麼慢的加載,顯然,你將不得不返回到從 dbf 加載的選項,最後,找出小 dbfs 中的錯誤。 並寫另一篇文章。

8個線程的dbf,一分錢正常1小時加載,單表合併成目標表,建索引,大概需要一個小時。

... 嗯,或者,最後,把你的手從zhzhzh ... 呃 ... aphedron 中抽出來,最後做一個普通的數據層應用程序,和所有正常人一樣,通過SSIS 加載數據。

但這是另一個故事。

腳本和 xsd 模式

相關鏈接:

→ FIAS

與狗的照片不是我的 🙂

來源: www.habr.com

添加評論