if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP0アクセスログログインID一覧]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[SP0アクセスログログインID一覧] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP0アクセスログ一覧]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[SP0アクセスログ一覧] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP0アクセスログ更新]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[SP0アクセスログ更新] GO if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[SP0アクセスログ集計]') and OBJECTPROPERTY(id, N'IsProcedure') = 1) drop procedure [dbo].[SP0アクセスログ集計] GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE PROCEDURE dbo.SP0アクセスログログインID一覧 @システムCD varchar(12) AS SELECT ログインID FROM TAログ --WHERE (@システムCD = '' OR システムCD = @システムCD) --TAログ.システムCDの「先頭」がTA区分.区分と合致すればOK(sj・ec・caなどの先頭のみで判定する) WHERE (@システムCD = '' OR システムCD LIKE @システムCD + '%') --@システムCD=''の場合は左の式が評価され全取得となる --NULLは集計する必要が無いので除外する AND ログインID <> "" AND ログインID IS NOT NULL GROUP BY ログインID ORDER BY ログインID GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE PROCEDURE dbo.SP0アクセスログ一覧 @システムCD varchar(12) , @ログインID varchar(12) , @集計開始日 datetime , @集計終了日 datetime AS SELECT TAログ.*, ユーザー種別.名称 AS ユーザー区分, システム種別.名称 AS システム名称 FROM TAログ INNER JOIN TA区分 ユーザー種別 ON ユーザー種別.分類 = 'ユーザー区分' AND ユーザー種別.区分 = TAログ.接続成否 INNER JOIN TA区分 システム種別 ON システム種別.分類 = 'システムCD' -- AND システム種別.区分 = TAログ.システムCD AND システム種別.区分 = LEFT(TAログ.システムCD, LEN(システム種別.区分)) --TAログ.システムCDの「先頭」がTA区分.区分と合致すればOK(sj・ec・caなどの先頭のみで判定する) --WHERE (@システムCD = '' OR TAログ.システムCD = @システムCD) --@システムCD=''の場合は左の式が評価され全取得となる WHERE (@システムCD = '' OR TAログ.システムCD LIKE @システムCD + '%') --@システムCD=''の場合は左の式が評価され全取得となる AND (@ログインID = '' OR TAログ.ログインID = @ログインID) --@ログインID=''の場合は左の式が評価され全取得となる AND TAログ.ログイン試行日時 >= @集計開始日 AND TAログ.ログイン試行日時 <= @集計終了日 ORDER BY TAログ.ログイン試行日時 DESC GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE PROCEDURE dbo.SP0アクセスログ更新 @システムCD varchar(12) , @ログインID varchar(12) , @ログインパスワード varchar(12) , @リモートアドレス varchar(30) , @接続成否 varchar(2) AS declare @保存日数 int declare @Seq int declare @ログイン試行日時 datetime begin transaction SELECT @ログイン試行日時 = GETDATE() if exists(SELECT 表示順 FROM TA区分 WHERE 分類 = 'システム情報' AND 区分 = 'AccessLogTerms' AND 名称 = 'ログ保存日数') begin SELECT @保存日数 = (SELECT 表示順 FROM TA区分 WHERE 分類 = 'システム情報' AND 区分 = 'AccessLogTerms' AND 名称 = 'ログ保存日数') end else begin SELECT @保存日数 = 376 end if exists(SELECT Seq FROM TAログ WHERE システムCD = @システムCD AND ログイン試行日時 = @ログイン試行日時) begin SELECT @Seq = (SELECT MAX(Seq) FROM TAログ WHERE システムCD = @システムCD AND ログイン試行日時 = @ログイン試行日時) SELECT @Seq = @Seq + 1 end else begin SELECT @Seq = 1 end INSERT INTO TAログ (システムCD, Seq, ログイン試行日時, ログインID, ログインパスワード, リモートアドレス, 接続成否) VALUES (@システムCD, @Seq, @ログイン試行日時, @ログインID, @ログインパスワード, @リモートアドレス, @接続成否) if @@error <> 0 begin rollback transaction select -1 return end DELETE FROM TAログ WHERE ログイン試行日時 < @ログイン試行日時 - @保存日数 if @@error <> 0 begin rollback transaction select -1 return end commit transaction GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS OFF GO CREATE PROCEDURE dbo.SP0アクセスログ集計 @システムCD varchar(12) , @集計区分 varchar(1) , @集計開始日 datetime , @集計終了日 datetime AS if(@集計区分 > 2) --ユーザー区分 begin SELECT TA区分.名称 AS 集計名称, COUNT(TA区分.名称) AS 集計回数 FROM TA区分 INNER JOIN TAログ ON TA区分.区分 = TAログ.接続成否 -- WHERE (@システムCD = '' OR TAログ.システムCD = @システムCD) --@システムCD=''の場合は左の式が評価され全取得となる WHERE (@システムCD = '' OR TAログ.システムCD LIKE @システムCD + '%') --TAログ.システムCDの「先頭」が合致すれば取得(sj・ec・caなどの先頭のみで判定する) AND TAログ.ログイン試行日時 >= @集計開始日 AND TAログ.ログイン試行日時 <= @集計終了日 AND TAログ.接続成否 <> '' AND TAログ.接続成否 IS NOT NULL AND TA区分.分類 = 'ユーザー区分' GROUP BY TA区分.名称 ORDER BY 集計回数 DESC, 集計名称 end if(@集計区分 = 2) --接続元IPアドレス begin SELECT TAログ.リモートアドレス AS 集計名称, COUNT(TAログ.リモートアドレス) AS 集計回数 FROM TAログ -- WHERE (@システムCD = '' OR TAログ.システムCD = @システムCD) --@システムCD=''の場合は左の式が評価され全取得となる WHERE (@システムCD = '' OR TAログ.システムCD LIKE @システムCD + '%') --TAログ.システムCDの「先頭」が合致すれば取得(sj・ec・caなどの先頭のみで判定する) AND ログイン試行日時 >= @集計開始日 AND ログイン試行日時 <= @集計終了日 AND リモートアドレス <> '' AND リモートアドレス IS NOT NULL -- AND 接続成否 <> '0' -- AND 接続成否 <> '' -- AND 接続成否 IS NOT NULL GROUP BY TAログ.リモートアドレス ORDER BY 集計回数 DESC, 集計名称 end if(@集計区分 < 2) --ログインID begin SELECT TAログ.ログインID AS 集計名称, COUNT(TAログ.ログインID) AS 集計回数 FROM TAログ -- WHERE (@システムCD = '' OR TAログ.システムCD = @システムCD) --@システムCD=''の場合は左の式が評価され全取得となる WHERE (@システムCD = '' OR TAログ.システムCD LIKE @システムCD + '%') --TAログ.システムCDの「先頭」が合致すれば取得(sj・ec・caなどの先頭のみで判定する) AND ログイン試行日時 >= @集計開始日 AND ログイン試行日時 <= @集計終了日 AND ログインID <> '' AND ログインID IS NOT NULL AND 接続成否 <> '0' AND 接続成否 <> '' AND 接続成否 IS NOT NULL GROUP BY TAログ.ログインID ORDER BY 集計回数 DESC, 集計名称 end GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO