簡單的問題,我無法弄清楚(不是SQL專家......對不起):我想對sp_who2的結果集做一個選擇。我怎麼能夠?SQL:如何判斷存儲過程的結果集?
for ex。從選擇SPID [導致sp_who2設置]
簡單的問題,我無法弄清楚(不是SQL專家......對不起):我想對sp_who2的結果集做一個選擇。我怎麼能夠?SQL:如何判斷存儲過程的結果集?
for ex。從選擇SPID [導致sp_who2設置]
從here(啓用,但需要特設分佈式查詢)
SELECT SPID,
STATUS,
Login,
HostName,
BlkBy,
DBName,
Command,
CPUTime,
DiskIO,
LastBatch,
ProgramName
INTO #MyHead
FROM OPENROWSET('SQLOLEDB',
'Server=yourserverinstancehere;Trusted_Connection=Yes;Database=Master',
'Set FmtOnly OFF; EXEC dbo.sp_Who2')
SELECT * FROM #MyHead
或者從here(但是你可能需要調整取決於SQL Server的版本列你正在)
CREATE TABLE #sp_who3
(
SPID INT,
Status VARCHAR(32) NULL,
Login SYSNAME NULL,
HostName SYSNAME NULL,
BlkBy SYSNAME NULL,
DBName SYSNAME NULL,
Command VARCHAR(32) NULL,
CPUTime INT NULL,
DiskIO INT NULL,
LastBatch VARCHAR(14) NULL,
ProgramName VARCHAR(32) NULL,
SPID2 INT
)
INSERT #sp_who3 EXEC sp_who2
根據你使用的SQL Server版本,你可能會更好地使用動態管理視圖。
您必須將結果插入到表,臨時表或表變量中。
CREATE TABLE #sp_who2 (etc...)
INSERT INTO #sp_who2 EXECUTE sp_who2
SELECT * FROM #sp_who2 WHERE whatever...
另一個竅門是using OPENROWSET
使用回送這樣的查詢
SELECT SPID, Status, Login, HostName, BlkBy,DBName,
Command, CPUTime, DiskIO, LastBatch, ProgramName
INTO #TempSpWho2
FROM OPENROWSET ('SQLOLEDB','Server=(local);TRUSTED_CONNECTION=YES;',
'set fmtonly off exec master.dbo.sp_who2')
SELECT * FROM #TempSpWho2
也Store The Output Of A Stored Procedure In A Table Without Creating A Table
請參閱SQL Server 2005及以上版本使用sys.dm_exec_sessions和sys.dm_exec_requests視圖