Advertisements
This script will check the new database and user creation and notify an alert, if it is tempdb then service restarted.
Table:
use dbadata go go drop table DBA_NEW_OBJECT_LOGIN_LIST go CREATE TABLE [dbo].[DBA_NEW_OBJECT_LOGIN_LIST]( [SERVER_NAME] [varchar](100), [NAME] [sysname] NOT NULL, [CREATE_DATE] [datetime] NULL, [TYPE] [varchar](10) NULL ) use dbadata_archive go drop table DBA_NEW_OBJECT_LOGIN_LIST go CREATE TABLE [dbo].[DBA_NEW_OBJECT_LOGIN_LIST]( [SERVER_NAME] [varchar](100), [NAME] [sysname] NOT NULL, [CREATE_DATE] [datetime] NULL, [TYPE] [varchar](10) NULL, [Upload_date] [varchar](10) NULL )
SP:
USE [DBAdata]
GO
/****** Object: StoredProcedure [dbo].[USP_DBA_GETNEW_DB_AND_LOGIN] Script Date: 9/27/2013 7:44:10 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
use dbadata
go
go
drop table DBA_NEW_OBJECT_LOGIN_LIST
go
CREATE TABLE [dbo].[DBA_NEW_OBJECT_LOGIN_LIST](
[SERVER_NAME] [varchar](100),
[NAME] [sysname] NOT NULL,
[CREATE_DATE] [datetime] NULL,
[TYPE] [varchar](10) NULL
)
use dbadata_archive
go
drop table DBA_NEW_OBJECT_LOGIN_LIST
go
CREATE TABLE [dbo].[DBA_NEW_OBJECT_LOGIN_LIST](
[SERVER_NAME] [varchar](100),
[NAME] [sysname] NOT NULL,
[CREATE_DATE] [datetime] NULL,
[TYPE] [varchar](10) NULL,
[Upload_date] [varchar](10) NULL
)
*/
ALTER PROCEDURE [dbo].[USP_DBA_GETNEW_DB_AND_LOGIN]
AS BEGIN
SET NOCOUNT ON
TRUNCATE TABLE DBADATA.DBO.DBA_NEW_OBJECT_LOGIN_LIST
DECLARE @SERVERNAME VARCHAR(200)
DECLARE @DESC VARCHAR(200)
--** PUT LOCAL SERVER FIRST.
--select @@servername
INSERT INTO DBADATA.DBO.DBA_NEW_OBJECT_LOGIN_LIST
SELECT @@servername as servername,NAME,CRDATE,'DATABASE' FROM MASTER.DBO.SYSDATABASES
WHERE CRDATE >= GETDATE()-1
INSERT INTO DBADATA.DBO.DBA_NEW_OBJECT_LOGIN_LIST
SELECT @@servername,LOGINNAME,CREATEDATE,'LOGIN'FROM MASTER.DBO.SYSLOGINS
WHERE CREATEDATE >=GETDATE()-1
PRINT @@SERVERNAME +' COMPLETED.'
DECLARE ALLNEW_DB_LOGIN CURSOR
FOR
SELECT SERVERNAME,[DESCRIPTION] FROM DBADATA.DBO.DBA_ALL_SERVERS where SVR_status ='running'
OPEN ALLNEW_DB_LOGIN
FETCH NEXT FROM ALLNEW_DB_LOGIN INTO @SERVERNAME,@DESC
WHILE @@FETCH_STATUS=0
BEGIN
BEGIN TRY
EXEC('INSERT INTO DBADATA.DBO.DBA_NEW_OBJECT_LOGIN_LIST
SELECT '''+@DESC+''',NAME,CRDATE,''DATABASE'' FROM ['+@SERVERNAME+'].MASTER.DBO.SYSDATABASES
WHERE CRDATE >= GETDATE()-1')
EXEC('INSERT INTO DBADATA.DBO.DBA_NEW_OBJECT_LOGIN_LIST
SELECT '''+@DESC+''',LOGINNAME,CREATEDATE,''LOGIN'' FROM ['+@SERVERNAME+'].MASTER.DBO.SYSLOGINS
WHERE CREATEDATE >=GETDATE()-1')
--PRINT 'SERVER ' +@SERVERNAME+' COMPLETED.'
end try
BEGIN CATCH
--SELECT @SERVER_NAME,ERROR_NUMBER() AS ErrorNumber,ERROR_MESSAGE() AS ErrorMessage;
insert into tbl_Error_handling
SELECT @DESC,'NEW_DB',[Error_Line] = ERROR_LINE(),[Error_Number] = ERROR_NUMBER(),
[Error_Severity] = ERROR_SEVERITY(),[Error_State] = ERROR_STATE(),
[Error_Message] = ERROR_MESSAGE(),GETDATE()
PRINT 'SERVER ['+@SERVERNAME+']is not COMPLETED.'
END CATCH
FETCH NEXT FROM ALLNEW_DB_LOGIN INTO @SERVERNAME,@DESC
END
CLOSE ALLNEW_DB_LOGIN
DEALLOCATE ALLNEW_DB_LOGIN
----------------------------------------------------
-- May be its time to send the report to my DBA
IF EXISTS(
SELECT 1 FROM [DBADATA].[DBO].[DBA_NEW_OBJECT_LOGIN_LIST]
WHERE CREATE_DATE >=GETDATE()-1
)
BEGIN
DECLARE @SERVER_NAME SYSNAME
DECLARE @NAME SYSNAME
DECLARE @CREATE_DATE DATETIME
DECLARE @TYPE VARCHAR(10)
DECLARE NEWDB_LOGIN_CUR CURSOR FOR
SELECT SERVER_NAME,NAME,TYPE,CREATE_DATE
FROM DBADATA.DBO.[DBA_NEW_OBJECT_LOGIN_LIST] WHERE CREATE_DATE >=GETDATE()-1
OPEN NEWDB_LOGIN_CUR
FETCH NEXT FROM NEWDB_LOGIN_CUR
INTO @SERVER_NAME,@NAME,@TYPE,@CREATE_DATE
DECLARE @BODY1 VARCHAR(max)
--#ECE5B6
SET @BODY1= '<font size=2 color=BLUE face=''verdana''><B>FOLLOWING ARE NEWLY CREATED DB AND LOGINs:</b> </font>
<P>
<font size=1 color=BLUE face=''verdana''>
<Table border=1000 bgcolor=LIGHTBLUE cellpadding=1 style="color:BLUE;font-face:verdana;font-size:12px;">
<b> <tr bgcolor=BLUE align=center style="color:WHITE;font-weight:bold">
<td width=600 color=white>SERVERNAME</td>
<td width=200 color=white>NAME</td>
<td width=100 color=white>TYPE</td> </b>
<td width=200 color=white>CREATE DATE</td>
</tr>'
WHILE @@FETCH_STATUS=0
BEGIN
SET @BODY1= @BODY1 +'<tr>
<td>'+ISNULL(@SERVER_NAME,' ')+'</td>'+
'<td>'+ISNULL(@NAME,' ')+'</td>'+
'<td align=center>'+ISNULL(@TYPE,' ')+'</td>'+
'<td align=center>'+ISNULL(CONVERT(CHAR(50),@CREATE_DATE),' ')+'</td>'
FETCH NEXT FROM NEWDB_LOGIN_CUR
INTO @SERVER_NAME,@NAME,@TYPE,@CREATE_DATE
END
SET @BODY1=@BODY1+'</Table> </p>
<p>
<font style="color:#7E2217;font-face:verdana;font-size:9px;"> Generated on '
+convert(varchar(30),getdate(),100)+'. </BR>
This is an auto generated mail by DBA Team. If you receive this email by mistake please contact us.
</br>
© Property of DBA Team.
</font>'
CLOSE NEWDB_LOGIN_CUR
DEALLOCATE NEWDB_LOGIN_CUR
DECLARE @EMAILIDS VARCHAR(500)
SELECT @EMAILIDS=
COALESCE(@EMAILIDS+';','')+EMAIL_ADDRESS
FROM DBADATA.dbo.DBA_ALL_OPERATORS WHERE name ='muthu' and STATUS =1
DECLARE @EMAILIDS1 VARCHAR(500)
--SELECT @EMAILIDS1= 'Nageswararao.Kankipati@cna.com;Sadhana.Bandakunta@cna.com'
EXEC MSDB.DBO.SP_SEND_DBMAIL @RECIPIENTS=@EMAILIDS,
@SUBJECT = 'DBA: New DB and Objects creation',
@BODY = @BODY1,
@copy_recipients=@EMAILIDS1,
@BODY_FORMAT = 'HTML' ,@PROFILE_NAME='muthu';
--select @BODY1
-------------------------------------------------------
END
insert into DBADATA_Archive.DBO.DBA_NEW_OBJECT_LOGIN_LIST
select *,getdate() from DBADATA.DBO.DBA_NEW_OBJECT_LOGIN_LIST
END
Image:
