sql-server - 所有这些 SQL Server session 来自哪里?

标签 sql-server session ssms

在我的开发机器上启动 SSMS (2008 R2) 后,我使用

启动它
"D:\Program Files\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\Ssms.exe" -nosplash -S localhost -d testdata

什么也不做,
在事件监视器中我观察到一些 session (TestData 是我的默认数据库)

alt text

session 51 的详细信息:

select @@spid;
select SERVERPROPERTY('ProductLevel');

session 52 的详细信息:

DBCC INPUTBUFFER(52)  

session 53 的详细信息:

SELECT
CAST(serverproperty(N'Servername') AS sysname) AS [Name],
'Server[@Name=' + quotename(CAST(
        serverproperty(N'Servername')
       AS sysname),'''') + ']' + '/JobServer' AS [Urn]
ORDER BY
[Name] ASC

session 54 的详细信息:

SET NOCOUNT ON;

DECLARE @previous_collection_time datetime;
DECLARE @previous_request_count bigint;
DECLARE @current_collection_time datetime;
DECLARE @current_request_count bigint;
DECLARE @batch_requests_per_sec bigint;
DECLARE @interval_sec bigint;

-- Get the previous snapshot's time and batch request count
SELECT TOP 1 @previous_collection_time = collection_time, @previous_request_count = request_count 
FROM #am_request_count
ORDER BY collection_time DESC;

-- Get the current total time and batch request count
SET @current_collection_time = GETDATE();
SELECT @current_request_count = cntr_value 
FROM sys.sysperfinfo
WHERE counter_name = 'Batch Requests/sec' COLLATE Latin1_General_BIN;

SET @interval_sec = 
    -- Avoid divide-by-zero
    CASE
        WHEN DATEDIFF (second, @previous_collection_time, @current_collection_time) = 0 THEN 1
        ELSE DATEDIFF (second, @previous_collection_time, @current_collection_time)
    END;

-- Calc the Batch Requests/sec rate for the just-completed time interval. 
SET @batch_requests_per_sec = (@current_request_count - @previous_request_count) / @interval_sec;

-- Save off current batch count
INSERT INTO #am_request_count (collection_time, request_count) 
VALUES (@current_collection_time, @current_request_count);

-- Return the batch requests/sec rate for the just-completed time interval. 
SELECT ISNULL (@batch_requests_per_sec, 0) AS batch_requests_per_sec;

-- Get rid of all but the most recent snapshot's data
DELETE FROM #am_request_count WHERE collection_time < @current_collection_time; 

如果在没有选项的情况下启动 SSMS(通过 Windows 身份验证连接到无名实例),那么我没有与上面对应的 session 显示为 52

我做了什么才能启动所有这些 session ?
我只是不记得之前在开发 SQL Server 2008 R2 中所做的所有事情...

更新:
我将相同的选项恢复到 SSMS.exe (-nosplash -S localhost -d testdata),重新启动 SSMS,现在我有与 session 51 详细信息相对应的不同详细信息:

DECLARE @edition sysname; 
SET @edition = cast(SERVERPROPERTY(N'EDITION') as sysname); 
select case when @edition = N'SQL Azure' then 1 else 0 end as 'IsCloud' 

为什么我之前没有呢?

最佳答案

这些 session 用于将数据拉入事件监视器。

关于sql-server - 所有这些 SQL Server session 来自哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4021428/

相关文章:

c# - 使用 DbGeography 的 MultiPolygon 和 Polygon 的交集

sql-server - 如何调试缓慢的 NHibernate Select 查询?

c# - 在 C# 与 SSMS 中使用 SqlDataReader.Read() 进行缓慢的 SQL 数据检索

SQL:比较列以获取精确匹配的集合

sql - 查询在 ssms 中有效,但在 ssrs 中无效

sql - 从 SQL Server 2005 中的日期时间获取月份和年份

sql - 如何在 SQL Server 企业管理器中创建表的副本?

javax.websocket.Session - getUserProperties() 返回哪个 map 实现?

java - 如何确保用户仍然使用 Java Web 登录

javascript - 每个 session 仅提交一次 php 表单