USE [NEWSTAT] GO /****** Object: StoredProcedure [dbo].[pSEARCH_BY_BASE] Script Date: 09.11.16 16:58:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pSEARCH_BY_BASE]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[pSEARCH_BY_BASE] /*Число поисковых запросов по БД ЭК за период с D1 по D2*/ (@D1Ф datetime =NULL, @D2Ф datetime =NULL, @ONLY_MNUФ bit=1 -- параметр-заглушка для единообразия фильтра ) AS DECLARE @S int --Возможность чтения несогласованных изменений для ускорения SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SET @S=dbo.fSIG() IF ((@D1Ф IS NULL) AND (@D2Ф IS NULL)) SELECT NULL AS DB,NULL AS NREQ ELSE SELECT DB, COUNT(ID) AS NREQ FROM dbo.SEARCHLOG WHERE ( (SIG = @S) OR (@S = 0)) AND ( ((NOT ((@D1Ф IS NULL) AND (@D2Ф IS NULL)) AND (DateSearch BETWEEN @D1Ф AND @D2Ф) )) OR ((@D1Ф IS NOT NULL) AND (@D2Ф IS NULL) AND (DateSearch >= @D1Ф)) OR ((@D1Ф IS NULL) AND (@D2Ф IS NOT NULL) AND (DateSearch <= @D2Ф) OR (DateSearch IS NULL)) ) GROUP BY DB ORDER BY DB RETURN ' END GO /****** Object: StoredProcedure [dbo].[pSEARCH_BY_DIC] Script Date: 09.11.16 16:58:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pSEARCH_BY_DIC]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N' CREATE PROCEDURE [dbo].[pSEARCH_BY_DIC] /*Число поисковых запросов по словарям БД ЭК за период с D1 по D2*/ (@D1Ф datetime =NULL, @D2Ф datetime =NULL, @ONLY_MNUФ bit=1) --@ONLY_MNU=1 только словари из справочника --с одной сторны, уменьшает мусор --с другой — могут выпасть какие-то поиски AS DECLARE @S int --Возможность чтения несогласованных изменений для ускорения SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED SET @S=dbo.fSIG() IF ((@D1Ф IS NULL) AND (@D2Ф IS NULL)) SELECT NULL AS DB,NULL AS NREQ ELSE IF @ONLY_MNUФ=1 SELECT CASE WHEN dbo.SEARCHTERMS.DESCR IS NULL THEN W.DIC ELSE dbo.SEARCHTERMS.DESCR END AS DB, NREQ FROM (SELECT CASE WHEN DIC IS NULL THEN ''_P'' ELSE DIC END AS DIC, COUNT(dbo.SEARCHLOG.ID) AS NREQ FROM dbo.SEARCHLOG LEFT OUTER JOIN dbo.SEARCHLOGSub ON dbo.SEARCHLOG.ID=dbo.SEARCHLOGSub.ID WHERE ( (SIG = @S) OR (@S = 0)) AND ( ((NOT ((@D1Ф IS NULL) AND (@D2Ф IS NULL)) AND (DateSearch BETWEEN @D1Ф AND @D2Ф) )) OR ((@D1Ф IS NOT NULL) AND (@D2Ф IS NULL) AND (DateSearch >= @D1Ф)) OR ((@D1Ф IS NULL) AND (@D2Ф IS NOT NULL) AND (DateSearch <= @D2Ф) OR (DateSearch IS NULL)) ) GROUP BY CASE WHEN DIC IS NULL THEN ''_P'' ELSE DIC END ) AS W INNER JOIN dbo.SEARCHTERMS ON W.DIC=dbo.SEARCHTERMS.TERM ORDER BY dbo.SEARCHTERMS.DESCR ELSE SELECT CASE WHEN dbo.SEARCHTERMS.DESCR IS NULL THEN W.DIC ELSE dbo.SEARCHTERMS.DESCR END AS DB, NREQ FROM (SELECT CASE WHEN DIC IS NULL THEN ''_P'' ELSE DIC END AS DIC, COUNT(dbo.SEARCHLOG.ID) AS NREQ FROM dbo.SEARCHLOG LEFT OUTER JOIN dbo.SEARCHLOGSub ON dbo.SEARCHLOG.ID=dbo.SEARCHLOGSub.ID WHERE ( (SIG = @S) OR (@S = 0)) AND ( ((NOT ((@D1Ф IS NULL) AND (@D2Ф IS NULL)) AND (DateSearch BETWEEN @D1Ф AND @D2Ф) )) OR ((@D1Ф IS NOT NULL) AND (@D2Ф IS NULL) AND (DateSearch >= @D1Ф)) OR ((@D1Ф IS NULL) AND (@D2Ф IS NOT NULL) AND (DateSearch <= @D2Ф) OR (DateSearch IS NULL)) ) GROUP BY CASE WHEN DIC IS NULL THEN ''_P'' ELSE DIC END ) AS W LEFT OUTER JOIN dbo.SEARCHTERMS ON W.DIC=dbo.SEARCHTERMS.TERM ORDER BY CASE WHEN dbo.SEARCHTERMS.DESCR IS NULL THEN W.DIC ELSE dbo.SEARCHTERMS.DESCR END RETURN ' END GO /****** Object: StoredProcedure [dbo].[pSEARCHLOG_WRITE] Script Date: 09.11.16 16:58:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[pSEARCHLOG_WRITE]') AND type in (N'P', N'PC')) BEGIN EXEC dbo.sp_executesql @statement = N'-- ============================================= -- Author: K.Linno -- Create date: 14.10.2016 -- Description: Запись данных от ИРБИС-ПРОКСИ -- по поисковым запросам АРМ Читатель -- в таблицу SEARCHLOG -- ============================================= CREATE PROCEDURE [dbo].[pSEARCHLOG_WRITE] (@Index int, @Moment datetime, @SIG int, @EndPoint varchar(50), @Username varchar(50), @IrbisDuration int, @ReturnCode int, @DB varchar(50), @SearchTerm varchar(4096), @ReqRec int, @FirstRecNum int, @SearchRecNum int) -- Порядковый номер транзакции -- Момент начала транзакции -- Адрес клиента. На самом деле: 127.0.0.1:63246 -- ПРЕОБРАЗУЕМ В IP-АДРЕС -- Логин пользователя -- Длительность обработки команды -- Код возврата -- База данных -- Поисковое выражение. Пример: "A="ВЕРАСЫ"\ИСПОЛН.\$"+"A="РУКИ ВВЕРХ"\ИСПОЛН.\$" -- Число запрашиваемых записей -- Номер первой возвращаемой записи -- Количество найденных AS BEGIN DECLARE @S varchar(4096) DECLARE @K int --Вхождение знака равенства DECLARE @T varchar(4096) DECLARE @M1 int, @M2 int DECLARE @DIC varchar(50), @TERM varchar(50) DECLARE @ID int SET NOCOUNT ON; INSERT INTO [dbo].[SEARCHLOG] ([Index] ,[Moment] ,[SIG] ,[DateSearch] ,[EndPoint] ,[Username] ,[IrbisDuration] ,[ReturnCode] ,[DB] ,[SearchTerm] ,[ReqRec] ,[FirstRecNum] ,[SearchRecNum]) VALUES (@Index ,@Moment ,@SIG ,CAST(@Moment as date) ,LEFT(@EndPoint,CHARINDEX('':'',@EndPoint)-1) ,@Username ,@IrbisDuration ,@ReturnCode ,@DB ,@SearchTerm ,@ReqRec ,@FirstRecNum ,@SearchRecNum) --Разбираем поисковый запрос, --чтобы поместить его в SEARCHLOGSub /* ("S=ПЕТР I (ИМПЕРАТОР РОССИЙСКИЙ ; 1672-1725)$") *("T=АМПИРV (VАМПИР)$"+"T=АМПИР В$") Словари: от = влево до ближ. " Поисковый термин: от = вправо до $ или " Это упрощенный вариант. */ SET @ID=IDENT_CURRENT(''dbo.SEARCHLOG'') SET @S=@SearchTerm SET @K=CHARINDEX(''='',@S) BEGIN TRY --"K=ФАНТАСТИКА" WHILE @K>0 BEGIN SET @M1=CHARINDEX(''"'',@S) --Словарь между M1 и K SET @DIC=SUBSTRING(@S,@M1+1, @K-@M1) SET @DIC=REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE (@DIC,'')'',''''),''('',''''),''$'',''''),''+'',''''),''*'',''''),''"'',''''),''/'','''') SET @S=SUBSTRING(@S,@K+1,LEN(@S)-@K) --M2-положение завершающего символа поискового запроса по одному термину SET @M2=CASE WHEN (CHARINDEX(''$'',@S)< CHARINDEX(''"'',@S)) AND (CHARINDEX(''$'',@S)>0) THEN CHARINDEX(''$'',@S) ELSE CHARINDEX(''"'',@S) END IF @M2>1 SET @TERM=LEFT(@S,@M2-1) ELSE SET @TERM=@S --Вставка в SEARCHLOGSub INSERT INTO dbo.SEARCHLOGSub(ID,DIC, SearchTerm) VALUES(@ID,@DIC,@TERM) IF @TERM<>@S BEGIN SET @S=SUBSTRING(@S,@M2+1,LEN(@S)-@M2-1) SET @K=CHARINDEX(''='',@S) END ELSE SET @K=-1 END END TRY BEGIN CATCH RETURN END CATCH RETURN END ' END GO /****** Object: Table [dbo].[SEARCHLOG] Script Date: 09.11.16 16:58:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SEARCHLOG]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[SEARCHLOG]( [ID] [int] IDENTITY(1,1) NOT NULL, [Index] [int] NOT NULL, [Moment] [datetime] NOT NULL, [SIG] [int] NOT NULL, [DateSearch] [date] NULL, [EndPoint] [varchar](50) NULL, [Username] [varchar](50) NULL, [IrbisDuration] [int] NULL, [ReturnCode] [int] NULL, [DB] [varchar](50) NULL, [SearchTerm] [varchar](4096) NULL, [ReqRec] [int] NULL, [FirstRecNum] [int] NULL, [SearchRecNum] [int] NULL, CONSTRAINT [PK_SEARCHLOG] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_PADDING OFF GO /****** Object: Table [dbo].[SEARCHLOGSub] Script Date: 09.11.16 16:58:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SEARCHLOGSub]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[SEARCHLOGSub]( [ID] [int] NOT NULL, [IDS] [int] IDENTITY(1,1) NOT NULL, [DIC] [varchar](50) NULL, [SearchTerm] [varchar](1024) NULL, CONSTRAINT [PK_SEARHLOGSub] PRIMARY KEY CLUSTERED ( [ID] ASC, [IDS] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_PADDING OFF GO /****** Object: Table [dbo].[SEARCHTERMS] Script Date: 09.11.16 16:58:48 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET ANSI_PADDING ON GO IF NOT EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[SEARCHTERMS]') AND type in (N'U')) BEGIN CREATE TABLE [dbo].[SEARCHTERMS]( [TERM] [varchar](50) NOT NULL, [DESCR] [varchar](100) NOT NULL, CONSTRAINT [PK_SEARCHTERMS] PRIMARY KEY CLUSTERED ( [TERM] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] END GO SET ANSI_PADDING OFF GO /****** Object: Index [IX_SEARCHLOG] Script Date: 09.11.16 16:58:48 ******/ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[SEARCHLOG]') AND name = N'IX_SEARCHLOG') CREATE NONCLUSTERED INDEX [IX_SEARCHLOG] ON [dbo].[SEARCHLOG] ( [SIG] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO SET ANSI_PADDING ON GO /****** Object: Index [IX_SEARCHLOG_1] Script Date: 09.11.16 16:58:48 ******/ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[SEARCHLOG]') AND name = N'IX_SEARCHLOG_1') CREATE NONCLUSTERED INDEX [IX_SEARCHLOG_1] ON [dbo].[SEARCHLOG] ( [DB] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO /****** Object: Index [IX_SEARCHLOG_2] Script Date: 09.11.16 16:58:48 ******/ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[SEARCHLOG]') AND name = N'IX_SEARCHLOG_2') CREATE NONCLUSTERED INDEX [IX_SEARCHLOG_2] ON [dbo].[SEARCHLOG] ( [DateSearch] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO SET ANSI_PADDING ON GO /****** Object: Index [IX_SEARCHLOGSub] Script Date: 09.11.16 16:58:48 ******/ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[SEARCHLOGSub]') AND name = N'IX_SEARCHLOGSub') CREATE NONCLUSTERED INDEX [IX_SEARCHLOGSub] ON [dbo].[SEARCHLOGSub] ( [DIC] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO /****** Object: Index [IX_SEARHLOGSub] Script Date: 09.11.16 16:58:48 ******/ IF NOT EXISTS (SELECT * FROM sys.indexes WHERE object_id = OBJECT_ID(N'[dbo].[SEARCHLOGSub]') AND name = N'IX_SEARHLOGSub') CREATE NONCLUSTERED INDEX [IX_SEARHLOGSub] ON [dbo].[SEARCHLOGSub] ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] GO IF NOT EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_SEARHLOGSub_SEARCHLOG]') AND parent_object_id = OBJECT_ID(N'[dbo].[SEARCHLOGSub]')) ALTER TABLE [dbo].[SEARCHLOGSub] WITH CHECK ADD CONSTRAINT [FK_SEARHLOGSub_SEARCHLOG] FOREIGN KEY([ID]) REFERENCES [dbo].[SEARCHLOG] ([ID]) ON DELETE CASCADE GO IF EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_SEARHLOGSub_SEARCHLOG]') AND parent_object_id = OBJECT_ID(N'[dbo].[SEARCHLOGSub]')) ALTER TABLE [dbo].[SEARCHLOGSub] CHECK CONSTRAINT [FK_SEARHLOGSub_SEARCHLOG] GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'Index')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Порядковый номер транзакции' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'Index' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'Moment')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Момент начала транзакции' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'Moment' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'SIG')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Код библиотечной системы' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'SIG' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'EndPoint')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Адрес клиента' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'EndPoint' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'Username')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Логин пользователя' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'Username' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'IrbisDuration')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Длительность обработки команды' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'IrbisDuration' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'ReturnCode')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Код возврата' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'ReturnCode' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'DB')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'База данных' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'DB' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'SearchTerm')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Поисковое выражение' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'SearchTerm' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'ReqRec')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Число запрашиваемых записей' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'ReqRec' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'FirstRecNum')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Номер первой возвращаемой записи' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'FirstRecNum' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOG', N'COLUMN',N'SearchRecNum')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Количество найденных' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOG', @level2type=N'COLUMN',@level2name=N'SearchRecNum' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOGSub', N'COLUMN',N'DIC')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Словарь, по которому идет поиск, например K=' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOGSub', @level2type=N'COLUMN',@level2name=N'DIC' GO IF NOT EXISTS (SELECT * FROM ::fn_listextendedproperty(N'MS_Description' , N'SCHEMA',N'dbo', N'TABLE',N'SEARCHLOGSub', N'COLUMN',N'SearchTerm')) EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'Поисковый термин без $' , @level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'SEARCHLOGSub', @level2type=N'COLUMN',@level2name=N'SearchTerm' GO