子站点利用Socket取得状态标志,如果此时Server下发夜审指令,状态字更改;程序中所有数据库连接提示规定时间内断开,然后以读取方式开启连接...以此。

解决方案 »

  1.   

    同意楼上的状态标志
    但不同意断开连接。
    在你的系统全局参数中定义一个
    gblnIsChecking
    在你夜审的时候gblnIsCheck=true
    夜审结束时候gblnIsCechk=false
    在所有的新增修改删除操作动作之前先判断gblnIsCechk
    如果true提示只能查询,不能新增修改删除。
      

  2.   

    ALTER DATABASE
    在数据库中添加或删除文件和文件组。也可用于更改文件和文件组的属性,例如更改文件的名称和大小。ALTER DATABASE 提供了更改数据库名称、文件组名称以及数据文件和日志文件的逻辑名称的能力。ALTER DATABASE 支持数据库选项的设置。在早期版本的 Microsoft® SQL Server™ 中,这些选项可以通过 sp_dboption 存储过程来设置。在此次发布的版本中,SQL Server 继续支持 sp_dboption存储过程,但在未来版本中可能不再支持。可使用 DATABASEPROPERTYEX 函数检索数据库选项的当前设置。语法
    ALTER DATABASE database 
    { ADD FILE < filespec > [ ,...n ] [ TO FILEGROUP filegroup_name ] 
    | ADD LOG FILE < filespec > [ ,...n ] 
    | REMOVE FILE logical_file_name 
    | ADD FILEGROUP filegroup_name 
    | REMOVE FILEGROUP filegroup_name 
    | MODIFY FILE < filespec > 
    | MODIFY NAME = new_dbname 
    | MODIFY FILEGROUP filegroup_name {filegroup_property | NAME = new_filegroup_name }
    | SET < optionspec > [ ,...n ] [ WITH < termination > ] 
    | COLLATE < collation_name > 
    }< filespec > ::=( NAME = logical_file_name
        [ , NEWNAME = new_logical_name ]
        [ , FILENAME = 'os_file_name' ]
        [ , SIZE = size ]
        [ , MAXSIZE = { max_size | UNLIMITED } ]
        [ , FILEGROWTH = growth_increment ] ) < optionspec > ::=    <state_option>
        | < cursor_option >
        | < auto_option >
        | < sql_option >
        | < recovery_option >    < state_option > ::=
            { SINGLE_USER | RESTRICTED_USER | MULTI_USER }
            | { OFFLINE | ONLINE }
            | { READ_ONLY | READ_WRITE }     < termination > ::=
            ROLLBACK AFTER integer [ SECONDS ]
            | ROLLBACK IMMEDIATE
            | NO_WAIT    < cursor_option > ::=
            CURSOR_CLOSE_ON_COMMIT { ON | OFF }
            | CURSOR_DEFAULT { LOCAL | GLOBAL }     < auto_option > ::=
            AUTO_CLOSE { ON | OFF }
            | AUTO_CREATE_STATISTICS { ON | OFF }
            | AUTO_SHRINK { ON | OFF }
            | AUTO_UPDATE_STATISTICS { ON | OFF }     < sql_option > ::=
            ANSI_NULL_DEFAULT { ON | OFF }
            | ANSI_NULLS { ON | OFF }
            | ANSI_PADDING { ON | OFF }
            | ANSI_WARNINGS { ON | OFF }
            | ARITHABORT { ON | OFF }
            | CONCAT_NULL_YIELDS_NULL { ON | OFF }
            | NUMERIC_ROUNDABORT { ON | OFF }
            | QUOTED_IDENTIFIER { ON | OFF }
            | RECURSIVE_TRIGGERS { ON | OFF }    < recovery_option > ::=
            RECOVERY { FULL | BULK_LOGGED | SIMPLE }
            | TORN_PAGE_DETECTION { ON | OFF }<state_option>
    控制用户对数据库的访问,数据库是否处于联机状态,以及是否允许写操作。 READ_ONLY | READ_WRITE 
    指定数据库是否处于只读模式。在只读模式下,用户可以从数据库中读取数据,但不能修改数据。当指定 READ_ONLY 时,数据库不能处于使用状态。master 数据库是一个例外,当该数据库设置为 READ_ONLY 时,只有系统管理员才能使用该数据库。READ_WRITE 使数据库返回到读写操作状态。 
      

  3.   

    谢谢大家!我先想到的是夜审时以独占的方式打开数据库。但这样好象只能在DAO的联接方式下可以,并且其他站点也不能查看数据库了。看了大家的意见,我觉得建立一个作为标志的表是不错的办法,只是这样的话在每次其它站点向数据库增加数据的时候都要先访问这个表,会不会对整个系统的速度有较大的影响?
      

  4.   

    同意CSDNM的观点,我上面提到的作法与这一观点是一致的。
    之所以不想对数据库进行特殊封锁,是因为进行统计查询时,数据库本身的锁机制会进行数据封锁处理。
      

  5.   

    我不同意CSDNM的观点,因为你还不清楚这个系统的工作原理。这个系统中有一个营业日的问题。营业日是在夜审后才改的。它跟系统时间不同,也就是说它不等于系统时间,所以必顺在统计的时候用其它站点封锁,才能做出正确的统计。