活動監視器說明
http://technet.microsoft.com/zh-tw/library/ms178520%28v=sql.90%29.aspx
說明
=======================================================================
INF: 主機名稱資料行空白的 SPID 小於在 SQL Profiler sp_who 51
http://support.microsoft.com/kb/272696/zh-tw
當您使用 Microsoft SQL Server 2000 Profiler 工具 sp_who,或者您使用 ' SELECT * FROM SYSPROCESSES ' 小於 51 伺服器處理序識別碼 (SPID) 值時,擷取來自伺服器的事件,或顯示目前的連線資訊,主機名稱欄位是空白。主機名稱 是連線到 SQL Server 伺服器用戶端的主機或電腦名稱。如果用戶端應用程式提供主機名稱,則會擴展此資料行。
SQL Server 2000 會保留 SPID 值從 1 到 50 供內部使用,而 51 或更高的SPID 值代表使用者工作階段。這種行為是預期行為,因為主機名稱會顯示僅供使用者連線。
=======================================================================
SQL管理\主機名稱
http://social.technet.microsoft.com/Forums/zh-HK/sqlservermanagementzhcht/thread/6c345f23-5fd1-4ad4-812b-b97119c3d374
如果 SPID < 51 的話,不顯示主機名稱是正常的
如果是透過應用程式而非 Enterprise Manager 進去的話,當應用程式本身就沒有提供(應該說沒特別設定)主機名稱時,自然就不會顯示出來。可參考此篇 MSDN 文件中,關鍵字 Workstation ID 的說明。
SQL Server 2000 沒法從 MAC 位址對應出 IP 位址,可使用 arp -a 的 DOS 指令,如下所示即為一例:
/* ALL SPIDS to IP 2005-01-04: Daniel_Janik@yahoo.com, Dallas, Tx */ DECLARE @SPID as int, @MAXSPID as int, @MAC as varchar(12), @MACDisplay as varchar(18), @IP as varchar(15), @CMD as varchar(100) SET @MAXSPID = (SELECT MAX(SPID) FROM master..sysprocesses) SET @SPID = (SELECT MIN(SPID) FROM master..sysprocesses where status != 'background' and spid > 7) CREATE TABLE #temp2 (OUTPUT varchar(255)) WHILE @SPID < @MAXSPID BEGIN -- SPID to MAC SELECT @MAC = NET_ADDRESS FROM master..sysprocesses WHERE SPID = @SPID -- MAC to IP CREATE TABLE #temp (OUTPUT varchar(255)) SET NOCOUNT ON INSERT INTO #temp EXEC master..xp_cmdshell 'arp -a' SELECT @MACDisplay = LEFT(@MAC, 2) + '-' + SUBSTRING(@MAC, 3, 2) + '-' + SUBSTRING(@MAC, 5, 2) + '-' + SUBSTRING(@MAC, 7, 2) + '-' + SUBSTRING(@MAC, 9, 2) + '-' + SUBSTRING(@MAC, 11, 2) SELECT @IP = SUBSTRING(output, 3, 15) FROM #temp WHERE output LIKE '%' + @MACDisplay + '%' -- Resolve the IP SET @CMD = 'master..xp_cmdshell "ping -a ' + @IP + '"' INSERT INTO #temp2 EXEC (@CMD) DROP TABLE #temp SET @SPID = (SELECT MIN(SPID) FROM master..sysprocesses where status != 'background' and spid > @SPID) END delete from #temp2 where output not like 'pinging%' delete from #temp2 where output is null select distinct * from #temp2 DROP TABLE #temp2
沒有留言:
張貼留言