asked on
USE [dBase1]
GO
Select MAX(DateOfLastUpdate) AS lastUpdate1
from Table1
Select MAX(DateOfLastUpdate) AS lastUpdate2
from Table2
Select MAX(DateOfLastUpdate) as lastUpdate3
from Table3
after that, i write down the results in a sheet and then create the report on excel sheet with database's name. is there a way, i can run the script just one time, not to select different names of databases and generate the report of all the databases at one time.use DB3
create table dbo.tempresult (lastUpdate1 datetime,lastUpdate2 datetime,lastUpdate3 datetime)
exec master..sp_msforeachdb 'if (''?''not in (''master'',''msdb'',''model'',''tempdb'')
begin insert into DB3.dbo.tempresult select ''?'' DBName, (Select MAX(DateOfLastUpdate)from ?.dbo.Table1 ) AS lastUpdate1, (Select MAX(DateOfLastUpdate) from ?.dbo.Table2 ) AS lastUpdate2, (Select MAX(DateOfLastUpdate) from ?.dbo.Table3 ) as lastUpdate3'
selecty * from DB3.dbo.tempresult
select 'db1' DBName, (Select MAX(DateOfLastUpdate)from db1.dbo.Table1 ) AS lastUpdate1, (Select MAX(DateOfLastUpdate) from db1.dbo.Table2 ) AS lastUpdate2, (Select MAX(DateOfLastUpdate) from db1.dbo.Table3 ) as lastUpdate3
union aLL
select 'db2' DBName, (Select MAX(DateOfLastUpdate)from db2.dbo.Table1 ) AS lastUpdate1, (Select MAX(DateOfLastUpdate) from db2.dbo.Table2 ) AS lastUpdate2, (Select MAX(DateOfLastUpdate) from db2.dbo.Table3 ) as lastUpdate3
union aLL
select 'db3' DBName, (Select MAX(DateOfLastUpdate)from db3.dbo.Table1 ) AS lastUpdate1, (Select MAX(DateOfLastUpdate) from db3.dbo.Table2 ) AS lastUpdate2, (Select MAX(DateOfLastUpdate) from db3.dbo.Table3 ) as lastUpdate3
ASKER
ASKER
use DB3
create table dbo.tempresult (lastUpdate1 datetime,lastUpdate2 datetime,lastUpdate3 datetime)
exec master..sp_msforeachdb 'if (''?''not in (''master'',''msdb'',''model'',''tempdb'')
begin insert into DB3.dbo.tempresult select ''?'' DBName, (Select MAX(DateOfLastUpdate)from ?.dbo.Table1 ) AS lastUpdate1, (Select MAX(DateOfLastUpdate) from ?.dbo.Table2 ) AS lastUpdate2, (Select MAX(DateOfLastUpdate) from ?.dbo.Table3 ) as lastUpdate3'
select * from DB3.dbo.tempresult
use DB3
create table dbo.tempresult (lastUpdate1 datetime,lastUpdate2 datetime,lastUpdate3 datetime)
DECLARE @SQLCMD VARCHAR(4000)
@SQLCMD = 'BEGIN TRY '
+ ' if (''?''not in (''master'',''msdb'',''model'',''tempdb'') '
+ ' begin '
+ ' insert into DB3.dbo.tempresult select ''?'' DBName, '
+ ' (Select MAX(DateOfLastUpdate)from ?.dbo.Table1 ) AS lastUpdate1 '
+ ' ,(Select MAX(DateOfLastUpdate) from ?.dbo.Table2 ) AS lastUpdate2 '
+ ' ,(Select MAX(DateOfLastUpdate) from ?.dbo.Table3 ) as lastUpdate3 '
+ ' END'
+ ' END TRY '
+ ' BEGIN CATCH '
+ ' INSERT into DB3.dbo.tempresult select ''?'' DBName, -1,-1,-1 '
+ ' END CATCH '
exec master..sp_msforeachdb @sqlCmd
select * from DB3.dbo.tempresult
ASKER
ASKER
EXEC sp_MSforeachdb 'IF ''?'' NOT IN (''tempDB'',''model'',''msdb'')
BEGIN
SELECT name,physical_name,state,size
FROM ?.sys.database_files
WHERE name LIKE ''?%''
END'
create table dbo.tempresult
(
name VARCHAR(50),
physical_name VARCHAR(500),
state BIT,
size INT
)
INSERT INTO dbo.tempresult
EXEC sp_MSforeachdb 'IF ''?'' NOT IN (''tempDB'',''model'',''msdb'')
BEGIN
SELECT DBName,Suvery,PoC,NNotes
FROM ?.sys.database_files
END'
EXEC sp_MSforeachdb 'IF ''?'' NOT IN (''tempDB'',''model'',''msdb'')
BEGIN
select ''?'' DBName,
(Select MAX(DateOfLastUpdate) from DSS_Survey ) AS Suvery,
(Select MAX(DateOfLastUpdate) from PoC ) AS PoC,
(Select MAX(DateOfLastUpdate) from NotesOfNurses ) as NNotes
END'
Create table dbo.tempresult
(
DBName VARCHAR(500),
Suvery datetime,
PoC datetime,
NNotes datetime
)
INSERT INTO dbo.tempresult
EXEC sp_MSforeachdb 'IF ''?'' NOT IN (''tempDB'',''model'',''msdb'')
BEGIN
SELECT DBName,Suvery,PoC,NNotes
FROM ?.sys.database_files
END'
ASKER
EXEC sp_MSforeachdb 'IF ''?'' NOT IN
(''tempDB'',''model'',''msdb'',''master'',''ReportServer'',''ReportServerTempDB'',''ClientsInfo'',''wheelsDemo'',''DB3'')
BEGIN
select ''?'' DBName,
(Select MAX(DateOfLastUpdate) from ?.dbo.DSS_Survey ) AS Suvery,
(Select MAX(DateOfLastUpdate) from ?.dbo.PoC ) AS PoC,
(Select MAX(DateOfLastUpdate) from ?.dbo.NotesOfNurses ) as NNotes
END'
Create table dbo.tempresult
(
DBName VARCHAR(500),
Suvery datetime,
PoC datetime,
NNotes datetime
)
Msg 207, Level 16, State 1, Line 5
Invalid column name 'DBName'.
Msg 207, Level 16, State 1, Line 5
Invalid column name 'Suvery'.
Msg 207, Level 16, State 1, Line 5
Invalid column name 'PoC'.
Msg 207, Level 16, State 1, Line 5
Invalid column name 'NNotes'.
EXEC sp_MSforeachdb 'IF ''?'' NOT IN
(''tempDB'',''model'',''msdb'',''master'',''ReportServer'',''ReportServerTempDB'',''ClientsInfo'',''wheelsDemo'',''DB3'')
BEGIN
INSERT INTO dbo.tempresult
SELECT DBName,Suvery,PoC,NNotes
FROM ?.sys.database_files
END'
select * from dbo.tempresult
ASKER
EXEC sp_MSforeachdb 'IF ''?'' NOT IN
(''tempDB'',''model'',''msdb'',''master'',''ReportServer'',''ReportServerTempDB'',''ClientsInfo'',''Paradise''
,''TynetPayroll'',''dbMActivity'')
BEGIN
select ''?'' DBName,
(Select TOP 1 providername from ?.dbo.provider) as CompanyName,
(Select MAX(CONVERT(VARCHAR(10),DateOfCreationOfRecord,101)) from ?.dbo.provider ) AS SetupDate,
(Select MAX(CONVERT(VARCHAR(10),DateOfLastUpdate,101)) from ?.dbo.DSS_Survey ) AS Suvery,
(Select MAX(CONVERT(VARCHAR(10),DateOfLastUpdate,101)) from ?.dbo.PoC ) AS PoC,
(Select MAX(CONVERT(VARCHAR(10),DateOfLastUpdate,101)) from ?.dbo.NotesOfNurses ) as NNotes,
(Select MAX(CONVERT(VARCHAR(10),DateOfLastUpdate,101)) from ?.dbo.RAP ) AS InstBilling,
(Select MAX(CONVERT(VARCHAR(10),DateOfLastUpdate,101)) from ?.dbo.RAPHMO ) AS HMOBilling,
(SELECT Count (*) AS CurrentPatients FROM ?.dbo.PatientList
WHERE PatientDischarged <> "Discharged" OR PatientDischarged IS NULL) as CurrentPatients
END'
Create table tempActivity
(
DBName VARCHAR(500),
CompanyName VARCHAR(500),
SetupDate date,
Suvery date,
PoC date,
NNotes date,
InstBilling date,
HMOBilling date,
CurrentPatients int
)
INSERT INTO tempActivity
EXEC sp_MSforeachdb 'IF ''?'' NOT IN
(''tempDB'',''model'',''msdb'',''master'',''ReportServer'',''ReportServerTempDB'',''ClientsInfo'',''Paradise''
,''TynetPayroll'',''dbMActivity'')
BEGIN
select ''?'' DBName,
(Select TOP 1 providername from ?.dbo.provider) as CompanyName,
(Select MAX(CONVERT(VARCHAR(10),DateOfCreationOfRecord,101)) from ?.dbo.provider ) AS SetupDate,
(Select MAX(CONVERT(VARCHAR(10),DateOfLastUpdate,101)) from ?.dbo.DSS_Survey ) AS Suvery,
(Select MAX(CONVERT(VARCHAR(10),DateOfLastUpdate,101)) from ?.dbo.PoC ) AS PoC,
(Select MAX(CONVERT(VARCHAR(10),DateOfLastUpdate,101)) from ?.dbo.NotesOfNurses ) as NNotes,
(Select MAX(CONVERT(VARCHAR(10),DateOfLastUpdate,101)) from ?.dbo.RAP ) AS InstBilling,
(Select MAX(CONVERT(VARCHAR(10),DateOfLastUpdate,101)) from ?.dbo.RAPHMO ) AS HMOBilling,
(SELECT Count (*) AS CurrentPatients FROM ?.dbo.PatientList
WHERE PatientDischarged <> "Discharged" OR PatientDischarged IS NULL) as CurrentPatients
END'
Microsoft SQL Server is a suite of relational database management system (RDBMS) products providing multi-user database access functionality.SQL Server is available in multiple versions, typically identified by release year, and versions are subdivided into editions to distinguish between product functionality. Component services include integration (SSIS), reporting (SSRS), analysis (SSAS), data quality, master data, T-SQL and performance tuning.
TRUSTED BY
Maybe you could setup a temp table and insert the results of each of those selects into the temp table with the database name as the first column.
You'd need to create an output table with 2 columns, for db_name and your date.
Then create your stored procedure to populate the output table:
insert into outputtable
Select DB_NAME(), MAX(DateOfLastUpdate) AS lastUpdate1
from Table1
insert into outputtable
Select DB_NAME(), MAX(DateOfLastUpdate) AS lastUpdate2
from Table2
insert into outputtable
Select DB_NAME(), MAX(DateOfLastUpdate) as lastUpdate3
from Table3
Then in the calling procedure, truncate the table at the beginning and call sp_msforeachdb
EXECUTE master.sys.sp_MSforeachdb 'USE [?]; EXEC my_reporting_proc'
Then at the end of the calling proc, do what you want with outputtable for reporting your output.