修改数据库(设置数据库选项)

修改数据库(设置数据库选项)

  可以为每个数据库都设置若干个决定数据库特点的数据库级选项 只有系统管理员 数据库所有者以及 sysadmin 和 dbcreator 固定服务器角色和 db_owner 固定数据库角色的成员才能修改这些选项 这些选项对于每个数据库都是唯一的 而且不影响其它数据库 可以使用 ALTER DATABASE 语句的 SET 子句 sp_dboption 系统存储过程 或者在某些情况下使用 SQL Server 企业管理器设置数据库选项

  说明 通过使用 sp_configure 系统存储过程或者 SQL Server 企业管理器 可以设置服务器范围的设置

  设置了数据库选项之后 将自动发出一个检查点 它会使修改立即生效

  

  若要更改新创建数据库的任意数据库选项的默认值 请更改 model 数据库中的适当数据库选项 例如对于随后创建的任何新数据库 如果希望 AUTO_SHRINK 数据库选项的默认设置都为 ON 则将 model 的 AUTO_SHRINK 选项设置为 ON

  

  有五类数据库选项

  

  自动选项

  

  

  游标选项

  

  

  恢复选项

  

  

  SQL 选项

  

  

  状态选项

  自动选项

  自动选项控制某些自动行为

  

  AUTO_CLOSE

  

  当设置为 ON 时 在数据库的最后一个用户退出 而且数据库中的所有过程都完成时 数据库将关闭并完全退出系统 从而释放所有资源 默认情况下 当使用 Microsoft® SQL Server&# ; 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 选项将导致收缩文件 文件将收缩至未使用空间占文件 % 的大小 或收缩至文件创建时的大小 两者之间取其大

  

  不能收缩只读数据库

  

  此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsAutoShrink 属性来确定

  

  游标选项

  游标选项控制游标的行为和作用域

  

  CURSOR_CLOSE_ON_COMMIT

  

  当设置为 ON 时 在提交事务时 所有打开的游标都将自动关闭(遵从 SQL 规范) 默认情况下 此设置为 OFF 并且游标仍然在各事务边界间保持打开状态 仅当连接关闭或被显式关闭时 才会关闭游标

  

  连接级设置(使用 SET 语句设置)替代 CURSOR_CLOSE_ON_COMMIT 的默认数据库设置 默认情况下 当连接到 SQL Server 时 ODBC 和 OLE DB 客户端发出连接级 SET 语句 以将会话的 CURSOR_CLOSE_ON_COMMIT 设置为 OFF

  此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsCloseCursorsOnCommitEnabled 属性来确定

  

  CURSOR_DEFAULT LOCAL | GLOBAL

  

  如果设置了 CURSOR_DEFAULT LOCAL 且创建游标时没有将其定义为 GLOBAL 则对于在其中创建游标的批处理 存储过程或触发器 游标的作用域都是局部 游标名仅在该作用域内有效 在批处理 存储过程 触发器或存储过程 OUTPUT 参数中 该游标可由局部游标变量引用 当批处理 存储过程或触发器终止时 游标将被隐式释放 除非它在一个 OUTPUT 参数中传递回来 如果 OUTPUT 参数将游标传递回来 则游标在最后引用它的变量释放或离开作用域时释放

  

  如果设置了 CURSOR_DEFAULT GLOBAL 且在创建游标时没有将其定义为 LOCAL 则游标的作用域对于连接是全局的 在由连接执行的任何存储过程或批处理中 都可以引用该游标名称 该游标仅在断开时被隐式释放 CURSOR_DEFAULT GLOBAL 是默认设置

  此选项的状态可通过检查 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 时 只要一个 KB 的数据库页写入磁盘 该页的每个 字节扇区都有一位被翻转 当 SQL Server 以后读取该页时 如果有一个位发生错误 则该页将被错误写入 这样就会检测到一个残缺页 通常在恢复期间检测到残缺页 因为错误写入的任何页都可能在恢复时被读取

  

  虽然 SQL Server 数据库页是 KB 但是磁盘使用 字节的扇区执行 I/O 操作 因此 每个数据库页要写 个扇区 如果在操作系统将第一个 字节扇区写到磁盘和完成 KB I/O 操作之间系统失败(例如 由于电源故障) 则可能出现残缺页 如果数据库页的第一个扇区在失败之前成功地写入磁盘 则磁盘上的数据库页将显示为更新过的 尽管可能没有更新成功

  

  

  

  说明 使用备用电池的磁盘高速缓存可以保证数据成功地写到磁盘上 或者根本就不写

  

  

  如果检测到残缺页 将出现一个 I/O 错误 并断开连接 如果在恢复过程中检测到残缺页 则数据库也会被标记为可疑 应该还原数据库备份 并应用所有事务日志备份 因为它在物理上是不一致的

  

  默认情况下 TORN_PAGE_DETECTION 为 ON

  

  此选项的当前设置可通过检查 DATABASEPROPERTYEX 的 IsTornPageDetectionEnabled 属性来确定

  

  SQL 选项

  SQL 选项控制 ANSI 遵从选项

  

  ANSI_NULL_DEFAULT

  

  允许用户控制数据库默认为空 未显式指定 NULL 或 NOT NULL 时 用户定义的数据类型或列定义将使用为空性的默认设置 为空性由会话或数据库设置确定 Microsoft® SQL Server&# ; 默认为 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

  此选项的状态可通过检查 DATABASEPROPERTYEX 函数的 IsAnsiNullDefault 属性来确定

  

  ANSI_NULLS

  

  当设置为 ON 时 所有与空值比较的值都取值为 NULL(未知) 当设置为 OFF 时 如果两个值都为 NULL 则非 Unicode 值与空值比较的值都取值为 TRUE 默认情况下 ANSI_

修改数据库(设置数据库选项)

相关文章:

你感兴趣的文章:

标签云: