2005:
--在外围应用配置器中功能的应用里打开即席远程查询.
select *
from OpenDataSource('Microsoft.Jet.OLEDB.4.0','Data Source="D:\EXECL\0423.xls";Extended Properties="Excel 8.0";Persist Security Info=False')...[sheet2$]

解决方案 »

  1.   

    二、SQL SERVER 和EXCEL的数据导入导出
    1、在SQL SERVER里查询Excel数据:
    -- ======================================================
    SELECT * 
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。
    SELECT * 
    FROM OpenDataSource ( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    -------------------------------------------------------------------------------------------------2、将Excel的数据导入SQL server :
    -- ======================================================
    SELECT * into newtable
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\book1.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...[Sheet1$]
    实例:
    SELECT * into newtable
    FROM OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
      'Data Source="c:\Finance\account.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...xactions
    -------------------------------------------------------------------------------------------------3、将SQL SERVER中查询到的数据导成一个Excel文件
    -- ======================================================
    T-SQL代码:
    EXEC master..xp_cmdshell 'bcp 库名.dbo.表名out c:\Temp.xls -c -q -S"servername" -U"sa" -P""'
    参数:S 是SQL服务器名;U是用户;P是密码
    说明:还可以导出文本文件等多种格式
    实例:EXEC master..xp_cmdshell 'bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S"pmserver" -U"sa" -P"sa"'
    EXEC master..xp_cmdshell 'bcp "SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname" queryout C:\ authors.xls -c -Sservername -Usa -Ppassword'
    在VB6中应用ADO导出EXCEL文件代码: 
    Dim cn  As New ADODB.Connection
    cn.open "Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;"
    cn.execute "master..xp_cmdshell 'bcp "SELECT col1, col2 FROM 库名.dbo.表名" queryout E:\DT.xls -c -Sservername -Usa -Ppassword'"
    ------------------------------------------------------------------------------------------------4、在SQL SERVER里往Excel插入数据:
    -- ======================================================
    insert into OpenDataSource( 'Microsoft.Jet.OLEDB.4.0',
    'Data Source="c:\Temp.xls";User ID=Admin;Password=;Extended properties=Excel 5.0')...table1 (A1,A2,A3) values (1,2,3)T-SQL代码:
    INSERT INTO  
    OPENDATASOURCE('Microsoft.JET.OLEDB.4.0',  
    'Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls')...[Filiale1$]  
    (bestand, produkt) VALUES (20, 'Test')  
    -------------------------------------------------------------------------------------------------
      

  2.   

    执行前先执行此2句
    set ANSI_NULLS on
    set ANSI_WARNINGS on
      

  3.   

    空值比较搜索条件
    NULL 值表示列的数据值未知或不可用。NULL 值与零(数字值或二进制值)、零长度的字符串或空白(字符值)的含义不同。相反,空值可用于区分输入的是零(数字列)或空白(字符列)还是无数据输入(NULL 可用于数字列和字符列)。可以通过以下两种方式在允许空值的列中输入 NULL 值(根据 CREATE TABLE 语句的指定): 如果无数据输入并且列或数据类型上无默认的或 DEFAULT 约束,Microsoft® SQL Server™ 2000 将自动输入 NULL 值。
    通过键入不带引号的 NULL 显式输入 NULL 值。如果在字符列中键入带引号的 NULL,则将其视为字母 N、U、L、L 而非空值。 
    当检索到空值时,应用程序通常会在适当的位置显示 NULL 或 (NULL) 或 (null) 这样的字符串。例如,titles 表中的 advance 列允许空值:SELECT title_id, type, advance
    FROM pubs.dbo.titles
    WHERE advance IS NULL下面是结果集:title_id type         advance                    
    -------- ------------ -------------------------- 
    MC3026   UNDECIDED    (null)                     
    PC9999   popular_comp (null)                     (2 row(s) affected)比较空值
    比较空值时必须小心。比较行为取决于选项 SET ANSI_NULLS 的设置。当 SET ANSI_NULLS 为 ON 时,如果比较中有一个或多个表达式为 NULL,则既不输出 TRUE 也不输出 FALSE,而是输出 UNKNOWN。这是因为,未知值不能与其它任何值进行逻辑比较。这种情况发生在一个表达式与 NULL 单词进行比较,或者两个表达式相比,而其中一个表达式取值为 NULL 时。例如,当 ANSI_NULLS 为 ON 时,以下比较总是输出 UNKNOWN:ytd_sales > NULL只要变量包含 NULL 值,下列比较也输出 UNKNOWN:ytd_sales > @MyVariable使用 IS NULL 或 IS NOT NULL 子句测试 NULL 值。这将增加 WHERE 子句的复杂性。例如,表 Northwind Customers 中的 Region 列允许空值。如果使用 SELECT 语句不仅测试其它值还测试空值,则必须包括 IS NULL 子句:SELECT CustomerID, CompanyName, Region
    FROM Northwind.dbo.Customers
    WHERE Region IN ('WA', 'SP', 'BC')
       OR Region IS NULLTransact-SQL 支持在与空值进行比较时,允许比较运算符返回 TRUE 或 FALSE。通过设置 ANSI_NULLS OFF 可将该选项激活。当 ANSI_NULLS 为 OFF 时,如果 ColumnA 包含空值,则比较操作 ColumnA = NULL 返回 TRUE;如果 ColumnA 除包含 NULL 外还包含某些值,则比较操作返回 FALSE。此外,两个都取空值的表达式的比较也输出 TRUE。当 ANSI_NULLS 设置为 OFF 时,SELECT 语句将返回 Customer 表中所有 Region 为空值的行:SELECT CustomerID, CompanyName, Region
    FROM Northwind.dbo.Customers
    WHERE Region = NULL不论 ANSI_NULLS 如何设置,对于 ORDER BY、GROUP BY 和 DISTINCT 关键字空值总被视为是相等的。此外,允许 NULL 的唯一索引或 UNIQUE 约束只能包含一个带有 NULL 键值的行。后面带有 NULL 的行将被拒绝。属于主键的任何列中都不能含有 NULL。涉及 NULL 的计算均取值为 NULL,这是因为只要有一个因子为未知,结果肯定是 UNKNOWN。例如,如果 column1 为 NULL,则 column1 + 1 取值为 NULL。当搜索的列中包括定义为允许空值的列时,可以通过下列模式查找数据库中的空值或非空值:WHERE column_name IS [NOT] NULL
      

  4.   

    设置数据库选项
    可以为每个数据库都设置若干个决定数据库特点的数据库级选项。只有系统管理员、数据库所有者以及 sysadmin 和 dbcreator 固定服务器角色和 db_owner 固定数据库角色的成员才能修改这些选项。这些选项对于每个数据库都是唯一的,而且不影响其它数据库。可以使用 ALTER DATABASE 语句的 SET 子句、sp_dboption 系统存储过程,或者在某些情况下使用 SQL Server 企业管理器设置数据库选项。 说明  通过使用 sp_configure 系统存储过程或者 SQL Server 企业管理器,可以设置服务器范围的设置。有关更多信息,请参见设置配置选项。使用 SET 语句指定连接级设置。有关更多信息,请参见 SET 选项。
    设置了数据库选项之后,将自动发出一个检查点,它会使修改立即生效。若要更改新创建数据库的任意数据库选项的默认值,请更改 model 数据库中的适当数据库选项。例如对于随后创建的任何新数据库,如果希望 AUTO_SHRINK 数据库选项的默认设置都为 ON,则将 model 的 AUTO_SHRINK 选项设置为 ON。有五类数据库选项: 自动选项
    游标选项
    恢复选项
    SQL 选项
    状态选项 
    自动选项
    自动选项控制某些自动行为。AUTO_CLOSE当设置为 ON 时,在数据库的最后一个用户退出,而且数据库中的所有过程都完成时,数据库将关闭并完全退出系统,从而释放所有资源。默认情况下,当使用 Microsoft® SQL Server™ 2000 Desktop Engine 时,对于所有数据库,此选项都设置为 ON,而对于所有其它版本都设置为 OFF,与操作系统无关。当用户试图再次使用数据库时,该数据库将自动重新打开。如果数据库完全退出系统,则该数据库不会重新打开,直到下一次 SQL Server 重新启动时,用户试图使用该数据库为止。当为 OFF 时,即使当前没有用户使用数据库,数据库仍然保持打开状态。AUTO_CLOSE 选项对于桌面数据库很有用,因为它允许将数据库文件作为常规文件进行管理。它们可以移动、复制以制作备份,或者甚至通过电子邮件发送给其他用户。如果应用程序与 SQL Server 反复建立连接和断开连接,则不应对这样的应用程序所访问的数据库使用 AUTO_CLOSE 选项。在每个连接之间关闭和重新打开数据库的开销将削弱性能。此选项的状态可以通过检查 DATABASEPROPERTYEX 函数的 IsAutoClose 属性来确定。AUTO_CREATE_STATISTICS当设置为 ON 时,将在谓词中使用的列上自动创建统计。添加统计将提高查询性能,因为 SQL Server 查询优化器可以更好地确定如何估算查询。如果未使用统计,则 SQL Server 将自动删除它们。当设置为 OFF 时,SQL Server 不自动创建统计;相反,可以手动创建统计。有关更多信息,请参见统计信息。 默认情况下,AUTO_CREATE_STATISTICS 为 ON。此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsAutoCreateStatistics 属性来确定。AUTO_UPDATE_STATISTICS当设置为 ON 时,因为更改表中数据而造成统计过期时,将自动更新现有的统计。当设置为 OFF 时,现有的统计不会自动更新;而可以手动更新该统计。有关更多信息,请参见统计信息。 默认情况下,将 AUTO_UPDATE_STATISTICS 设置为 ON。 此选项的状态可以通过检查 DATABASEPROPERTYEX 函数的 IsAutoUpdateStatistics 属性来确定。AUTO_SHRINK当设置为 ON 时,数据库文件可作为定期收缩的对象。数据文件和日志文件都可以自动由 SQL Server 收缩。当设置为 OFF 时,在定期检查未使用空间的过程中,数据库文件不自动收缩。默认情况下,当使用 SQL Server 桌面版时,对于所有数据库,此选项都设置为 ON,而对于所有其它版本都设置为 OFF,与操作系统无关。如果将数据库设置为 SIMPLE 恢复模型或备份日志,则 AUTO_SHRINK 只减小事务日志的大小。 当文件中超过百分之二十五的部分包含未使用的空间时,AUTO_SHRINK 选项将导致收缩文件。文件将收缩至未使用空间占文件 25% 的大小,或收缩至文件创建时的大小,两者之间取其大。不能收缩只读数据库。此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsAutoShrink 属性来确定。游标选项
    游标选项控制游标的行为和作用域。CURSOR_CLOSE_ON_COMMIT当设置为 ON 时,在提交事务时,所有打开的游标都将自动关闭(遵从 SQL-92 规范)。默认情况下,此设置为 OFF,并且游标仍然在各事务边界间保持打开状态,仅当连接关闭或被显式关闭时,才会关闭游标。连接级设置(使用 SET 语句设置)替代 CURSOR_CLOSE_ON_COMMIT 的默认数据库设置。默认情况下,当连接到 SQL Server 时,ODBC 和 OLE DB 客户端发出连接级 SET 语句,以将会话的 CURSOR_CLOSE_ON_COMMIT 设置为 OFF。有关更多信息,请参见 SET CURSOR_CLOSE_ON_COMMIT。 此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsCloseCursorsOnCommitEnabled 属性来确定。CURSOR_DEFAULT LOCAL | GLOBAL如果设置了 CURSOR_DEFAULT LOCAL,且创建游标时没有将其定义为 GLOBAL,则对于在其中创建游标的批处理、存储过程或触发器,游标的作用域都是局部。游标名仅在该作用域内有效。在批处理、存储过程、触发器或存储过程 OUTPUT 参数中,该游标可由局部游标变量引用。当批处理、存储过程或触发器终止时,游标将被隐式释放,除非它在一个 OUTPUT 参数中传递回来。如果 OUTPUT 参数将游标传递回来,则游标在最后引用它的变量释放或离开作用域时释放。如果设置了 CURSOR_DEFAULT GLOBAL,且在创建游标时没有将其定义为 LOCAL,则游标的作用域对于连接是全局的。在由连接执行的任何存储过程或批处理中,都可以引用该游标名称。该游标仅在断开时被隐式释放。CURSOR_DEFAULT GLOBAL 是默认设置。有关更多信息,请参见 DECLARE CURSOR。此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsLocalCursorsDefault 属性来确定。恢复选项
    恢复选项控制数据库的恢复模型。RECOVERY FULL | BULK_LOGGED | SIMPLE指定 FULL 时,数据库备份和事务日志备份用于提供从媒体故障中完全恢复的能力。包括大容量操作(如 SELECT INTO、CREATE INDEX 和大容量装载数据)在内的所有操作都将完整记入日志。有关更多信息,请参见完全恢复。指定 BULK_LOGGED 时,对所有 SELECT INTO、CREATE INDEX 和大容量装载数据操作的日志记录是最小的,因此所需的日志空间较少。这种模式可获得更好的性能和更少的日志空间使用量,但是丢失数据的危险比使用完整恢复要大。有关更多信息,请参见大容量日志记录恢复。指定 SIMPLE 时,只能将数据库恢复到上一次完整数据库备份或上一次差异备份。有关更多信息,请参见简单恢复。SIMPLE 是 SQL Server 桌面版和数据引擎的默认设置,FULL 是所有其它版本的默认设置。此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 Recovery 属性来确定。TORN_PAGE_DETECTION此恢复选项允许 SQL Server 检测由于电源故障或其它系统停歇导致的未完成的 I/O 操作。当设置为 ON 时,只要一个 8 KB 的数据库页写入磁盘,该页的每个 512 字节扇区都有一位被翻转。当 SQL Server 以后读取该页时,如果有一个位发生错误,则该页将被错误写入;这样就会检测到一个残缺页。通常在恢复期间检测到残缺页,因为错误写入的任何页都可能在恢复时被读取。虽然 SQL Server 数据库页是 8 KB,但是磁盘使用 512 字节的扇区执行 I/O 操作。因此,每个数据库页要写 16 个扇区。如果在操作系统将第一个 512 字节扇区写到磁盘和完成 8 KB I/O 操作之间系统失败(例如,由于电源故障),则可能出现残缺页。如果数据库页的第一个扇区在失败之前成功地写入磁盘,则磁盘上的数据库页将显示为更新过的,尽管可能没有更新成功。说明  使用备用电池的磁盘高速缓存可以保证数据成功地写到磁盘上,或者根本就不写。
    如果检测到残缺页,将出现一个 I/O 错误,并断开连接。如果在恢复过程中检测到残缺页,则数据库也会被标记为可疑。应该还原数据库备份,并应用所有事务日志备份,因为它在物理上是不一致的。 默认情况下,TORN_PAGE_DETECTION 为 ON。 此选项的当前设置可通过检查 DATABASEPROPERTYEX 的 IsTornPageDetectionEnabled 属性来确定。SQL 选项
    SQL 选项控制 ANSI 遵从选项。ANSI_NULL_DEFAULT允许用户控制数据库默认为空。未显式指定 NULL 或 NOT NULL 时,用户定义的数据类型或列定义将使用为空性的默认设置。为空性由会话或数据库设置确定。Microsoft® SQL Server™ 2000 默认为 NOT NULL。对于 ANSI 兼容性,数据库选项 ANSI_NULL_DEFAULT 设置为 ON 将使数据库默认设置更改为 NULL。当此选项设置为 ON 时,在 CREATE TABLE 或 ALTER TABLE 语句过程中,没有显式定义为 NOT NULL 的所有用户定义的数据类型或列都将默认为允许空值。使用约束定义的列都将遵循约束规则,而无视此设置。连接级设置(使用 SET 语句设置)替代 ANSI_NULL_DEFAULT 的默认数据库级设置。默认情况下,当连接到 SQL Server 时,ODBC 和 OLE DB 客户端发出连接级 SET 语句,以将会话的 ANSI_NULL_DEFAULT 设置为 ON。有关更多信息,请参见 SET ANSI_NULL_DFLT_ON。 此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsAnsiNullDefault 属性来确定。ANSI_NULLS当设置为 ON 时,所有与空值比较的值都取值为 NULL(未知)。当设置为 OFF 时,如果两个值都为 NULL,则非 Unicode 值与空值比较的值都取值为 TRUE。默认情况下,ANSI_NULLS 数据库选项为 OFF。 连接级设置(使用 SET 语句设置)替代 ANSI_NULLS的默认数据库设置。默认情况下,当连接到 SQL Server 时,ODBC 和 OLE DB 客户端发出连接级 SET 语句,将会话的 ANSI_NULLS 设置为 ON。有关更多信息,请参见 SET ANSI_NULLS。 在计算列或索引视图上创建或操作索引时,SET ANSI_NULLS 也必须为 ON。 此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsAnsiNullsEnabled 属性来确定。 
      

  5.   

    ANSI_PADDING当设置为 ON 时,不剪裁字符值中插入到 varchar 列的尾随空格和二进制值中插入到 varbinary 列的尾随零。不将值按列的长度进行填充。当设置为 OFF 时,剪裁 varchar 列的尾随空格和 varbinary 列的尾随零。该设置只影响新列的定义。 SET ANSI_PADDING 为 ON 时,将允许空值的 Char(n) 和 binary(n) 列填充到列长,而当 SET ANSI_PADDING 为 OFF 时,将剪裁尾随空格和零。始终将不允许空值的 Char(n) 和 binary(n) 列填充到列长。 重要  建议始终将 ANSI_PADDING 设置为 ON。在计算列或索引视图上创建或操作索引时,SET ANSI_PADDING 必须为 ON。 
    此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsAnsiPaddingEnabled 属性来确定。ANSI_WARNINGS当设置为 ON 时,在出现如"被零除"或聚合函数中出现空值这类情形时,将发出错误或警告。当设置为 OFF 时,聚合函数中出现空值时不会发出警告,而在出现"被零除"这类情形时将返回空值。默认情况下,ANSI_WARNINGS 为 OFF。在计算列或索引视图上创建或操作索引时,SET ANSI_WARNINGS 必须设置为 ON。 连接级设置(使用 SET 语句设置)替代 ANSI_WARNINGS 的默认数据库设置。默认情况下,当连接到 SQL Server 时,ODBC 和 OLE DB 客户端发出连接级 SET 语句,将会话的 ANSI_WARNINGS 设置为 ON。有关更多信息,请参见 SET ANSI_WARNINGS。 此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsAnsiWarningsEnabled 属性来确定。ARITHABORT当设置为 ON 时,溢出或被零除错误将导致查询或批处理终止。如果错误发生在事务内,则回滚事务。当设置为 OFF 时,如果出现其中一个错误则显示警告信息,而查询、批处理或事务继续处理,就好象没有发生错误一样。 在计算列或索引视图上创建或操作索引时,SET ARITHABORT 必须设置为 ON。此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsArithmeticAbortEnabled 属性来确定。NUMERIC_ROUNDABORT如果设置为 ON,则当表达式中出现精度损失时将生成错误。当设置为 OFF 时,精度损失不生成错误信息,并且将结果四舍五入为存储结果的列或变量的精度。当在计算列或索引视图上创建或操作索引时,SET NUMERIC_ROUNDABORT 必须设置为 OFF。 此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsNumericRoundAbortEnabled 属性来确定。CONCAT_NULL_YIELDS_NULL当设置为 ON 时,如果串联操作中的某个操作数为 NULL,则操作结果为 NULL。例如,将字符串"This is"和 NULL 串联将得到 NULL 值,而不是值"This is"。 当为 OFF 时,将一个空值与一个字符串联在一起产生作为结果的字符串;该空值被视为空字符串进行处理。默认情况下,CONCAT_NULL_YIELDS_NULL 为 OFF。当在计算列或索引视图上创建或操作索引时,SET CONCAT_NULL_YIELDS_NULL 必须设置为 ON。连接级设置(使用 SET 语句设置)替代 CONCAT_NULL_YIELDS_NULL 的默认数据库设置。默认情况下,当连接到 SQL Server 时,ODBC 和 OLE DB 客户端发出连接级 SET 语句,将会话的 CONCAT_NULL_YIELDS_NULL 设置为 ON。有关更多信息,请参见 SET CONCAT_NULL_YIELDS_NULL。 此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsNullConcat 属性来确定。QUOTED_IDENTIFIER当设置为 ON 时,可以用双引号分隔标识符,并且必须用单引号分隔文字。所有用双引号分隔的字符串都被解释为对象标识符。引用的标识符不必遵循用于标识符的 Transact-SQL 规则。它们可以是关键字,而且可以包括 Transact-SQL 标识符中通常不允许的字符。如果单引号 (') 是文字字符串的一部分,则可以用双引号 (") 表示它。当设置为 OFF(默认)时,标识符不能用引号围住,而且必须遵循所有用于标识符的 Transact-SQL 规则。文字可以由单引号或双引号分隔。 SQL Server 还允许使用方括号 ([ ]) 分隔标识符。无论 QUOTED_IDENTIFIER 的设置如何,都可以始终使用括号标识符。有关更多信息,请参见分隔标识符。当在计算列或索引视图上创建或操作索引时,SET QUOTED_IDENTIFIER 必须设置为 ON。 连接级设置(使用 SET 语句设置)替代 QUOTED_IDENTIFIER 的默认数据库设置。默认情况下,连接到 SQL Server 时,ODBC 和 OLE DB 客户端发出连接级 SET 语句,将 QUOTED_IDENTIFIER 设置为 ON。有关更多信息,请参见 SET QUOTED_IDENTIFIER。 此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsQuotedIdentifiersEnabled 属性来确定。RECURSIVE_TRIGGERS当设置为 ON 时,触发器可以递归激发。当设置为 OFF(默认)时,触发器不能递归激发。说明  当 RECURSIVE_TRIGGERS 为 OFF 时,只禁止直接递归。若要禁用间接递归,还必须将 nested triggers 服务器选项设置为 0。
    此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsRecursiveTriggersEnabled 属性来确定。状态选项
    状态选项控制数据库是联机还是脱机、谁可以连接到数据库以及数据库是否为只读模式。当数据库从一种状态转换到另一种状态时,终止子句可用于控制如何终止连接。 OFFLINE | ONLINE当指定 OFFLINE 时,数据库被关闭并且干净地退出,并标记为脱机。数据库脱机时不能进行修改。 当指定 ONLINE 时,数据库处于打开状态并可供使用。ONLINE 是默认设置。此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 Status 属性来确定。READ_ONLY | READ_WRITE指定 READ_ONLY 时,数据库处于只读模式。用户可以从数据库检索数据,但是不能修改数据。因为只读数据库不允许数据修改: 系统启动时,跳过自动恢复。
    不能收缩数据库。
    只读数据库中不会发生锁定,这使查询性能更快。 
    指定 READ_WRITE 时,用户可以检索并修改数据。READ_WRITE 是默认设置。此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 Updateability 属性来确定。SINGLE_USER | RESTRICTED_USER | MULTI_USERSINGLE_USER 每次允许一个用户连接到数据库。所有其它用户连接均中断。中断连接的时间段由 ALTER DATABASE 语句的终止子句控制。新的连接尝试将被拒绝。即使设置此选项的用户注销,数据库仍保持 SINGLE_USER 模式。这时,其他用户(但只能是一个)可以连接到数据库。 若要允许多个连接,必须将数据库更改为 RESTRICTED_USER 或 MULTI_USER 模式。RESTRICTED_USER 只允许 db_owner 固定数据库角色成员以及 dbcreator 和 sysadmin 固定服务器角色成员连接到数据库,不过对连接数没有限制。在 ALTER DATABASE 语句的终止子句所指定的时间段内,不是这些角色成员的用户连接将被断开连接。而且,不合格用户所做的新连接尝试将被拒绝。MULTI_USER 允许所有具有适当权限的用户连接到数据库。MULTI_USER 是默认设置。 此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 UserAccess 属性来确定。WITH <termination>ALTER DATABASE 语句的终止子句指定:当数据库从一种状态转换到另一种状态时,如何终止未完成的事务。通过中断事务与数据库的连接终止事务。如果省略终止子句,则 ALTER DATABASE 语句将无限期等待,直到事务主动提交或回滚为止。 ROLLBACK AFTER integer [SECONDS] 
    ROLLBACK AFTER integer SECONDS 等待指定的秒数,然后中断不合格的连接。未完成的事务将回滚。当转换为 SINGLE_USER 模式时,不合格的连接是除发出 ALTER DATABASE 语句的连接以外的所有连接。当转换为 RESTRICTED_USER 模式时,不合格的连接是非 db_owner 固定数据库角色成员以及 dbcreator 和 sysadmin 固定服务器角色成员的用户连接。 ROLLBACK IMMEDIATE 
    ROLLBACK IMMEDIATE 立即中断不合格的连接。所有未完成的事务都将回滚。不合格的连接与 ROLLBACK AFTER integer SECONDS 所描述的连接相同。NO_WAIT 
    NO_WAIT 在尝试更改数据库状态之前检查连接,如果存在某些连接,则导致 ALTER DATABASE 语句失败。当转换为 SINGLE_USER 模式时,如果存在任何其它连接,则 ALTER DATABASE 语句失败。当转换为 RESTRICTED_USER 模式时,如果存在任何不合格的连接,则 ALTER DATABASE 语句失败。 
      

  6.   

    执行了这两句还是有问错。错误提示
    Warning: mssql_query() [function.mssql-query]: message: OLE DB 提供程序 'Microsoft.Jet.OLEDB.4.0' 报错。提供程序未给出有关错误的任何信息。 (severity 16) in D:\wwwroot\test.php on line 32Warning: mssql_query() [function.mssql-query]: Query failed in D:\wwwroot\test.php on line 32