不是,.我是在服务器里,打开企业管理器运行sql查询分析器.也打了sp4补丁

解决方案 »

  1.   

    重新组织一下索引吧
    Use DBCC SHOWCONTIG and DBCC INDEXDEFRAG to defragment the indexes in a database
    This example shows a simple way to defragment all indexes in a database that is fragmented above a declared threshold./*Perform a 'USE <database name>' to select the database in which to run the script.*/
    -- Declare variables
    SET NOCOUNT ON
    DECLARE @tablename VARCHAR (128)
    DECLARE @execstr   VARCHAR (255)
    DECLARE @objectid  INT
    DECLARE @indexid   INT
    DECLARE @frag      DECIMAL
    DECLARE @maxfrag   DECIMAL-- Decide on the maximum fragmentation to allow
    SELECT @maxfrag = 30.0-- Declare cursor
    DECLARE tables CURSOR FOR
       SELECT TABLE_NAME
       FROM INFORMATION_SCHEMA.TABLES
       WHERE TABLE_TYPE = 'BASE TABLE'-- Create the table
    CREATE TABLE #fraglist (
       ObjectName CHAR (255),
       ObjectId INT,
       IndexName CHAR (255),
       IndexId INT,
       Lvl INT,
       CountPages INT,
       CountRows INT,
       MinRecSize INT,
       MaxRecSize INT,
       AvgRecSize INT,
       ForRecCount INT,
       Extents INT,
       ExtentSwitches INT,
       AvgFreeBytes INT,
       AvgPageDensity INT,
       ScanDensity DECIMAL,
       BestCount INT,
       ActualCount INT,
       LogicalFrag DECIMAL,
       ExtentFrag DECIMAL)-- Open the cursor
    OPEN tables-- Loop through all the tables in the database
    FETCH NEXT
       FROM tables
       INTO @tablenameWHILE @@FETCH_STATUS = 0
    BEGIN
    -- Do the showcontig of all indexes of the table
       INSERT INTO #fraglist 
       EXEC ('DBCC SHOWCONTIG (''' + @tablename + ''') 
          WITH FAST, TABLERESULTS, ALL_INDEXES, NO_INFOMSGS')
       FETCH NEXT
          FROM tables
          INTO @tablename
    END-- Close and deallocate the cursor
    CLOSE tables
    DEALLOCATE tables-- Declare cursor for list of indexes to be defragged
    DECLARE indexes CURSOR FOR
       SELECT ObjectName, ObjectId, IndexId, LogicalFrag
       FROM #fraglist
       WHERE LogicalFrag >= @maxfrag
          AND INDEXPROPERTY (ObjectId, IndexName, 'IndexDepth') > 0-- Open the cursor
    OPEN indexes-- loop through the indexes
    FETCH NEXT
       FROM indexes
       INTO @tablename, @objectid, @indexid, @fragWHILE @@FETCH_STATUS = 0
    BEGIN
       PRINT 'Executing DBCC INDEXDEFRAG (0, ' + RTRIM(@tablename) + ',
          ' + RTRIM(@indexid) + ') - fragmentation currently '
           + RTRIM(CONVERT(varchar(15),@frag)) + '%'
       SELECT @execstr = 'DBCC INDEXDEFRAG (0, ' + RTRIM(@objectid) + ',
           ' + RTRIM(@indexid) + ')'
       EXEC (@execstr)   FETCH NEXT
          FROM indexes
          INTO @tablename, @objectid, @indexid, @frag
    END-- Close and deallocate the cursor
    CLOSE indexes
    DEALLOCATE indexes-- Delete the temporary table
    DROP TABLE #fraglist
    GO
      

  2.   

    服务器: 消息 156,级别 15,状态 1,行 1
    在关键字 'DBCC' 附近有语法错误。
      

  3.   

    執行查詢時,用sp_lock 看有鎖死沒有.