0
SQL 로그인 성공 및 실패를 추적하고이를 쿼리 목적으로 SQL 테이블에 저장하려고합니다. 작동하는 쿼리를 작성했지만 내 문제는, 로그인 이름을 도메인에 포함되어있을 때, 그것은 잘 작동하지만 도메인이 포함되어 있지 않으면 추가 텍스트를 추가합니다. 누군가가 내 코드를 검토하고 로그인 이름 뒤에 여분을 제거하는 방법을 알 수 있기를 바랬습니다.SQL 오류 로그의 텍스트에서 로그인 정보 추출
가 반환 무엇의 예 : 도메인 \ BBruning
도메인 \ SQLServ
도메인 \있는 BSmith
도메인 \ JHarris '.
scgWeb '. 이유 : F
cpadmin '입니다. 이유 :
CREATE TABLE [dbo].[#TmpErrorLog]
([LogDate] DATETIME NULL,
[ProcessInfo] VARCHAR(20) NULL,
[Text] VARCHAR(MAX) NULL);
CREATE TABLE [dbo].[#TmpErrorLog2]
([LogDate] DATETIME NULL,
[ProcessInfo] VARCHAR(20) NULL,
[Text] VARCHAR(MAX) NULL,
[LoginAttempt] VARCHAR(20) NULL,
[ServerName] VARCHAR(20) NULL);
INSERT INTO #TmpErrorLog ([LogDate], [ProcessInfo], [Text])
EXEC [master].[dbo].[xp_readerrorlog] 0 ;
INSERT INTO #TmpErrorLog2 ([LogDate], [ProcessInfo], [Text], [LoginAttempt])
Select LogDate, ProcessInfo, Text, SUBSTRING(Text,0,16) as LoginAttempt
From #TmpErrorLog
Where LogDate > GETDATE() - 120 and
[ProcessInfo] = 'Logon' and
Text like '%Login%' and text not like '%untrusted%'
INSERT INTO [MyTABLE] ([LogDate], [LoginAttempt], [LoginUser], [ServerName], [Log_date_key])
Select
LogDate,
Case LoginAttempt When 'Login succeeded' Then 'Successful' ELSE 'Failed' End as LoginAttempt,
SUBSTRING(SUBSTRING(Text, CHARINDEX('''', Text,1), CHARINDEX('''', Text, 0) - 4),2,50) as LoginUser, @@SERVERNAME, (Convert(INT, LogDate, 112))
From #TmpErrorLog2
Where LogDate Not In(Select LogDate From [MyTable])
Drop Table #TmpErrorLog
Drop Table #TmpErrorLog2
롭, 너는 남자 야. 그 일은 훌륭했습니다. 도와 주셔서 감사합니다!! –