modified above code
SET NOCOUNT ON
IF (OBJECT_ID ('tempdb..#RegResult')) IS NOT NULL
DROP TABLE #RegResult
CREATE TABLE #RegResult (ResultValue NVARCHAR(4))
IF (OBJECT_ID ('tempdb..#ServicesServiceStatus')) IS NOT NULL
DROP TABLE #ServicesServiceStatus
CREATE TABLE #ServicesServiceStatus(RowID INT IDENTITY(1,1),ServerName NVARCHAR(128),ServiceName NVARCHAR(128),ServiceStatus VARCHAR(128),StatusDateTime DATETIME DEFAULT (GETDATE()),PhysicalSrverName NVARCHAR(128))
IF (OBJECT_ID ('tempdb..#Services')) IS NOT NULL
DROP TABLE #Services
CREATE TABLE #Services(RowID INT IDENTITY(1,1),ServiceName NVARCHAR(128),DefaultInstance NVARCHAR(128),NamedInstance NVARCHAR(128))
INSERT INTO #Services VALUES ('MS SQL Server Service','MSSQLSERVER','MSSQL'),('SQL Server Agent Service','SQLSERVERAGENT','SQLAgent'),
('Analysis Services','MSSQLServerOLAPService','MSOLAP'),('Full Text Search Service','MSFTESQL','MSSQLFDLauncher'),
('Reporting Service','ReportServer','ReportServer'),('SQL Browser Service - Instance Independent','SQLBrowser','SQLBrowser')
,('SSIS','MsDtsServer110','MsDtsServer110') /* change 'MsDtsServer110' to 'MsDtsServer100' for SQL 2008 and accordingly*/
DECLARE @ChkInstanceName NVARCHAR(128) /*Stores SQL Instance Name*/,@ChkSrvName NVARCHAR(128) /*Stores Server Name*/
,@REGKEY NVARCHAR(128) /*Stores Registry Key information*/
,@i INT=1 ,@Service NVARCHAR(128)
SET @ChkSrvName = CAST(SERVERPROPERTY('INSTANCENAME') AS VARCHAR(128))
/* ---------------------------------- SQL Server Service Section ----------------------------------------------*/
WHILE (@i<=(SELECT MAX(RowID) FROM #Services))
BEGIN
IF (@ChkSrvName IS NULL OR (SELECT Count(*) FROM #Services WHERE ServiceName in ('SQL Browser Service - Instance Independent','SSIS')AND RowID=@i)>0)
SELECT @Service= DefaultInstance FROM #Services WHERE RowID=@i
ELSE
SELECT @Service= NamedInstance+'$'+CAST(SERVERPROPERTY('INSTANCENAME') AS VARCHAR(128)) FROM #Services WHERE RowID=@i
SET @REGKEY = 'System\CurrentControlSet\Services\'+@Service
INSERT #RegResult ( ResultValue ) EXEC MASTER.sys.xp_regread @rootkey='HKEY_LOCAL_MACHINE', @key= @REGKEY
--PRINT @REGKEY
IF (SELECT ResultValue FROM #RegResult) = 1
BEGIN
INSERT INTO #ServicesServiceStatus (ServiceStatus) /*Detecting staus of SQL Sever service*/
EXEC xp_servicecontrol N'QUERYSTATE',@Service
END
ELSE
BEGIN
INSERT INTO #ServicesServiceStatus (ServiceStatus) VALUES ('NOT INSTALLED')
END
UPDATE #ServicesServiceStatus SET ServiceName = (SELECT ServiceName FROM #Services WHERE RowID=@i),ServerName=@@SERVERNAME , PhysicalSrverName=(Select CAST(ServerProperty('ComputerNamePhysicalNetBIOS')AS VARCHAR(128))) WHERE RowID = @@identity
TRUNCATE TABLE #RegResult
SET @i=@i+1;
END
/* -------------------------------------------------------------------------------------------------------------*/
SELECT *FROM #ServicesServiceStatus