Listing 1: The sp_get_sqlserver_service_account Stored Procedure USE master GO IF (object_id('[dbo].[sp_get_sqlserver_service_account]') IS NOT NULL AND objectproperty(object_id('[dbo].[sp_get_sqlserver_service_account]'), N'IsProcedure') = 1) DROP PROC [dbo].[sp_get_sqlserver_service_account] GO CREATE PROC [dbo].[sp_get_sqlserver_service_account] AS -- ============================================= -- Variables -- ============================================= DECLARE @rc int, @machinename nvarchar(128), @instancename nvarchar(128), @profile nvarchar(128), @regkey nvarchar(256), @accnt nvarchar(128) IF NOT ((charindex(N'7.00', @@version, 0) > 0) OR (charindex(N'8.00', @@version, 0) > 0)) BEGIN RAISERROR(N'sp_get_sqlserver_service_account only support SQL Server 7.0 and 2000', 16, 1) WITH log, nowait END IF (charindex(N'7.00', @@version, 0) > 0) BEGIN SELECT @instancename = NULL END IF (charindex(N'8.00', @@version, 0) > 0) BEGIN SELECT @machinename = CONVERT(nvarchar(128), serverproperty('MachineName')), @instancename = CONVERT(nvarchar(128), serverproperty('InstanceName')) END -- ============================================= -- Check if not running SQL Server as LocalSystem -- @rc 0 = LocalSystem, 1 = running under account -- ============================================= EXEC @rc = master.dbo.xp_MSLocalSystem @machinename, @instancename IF (@rc = 0) BEGIN PRINT 'SQL Server is running under the LocalSystem account' RETURN END -- ============================================= -- Get account name running SQL Server -- ============================================= IF (@instancename IS NULL) BEGIN SELECT @regkey = N'SYSTEM\CurrentControlSet\Services\MSSQLServer' END ELSE BEGIN SELECT @regkey = N'SYSTEM\CurrentControlSet\Services\MSSQL$' + @instancename END EXEC master.dbo.xp_regread N'HKEY_LOCAL_MACHINE', @regkey, N'ObjectName', @accnt OUTPUT, N'no_output' PRINT 'SQL Server is running under account ' + @accnt RETURN GO EXEC sp_get_sqlserver_service_account