Epigraaf:
„Kui sul on käes haamer, näib kõik ümberringi olevat naelu.“

Kord ammu, tundub – eelmisel reedel, ringi liikudes meie kontori ümbruses, muretses kahetsusväärne juhtkond, et ma veedan aega lõbutsemise ja kasside vaatlemisega.
– Kas ei peaks sul, sõber, FIAST laadima! – ütles juhtkond. – Sest selle laadimise protsess ei meeldi meie äriosakondadele. Nad ütlevad, et see laadib kaua, toodete serverit ning tüüp, kes selle laadimise protsessi kirjutas, lahkus hiljuti, umbes kolm aastat tagasi.
Pealegi tuleb seal kõik ammu ümber teha, nii et võta, loo endale baas ja tagage FIASe regulaarne laadimine. Nii et, nagu öeldakse, ei viivita!
Siinkohal tuleb öelda, et programmeerimisega olen ma kaugelt seotud, kuna olen pigem DBA. Kuigi, teiselt poolt, suurte eelnevalt ettevalmistatud andmekogumite laadimine – ongi DBA ülesanne, eks ole?
– Oh, pole probleemi... Teeme praegu – ütlesin ma juhtkonnale ja kiirustasin FIASe saidile, käised üles keeratud.
«O! Siin on dbf!» — mõtlesin, rõõmsasti käsi hõõrudes, samal ajal imestades standardse «de-fakto» zip arhiivi puudumise üle ja vastupidiselt, ammu unustatud arj ja omandiõigus, avatud, muidugi, 7zip [aga mida ei saa siiski Powershelli Expand-Archive'iga lahti pakkida]. See tähendab, et puhta Powershelliga ei saa seda alla laadida ega lahti pakkida. Pean rikkuma serverit igasuguste asjadega. Aga mis seal ikka.
Kohandatud tööriistad massiliseks paralleelseks dbf-failide laadimiseks olen juba mitu aastat kirjutanud, nii et probleeme ei tohiks tekkida.
Pakkisin dbf-failid lahti, käivitasin laadimisprogrammi ja seni, kuni andmed laaditi, kirjutasin skripti, mis liitis erinevad «peaaegu samanimelised» tabelid üheks, kuuluvuse järgi.
Laadisin andmed üles ja olin juba valmis minema juhtkonnale kät kergitama, kuid kurat mind tõukas vaatama impordi tulemusi!

— Ups. WTF!!!???

Suured tabelid laadis normaalselt, aga väikestes olid võlad.
Ja tunnen, et kogu see asi ajab mind nii kurvaks ja masendavaks, et ma julgelt võtsin end kokku ja asusin tegelema prokrastineerimise ja oma otseste kohustustega. Kätkida vigastatud dbf-failide kallal – ei olnud mingit soovi.
Prokrastineerisin ma kaks päeva, kuni taotlused said otsa ja horisondile ilmus jälle ülemus, küsimusega: „Miks me siin lõbutseme?"
Ja kuna vastata polnud midagi, ja kätkida dbf-failide kallal – ei olnud endiselt soov, otsustasin laadida FIASi xmlist, eriti kuna, nagu öeldakse, stiilne, moodne, noortele, ja „dbf on suremas formaat".
Sellega lubage lõpetada veniv sissejuhatav monoloog ja minna asja kallale.
Epigraaf 2:
Jah, ka nii saab. 🙂
Nii et laadida oli otsustatud kasutades – suurepärane teek, mis on mõeldud just massiliseks (bulk) struktureeritud xml-failide laadimiseks.
Selle kasutamiseks on vajalik ja installida SqlXml 4.0 Service Pack 1 (SP1).
Kuid FIASi puhul ei ole „struktureeritus” eriti nõutud. Kuna seal on failid, mis ei ole just xml... nad on küll xml, aga sisuliselt – need on andmete tasandid, iga fail sisaldab ühte tabelit.
Leidsin sql.ru veebisaidilt protseduur spXMLBulkLoad lugupeetud kasutaja Mnior, et mitte SQL serveri piiridest välja minna ja mitte isegi CLR-i SQLXMLBULKLOADi kutset kirjutada.
Siin on veidi muudetud versioon:
spXMLBulkLoad
KASUTA [FIAS2]
GO
/****** Objekt: SalvestatudProtseduur [dbo].[spXMLBulkLoad] Skripti kuupäev: 13.05.2019 18:05:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- Ole Automation Procedures tuleb lubada:
-- EXEC sp_configure 'Ole Automation Procedures', 1; RECONFIGURE WITH OVERRIDE;
-- Näide:
-- EXEC dbo.spXMLBulkLoad 'Z:PathData.xml','Z:PathSchema.xsd', 'FIAS', 'Z:Patherror.xml'
LOO PROTSENDI [dbo].[spXMLBulkLoad] (
@File SysName
,@Schema SysName
,@DataBase SysName = ''
,@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 Viga
END
EXEC @ErrCode = sys.sp_OASetProperty @OLEXMLBulk ,'ErrorLogFile', @ErrorLog
IF (@ErrCode 0)
BEGIN SET @ErrMethod = 'ErrorLogFile'
GOTO Viga
END
EXEC @ErrCode = sys.sp_OASetProperty @OLEXMLBulk, 'CheckConstraints', 1
IF (@ErrCode 0)
BEGIN SET @ErrMethod = 'CheckConstraints'
GOTO Viga
END
--EXEC @ErrCode = sys.sp_OASetProperty @OLEXMLBulk, 'ForceTableLock', 1
-- IF (@ErrCode 0)
-- BEGIN SET @ErrMethod = 'ForceTableLock'
-- GOTO Viga
-- 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 failist
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 Viga
END
GOTO Hävita
Viga:
EXEC @ErrCode = sys.sp_OAGetErrorInfo @OLEXMLBulk, @ErrorLog OUT, @ErrDescript OUT
Hävita:
EXEC @ErrCode = sys.sp_OADestroy @OLEXMLBulk
END
ELSE
SELECT
@ErrMethod = 'SQLXMLBulkLoad.SQLXMLBulkload'
,@ErrorLog = 'sp_OACreate'
,@ErrDescript = 'OLE objekti loomise viga'
-- Vigade väljastamine
IF (@ErrMethod IS NOT NULL)
BEGIN
RAISERROR('Viga meetodi "%s" teostamisel "%s": %s',18,1, @ErrMethod, @ErrorLog, @ErrDescript)
RETURN @@Error
END
END
GO
Kuid selle biblioteki kaudu XML-i massiliseks laadimiseks on vajalikud annotateeritud XSD skeemid, milles on tegelikult sätestatud, kuidas ja kuhu andmed laaditakse.
Mainimised, et sellised skeemid eksisteerivad, kuid "ainult vanad" — leidsin lausa kümnelt veebisaidilt, kuid ma ei leidnud kuskilt skeeme ennast. Ja see ajas mind vihaseks.
Muuta olemasolevat FIASi veebisaidil olevat skeemi andmete käsitsi importimiseks ei ole keeruline.
Aga... kokku on seal 271 välja! Kui kaua seal siis passima peab!
Seetõttu otsustasin neid skeeme automaatselt muuta ning luua samal ajal sihtandmebaasid.
SQLXMLBULKLOAD oskab automaatselt luua andmebaasi tabeleid, tuginedes annotatsioonidega skeemile, kuid kui ma juba seda skeemi teen, siis miks mitte lihtsalt luua need tabelid ise, nii nagu mul vaja on?
Laadisin alla XSD skeemid FIASi veebisaidilt ja analüüsisin neid visuaalselt.
Õnneks on nad kõik ühesugused, seega on sihtandmebaasi loomine ja skeemide muutmine laadimiseks võimalik vaid mõne mitte liiga keerulise päringu abil.
1. Loome tühja andmebaasi FIAS2.
Miks «2»? Sest «1» oli baas dbf-failidest. Võib-olla räägime sellest hiljem.
FIA2 andmebaasi loomise skript
Loo andmebaas [FIAS2]
KAITSE = PUUDUB
PEAMISED
( NIMEGA = N'FIAS', FAILINIME = N'E:DataFIAS1.mdf' , SUURUS = 10485760KB , FAILIKASV = 1048576KB )
LOGI PEALE
( NIMEGA = N'FIAS_log', FAILINIME = N'E:DataFIAS1_log.ldf' , SUURUS = 1048576KB , FAILIKASV = 131072KB )
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS TUGILEVELILE = 120
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS ANSI_NULL_DEFAULT ON
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS ANSI_NULLS ON
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS ANSI_PADDING ON
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS ANSI_WARNINGS ON
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS ARITHABORT OFF
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS AUTO_CLOSE OFF
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS AUTO_SHRINK OFF
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS AUTO_CREATE_STATISTICS ON(INCREMENTAL = OFF)
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS AUTO_UPDATE_STATISTICS ON
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS CURSOR_CLOSE_ON_COMMIT OFF
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS CURSOR_DEFAULT GLOBAL
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS CONCAT_NULL_YIELDS_NULL ON
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS NUMERIC_ROUNDABORT OFF
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS QUOTED_IDENTIFIER ON
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS RECURSIVE_TRIGGERS OFF
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS DISABLE_BROKER
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS AUTO_UPDATE_STATISTICS_ASYNC OFF
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS DATE_CORRELATION_OPTIMIZATION OFF
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS PARAMETERIZATION SIMPLE
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS READ_COMMITTED_SNAPSHOT ON
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS READ_WRITE
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS RECOVERY SIMPLE
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS MULTI_USER
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS PAGE_VERIFY CHECKSUM
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS TARGET_RECOVERY_TIME = 0 SEKUNDIT
GO
MUUDA ANDMEBAAS [FIAS2] SEADISTUS DELAYED_DURABILITY = DISABLED
GO
KASUTA [FIAS2]
GO
KUI EI OLE (VALIGE nimi FROM sys.filegroups WHERE is_default=1 AND nimi = N'PRIMARY') MUUDA ANDMEBAAS [FIAS2] MODIFIY FILEGROUP [PRIMARY] DEFAULT
GO
2. Loome selle andmebaasi paar tabelit.
Esimene tabel sisaldab xsd skeeme, teine aga esindab tegelikult andmeskeemi, mis on saadud nende xsd skeemidest.
xsd-skeemid on tegelikult tavalised xml-failid, seega saab nendega töötada nagu tavaliste xml-idega.
KASUTA [FIAS2]
go
kui OBJECT_ID('dbo.[_FIAS]') ei ole null
drop table dbo.[_FIAS]
go
kui OBJECT_ID('dbo._FIAS_SCHEMAS') ei ole null
drop table dbo.[_FIAS_SCHEMAS]
go
Loo tabel dbo.[_FIAS_SCHEMAS] (x xml, [table “” not found /]
sysname)
go
-- Esimene päring: Laadime skeemid serverisse tabelisse, et hilisemate manipulatsioonide jaoks.
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
-- Teine päring: Jagame skeemid ja loome töölaua metainfotabeli
;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 /]
järjestage 1/0) N
,tbl.[veerg]
,tbl.[nõutud]
,tbl.[kirjeldus]
,tbl.[tüüp]
,tbl.[pikkus]
,Case tbl.[tüüp]
kui N'byte' siis N'tinyint'
kui N'date' siis N'date'
kui N'int' siis N'int'
kui N'string' siis
Case kui tbl.[pikkus] = 36 ja (tbl.[veerg] nagu N'%ID' või tbl.[veerg] = N'NORMDOC') siis N'uniqueidentifier'
kui tbl.[pikkus] on Null siis N'nvarchar(max)'
Muud N'nvarchar(' + cast(tbl.[pikkus] as nvarchar(4000)) + N')' LÕPP
kui N'integer' siis
Case kui tbl.[pikkus] > 9 siis N'bigint'
kui tbl.[pikkus] <= 4 siis N'smallint'
Muud N'int'
lõpp
muud N'nvarchar(max)'
LÕPP [sqltype]
,t.n.query('.') [node]
sisestage dbo.[_FIAS]
from dbo.[_FIAS_SCHEMAS] a
Kruvi rakendamine a.x.nodes('//xs:attribute') t(n)
Kruvi rakendamine
(väärtused -- mõned väljad on mitu korda kasutusel, seega teeme nii :)
(
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'))
,Asenda(
Asenda(
Asenda(
Asenda(
Asenda(
Asenda(
Asenda(
Asenda(
Asenda(t.n.value('(./xs:annotation/xs:documentation)[1]', 'nvarchar(4000)'), ' ', ' ')
, ' ', ' ')
, ' ', ' ')
, ' ', ' ')
, ' ', ' ')
, ' ', ' ')
, ' ', ' ')
, ' ', ' ')
, ' ', ' ')
)
) tbl([juure_nimi], [juure_kirjeldus], [nimi], [veerg], [nõutud], [tüüp], [pikkus], [kirjeldus])
-- Vaatame tulemust
Vali * from dbo.[_FIAS]
Rohkem olulist teavet päringute kohta:
Esimene – laadib xsd skeemid serverisse tabelisse, pakkudes igale skeemile märkuse [table “” not found /] väljas.
– tabeli nimega, kuhu soovin laadida andmed vastavast tabelist.
Muidugi oleks võimalik teha nii, et iga kord, kui skeemid muudataks, saaks neid alla laadida, panna mõnda kausta ja taasluua sihttabelite struktuur automaatselt, ning seejärel ka skeeme automaatselt muuta. Kuid kuna struktuur muutub äärmiselt harva – viimane kord muutus 16. aastal – on sellise automaatika tegemine väga vaevarikas. Paremini kulutada 30 sekundit CTRL+C – CTRL+V peale.
Seetõttu on skeemide tabelisse laadimine nii kõvakattega ning laaditavate failide teed ja tabelite nimed – kirjutatud käsitsi.
Teine päring – toob skeemide struktuuri kohta teavet tabelite kohta. Ma ei viitsinud 3NF-iga mässata, vaid laiendasin seda kui ühte tabelit.
Pöörake tähelepanu sellele tükile (+)
Algajad küsivad sageli: kas on võimalik keerukamat avaldist päringus arvutada kord, ja siis kasutada seda mitmes kohas. Jah, on võimalik. Näiteks nii:
from dbo.[_FIAS_SCHEMAS] a
Cross apply a.x.nodes('//xs:attribute') t(n)
Cross apply
(values -- mõned väljad on mitu korda kasutuses, seega teeme nii :)
(
x.value('(xs:schema[1]/xs:element[1]/@name)', 'nvarchar(255)')
, ... siin saab loetleda kõik keeruliselt arvutatavad väljad, et hiljem neid kuskil päringus kasutada
)
) tbl([root_name], [root_description], [name], [column], [required], [type], [len], [description])
See töötab mõningate piirangutega, muidugi. Kuid kui alustate kasutamist, saate kiiresti aru, mis need on.
3. Loome skriptid, mis loovad FIAS tabelid, seejärel käivitame need ja loome tabelid:
Deklareerime @schema sysname = N'dbo'
Deklareerime @sql nvarchar(max)
-- Loome koodi tabelite loomiseks ja käivitame selle
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)
Kes ei viitsi seda kõike teha – tabelite loomise skriptid ja märgistatud FIAS skeemid lisatakse artikli lõppu.
Tabelite loomise päring, mis saadi päringu töötamise tulemusena
;
LOO KATALOOG [dbo].[_ACTSTAT] (
[NAME] NVARCHAR(100) NOT NULL
,[ACTSTATID] BIGINT NOT NULL
);
LOO KATALOOG [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
);
LOO KATALOOG [dbo].[_CENTERST] (
[CENTERSTID] BIGINT NOT NULL
,[NAME] NVARCHAR(100) NOT NULL
);
LOO KATALOOG [dbo].[_CURENTST] (
[CURENTSTID] BIGINT NOT NULL
,[NAME] NVARCHAR(100) NOT NULL
);
LOO KATALOOG [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
);
LOO KATALOOG [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
);
LOO KATALOOG [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
);
LOO KATALOOG [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
);
LOO KATALOOG [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
);
LOO KATALOOG [dbo].[_ESTSTAT] (
[ESTSTATID] BIGINT NOT NULL
,[NAME] NVARCHAR(20) NOT NULL
,[SHORTNAME] NVARCHAR(20) NULL
);
LOO KATALOOG [dbo].[_FLATTYPE] (
[SHORTNAME] NVARCHAR(20) NULL
,[FLTYPEID] BIGINT NOT NULL
,[NAME] NVARCHAR(20) NOT NULL
);
LOO KATALOOG [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
);
LOO KATALOOG [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
);
LOO KATALOOG [dbo].[_HSTSTAT] (
[HOUSESTID] BIGINT NOT NULL
,[NAME] NVARCHAR(60) NOT NULL
);
LOO KATALOOG [dbo].[_INTVSTAT] (
[INTVSTATID] BIGINT NOT NULL
,[NAME] NVARCHAR(60) NOT NULL
);
LOO KATALOOG [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
);
LOO KATALOOG [dbo].[_NDOCTYPE] (
[NDTYPEID] BIGINT NOT NULL
,[NAME] NVARCHAR(250) NOT NULL
);
LOO KATALOOG [dbo].[_NORMDOC] (
[NORMDOCID] UNIQUEIDENTIFIER NOT NULL
,[DOCNAME] NVARCHAR(max) NULL
,[DOCDATE] DATE NULL
,[DOCNUM] NVARCHAR(20) NULL
,[DOCTYPE] BIGINT NOT NULL
,[DOCIMGID] UNIQUEIDENTIFIER NULL
);
LOO KATALOOG [dbo].[_OPERSTAT] (
[OPERSTATID] BIGINT NOT NULL
,[NAME] NVARCHAR(100) NOT NULL
);
LOO KATALOOG [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
);
LOO KATALOOG [dbo].[_ROOMTYPE] (
[SHORTNAME] NVARCHAR(20) NULL
,[NAME] NVARCHAR(20) NOT NULL
,[RMTYPEID] BIGINT NOT NULL
);
LOO KATALOOG [dbo].[_SOCRBASE] (
[LEVEL] BIGINT NOT NULL
,[SCNAME] NVARCHAR(10) NULL
,[SOCRNAME] NVARCHAR(50) NOT NULL
,[KOD_T_ST] NVARCHAR(4) NOT NULL
);
LOO KATALOOG [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
);
LOO KATALOOG [dbo].[_STRSTAT] (
[NAME] NVARCHAR(20) NOT NULL
,[SHORTNAME] NVARCHAR(20) NULL
,[STRSTATID] BIGINT NOT NULL
)
4. Kui xsd-s on tabelite ja nende väljade normaalne kirjeldus, kasutame seda ja loome tabelite ning nende väljade arendatud omadustes struktuuri kirjelduse:
-- Loome annotatsiooni tabelite ja väljade jaoks
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)
Siin on kood, mis saadi ja täideti töö tulemusena
;
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. Muudame tegelikult skeeme:
-- Impordi skeemi linki määramine
update a
Set x.modify ('declare namespace xs="http://www.w3.org/2001/XMLSchema";
insert as first
into (xs:schema)[1]')
from dbo.[_FIAS_SCHEMAS] a
-- Juure atribuudimääramine
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
-- Noode, mis on tabeli rida ja sellega seotud tabel
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
-- Väliannotatsioon skeemis
-- Kuna korraga saab modifitseerida ainult ühte noolt - tuleb kasutada kursorit
Declare @table nvarchar(4000)
Declare @column nvarchar(4000)
Declare cur CURSOR LOCAL FORWARD_ONLY
for
Select [table “” not found /]
, [column]
from dbo.[_FIAS]
Ava [kuva]
FETCH NEXT FROM cur into @table, @column
KUNI @@FETCH_STATUS = 0
ALUSTA
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
LÕPETA
CLOSE cur;
DEALLOCATE cur;
6. Ja lõpuks, eksportime xsd skeemid kettale edasiseks kasutamiseks:
-- Skeemide väljavõtt
-- Pange tähele, et tee väljaviidud skeemideni on kõvaketaste kaudu määratud!
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)
Kõik! :-)))
Siin on kogu päring, mis genereerib tabelid, nende kirjeldused, muudab skeeme ja ekspordib need kettale:
KASUTA [FIAS2]
go
kui OBJECT_ID('dbo.[_FIAS]') ei ole null
drop table dbo.[_FIAS]
go
kui OBJECT_ID('dbo._FIAS_SCHEMAS') ei ole null
drop table dbo.[_FIAS_SCHEMAS]
go
Declare @schema sysname = N'dbo'
Declare @sql nvarchar(max)
Loo tabel dbo.[_FIAS_SCHEMAS] (x xml, [table “” not found /]
sysname)
inserdi 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 /]
järjekorras 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]
kuhu dbo.[_FIAS]
from dbo.[_FIAS_SCHEMAS] a
Cross apply a.x.nodes('//xs:attribute') t(n)
Cross apply
(values -- mõned väljad kasutavad mitu korda, seega teeme nii :)
(
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])
-- Vaatame tulemust
Select * from dbo.[_FIAS]
-- Loome koodi tabelite loomiseks ja käivitame selle
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 /]
Telli N eest
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)
-- Loome tabelite ja väljade jaoks annotatsiooni
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)
-- Impordi skemade viitamine
update a
Set x.modify ('declare namespace xs="http://www.w3.org/2001/XMLSchema";
insert
as first
into (xs:schema)[1]')
from dbo.[_FIAS_SCHEMAS] a
-- Juure atribuut defineerimine
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
-- Noode määramine, mis on tabeli rida ja sellega seotud tabel
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
-- Väli annotatsioon skeemides
-- Kuna korraga saab modifitseerida ainult ühte noode - tuleb kasutada kursori
Declare @table nvarchar(4000)
Declare @column nvarchar(4000)
Declare cur CURSOR LOCAL FORWARD_ONLY
for
Select [table “” not found /]
, [column]
from dbo.[_FIAS]
Ava [kuva]
FETCH NEXT FROM cur into @table, @column
KUNI @@FETCH_STATUS = 0
ALUSTA
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;
-- Skeemide väljund
-- Pange tähele, et exportimise teed on sisse kodeeritud!
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)
Nüüd on jäänud vaid laadimisprotseduuri kutsumine iga xml faili jaoks vastava skeemiga (ennast lahti pakitud failid asuvad kaustas e:tmp, skeemid — me eksportisime c:filesFIAS):
KASUTA FIAS2
MINE
Declare @sql nvarchar(max)
kui OBJECT_ID('tempdb..#t') ei ole null
drop table #t
Loo tabel #t ([output] sysname NULL)
insert into #t
exec xp_cmdshell 'dir e:tmp /B'
;With load_data as
(
Vali
'_' + t.x.value('(a[2])', 'nvarchar(255)') [faili nimi]
,t.x.value('(a[3])', 'date') [fias_date]
,t.x.value('(a[4])', 'uniqueidentifier') [fias_guid]
,a.[output] [faili_nimi]
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)
Kus [output] nagu 'AS[_]%.xml'
)
Vali @sql =
(Vali
N';exec [dbo].[spXMLBulkLoad] ''e:tmp' + a.[faili_nimi] + ''', ''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)
Haaa…
Noh, nüüd on lõpuks kõik koos.
Siiski, tahan teile, austatud kolleegid, üht asja öelda!
Kõik see töötab lihtsalt hirmus aeglaselt!
Kuid ma ei räägi tabelite ja skeemide loomisest, muidugi. Räägin laadimisest.
Testkeskkonnas kestis laadimine peaaegu 5 tundi (sic!!!). Ja see on veel ilma tabelite indekseerimiseta.
Sellega oli sisend-väljundisüsteemi laadimine 3 Mb/s tasemel ja kasutusel oli vaid paar tuuma.
Aadressobjektide laadimine toimus kiirusel kuni 3000 kirjet sekundis, majade laadimine – kiirusel kuni 8000 sekundis. Ning neid on kokku 60 miljonit.
Millele see on seotud – ei oska öelda, tuleb veel koodi nuputada ja ilmselt ka VM seadistust.
Pange tähele, et laadimine toimub partiidena. Ja siis eeldatakse, et clusterindeksid luuakse iga AOID-i järgi.
Kuna need on GUID-id, on parem seda teha just nii, sest kui luua clusterindeksid ENNE laadimist – siis tuleb välja tabel, mis on kusagil 50% ulatuses fragmenteeritud. Ja indeksid on ka parem luua pärast laadimist, kuna indeksitesse sisestamine muudab laadimise veel aeglasemaks.
Seetõttu algavad mu tabelite nimed alljoonega (_). Eeldati, et laadisin kõigepealt andmed nendesse, seejärel taastan sihttabelite indeksid ja seejärel rahulikult teen Alter table switch.
Pange tähele ka mitte täiesti optimaalseid andmetüüpe FIAS tabeli väljade jaoks.
Näiteks int kasutamine seal, kus piisab tinyint'ist, või nvarchar väljad, kus on ette nähtud ainult numbriliste väärtuste, nagu piirkood või OKATO, salvestamiseks.
Noh, skeemides :-(.
Kuid miski ei takista teid pärast metandmete tabeli loomist, [dbo].[_FIAS], seal kätega nokitsemast ja häälestamist tegemast, ning seejärel uute laadimisjaotiste loomist põhjal õiges vormis metandmetest.
Kui sellist aeglast laadimist siiski elimineerida ei õnnestu, tuleb ilmselt naasta dbf laadimise variandi juurde ja lõpuks nokitsemisega tegeleda väikestes dbf-des. Ja kirjutada veel üks artikkel.
dbf laaditi 8 niidi kaudu normaalselt ühe tunni ja natuke pealt, ja veel umbes tund kulus eraldi tabelite ühendamiseks sihtmärkideks ning indeksite ehitamiseks.
… Noh, või lõpuks tõmmata käed välja jžžž… eee… afedronist ja lõpuks teha normaalne andme tasandi rakendus ning laadida andmeid nagu kõik normaalsed inimesed, läbi SSIS.
Aga see on juba hoopis teine lugu.
→
Teemakohased lingid:
→
Pilt koerast — mitte minu 🙂
Allikas: habr.com
