引自:dawugui
使用 WAITFOR 
WAITFOR 语句挂起执行连接,直到发生下列两种情况之一: 已超过指定的时间间隔。 
到达一天中指定的时间。 
WAITFOR 语句由下面两个子句之一指定: DELAY 关键字后为 amount_of_time_to_pass,是在完成 WAITFOR 语句之前等待的时间。完成 WAITFOR 语句之前等待的时间最多为 24 小时。 
TIME 关键字后为 time_to_execute,它指定 WAITFOR 语句完成的时间。 
下面示例使用 DELAY 关键字指定在执行 SELECT 语句之前等待两秒: WAITFOR DELAY '00:00:02' 
SELECT EmployeeID FROM Northwind.dbo.Employees 下面示例使用 TIME 关键字指定在 10 P.M 以后对指定数据库 pubs 进行检查,以确保所有页的分配和使用正确: USE pubs 
BEGIN 
  WAITFOR TIME '22:00' 
  DBCC CHECKALLOC 
END WAITFOR 语句的缺点是与应用程序的连接一直挂起直到 WAITFOR 完成为止。当应用程序或存储过程的处理必须挂起相对有限的时间时最好使用WAITFOR。在一天中的特定时间执行某种操作较好的方法是使用 SQL Server 代理或 SQL-DMO 来调度任务。

解决方案 »

  1.   

    DBCC CHECKALLOC (Transact-SQL)
    Checks the consistency of disk space allocation structures for a specified database.
    DBCC CHECKALLOC 
    [
            ( 'database_name' | database_id | 0 
          [ , NOINDEX 
          | , { REPAIR_ALLOW_DATA_LOSS | REPAIR_FAST | REPAIR_REBUILD } ]
            )
        [ WITH 
            { 
              [ ALL_ERRORMSGS ]
              [ , NO_INFOMSGS ] 
              [ , TABLOCK ] 
              [ , ESTIMATEONLY ] 
            }
        ]
      

  2.   

    获取了连接conn,如何获取这个连接下数据库中所有表的名字?
    --所有的表名
    select name from sysobjects where xtype='U' order by name
    --或从schema信息里读也可以.
    --所有的表名
    select table_name from information_schema.tables order by table_name