Skip to content Skip to sidebar Skip to footer

Run Query For Each Element In Array Or List

I'm trying to monitor all connections that hit our databases. In order to do so I created this query: SELECT @@ServerName AS [ServerName] ,NAME AS DatabaseName

Solution 1:

To solve the syntax error you have to create an dynamic query using a cursor:

DECLARE@ServerNamevarchar(50), @DynamicSQL NVARCHAR(MAX)
DECLARE@myTableVariableTABLE (id INT, ServerName varchar(50))
insertinto@myTableVariablevalues(1,'[TESLABSQL01T]'),(2,'[TESLABSQL02T]')
select*from@myTableVariableDeclare VarCursor cursorforSelect ServerName from@myTableVariableOpen VarCursor
FETCH NEXT FROM VarCursor INTO@ServerName
WHILE @@FETCH_STATUS =0BEGINSET@DynamicSQL='SELECT @@ServerName AS [ServerName]
                 ,NAME AS DatabaseName 
                 ,COUNT(STATUS) AS [NumberOfConnections]
                 ,GETDATE() AS [TimeStamp]
                 ,hostname
                 ,program_name
                 ,loginame
    FROM '+@ServerName+'.master.sys.databases sd
    LEFT JOIN '+@ServerName+'.master.sys.sysprocesses sp ON sd.database_id = sp.dbid
    WHERE database_id NOT BETWEEN 1 AND 4
    GROUP BY NAME,hostname ,program_name ,loginame'EXEC (@DynamicSQL)

    FETCH NEXT FROM VarCursor INTO@ServerNameENDCLOSE VarCursor
DEALLOCATE VarCursor

But for this query you have to ensure that you have privileges in all your servers or that you have linked servers in your principal SQL Server engine

Post a Comment for "Run Query For Each Element In Array Or List"