【问题标题】:SQL Server Notification Disable - Free up sysdercv tableSQL Server 通知禁用 - 释放 sysdercv 表
【发布时间】:2013-05-31 10:19:25
【问题描述】:

启用服务器代理 sql 通知后。我的 sql 内存变为 2 GB。

如何终止队列? 如何释放一个通知表?

下面的查询“sysdercv”表变大了。

select OBJECT_NAME(p.object_id),
 reservedpages = sum(a.total_pages),
    usedpages = sum(a.used_pages),
    pages = sum(
            CASE
                -- XML-Index and FT-Index internal tables are not considered "data", but is part of "index_size"
                When it.internal_type IN (202,204,211,212,213,214,215,216) Then 0
                When a.type <> 1 Then a.used_pages
                When p.index_id < 2 Then a.data_pages
                Else 0
            END
        )
from sys.partitions p join sys.allocation_units a on p.partition_id = a.container_id
    left join sys.internal_tables it on p.object_id = it.object_id
GROUP BY p.object_id
with rollup

如何释放并终止所有服务代理通知?我也想禁用通知。但是要先杀掉桌子上面放出来。

【问题讨论】:

    标签: sql-server memory-management database-administration


    【解决方案1】:

    终于把对话整理好了。

    SET NOCOUNT OFF;
    DECLARE @handle UniqueIdentifier
    DECLARE @count INT =0
    
    DECLARE handleCursor CURSOR
    FOR 
    SELECT TOP 1000 [conversation_handle]
    FROM sys.conversation_endpoints with(nolock)
    WHERE [state] = 'co'
    AND far_service = 'ChangeNotifications' 
    AND security_timestamp < '2013-01-01'
    
    DECLARE @Rows INT
    SELECT @Rows = COUNT(*) FROM sys.conversation_endpoints with(nolock)
    WHERE [state] = 'co'
    AND far_service = 'ChangeNotifications'
    
    WHILE @ROWS>0
    BEGIN
        OPEN handleCursor
    
        FETCH NEXT FROM handleCursor 
        INTO @handle
    
        BEGIN TRANSACTION
    
        WHILE @@FETCH_STATUS = 0
        BEGIN
    
            END CONVERSATION @handle WITH CLEANUP
    
            FETCH NEXT FROM handleCursor INTO @handle
            SET @count= @count+1
        END
    
        COMMIT TRANSACTION
        print @count
    
        CLOSE handleCursor;
    
        IF @count > 100000
        BEGIN
            BREAK;
        END
    
        SELECT @Rows = COUNT(*) FROM sys.conversation_endpoints with(nolock)
        WHERE [state] = 'co'
        AND far_service = 'ChangeNotifications'
    END
    DEALLOCATE handleCursor;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-25
      • 1970-01-01
      • 1970-01-01
      • 2018-05-18
      • 1970-01-01
      • 2010-10-27
      • 1970-01-01
      • 2016-12-24
      相关资源
      最近更新 更多