Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » SQL Anywhere 服务器 - 数据库管理 » 配置数据库 » 数据库选项 » 数据库选项简介 » 设置数据库选项

 

数据库选项的作用域和持续时间

可以将选项设置为三种级别的作用域:公共、用户和临时。

临时选项优先于用户设置和公共设置。用户级选项优先于公共设置。如果为当前用户设置用户级选项,则相应的临时选项也会被设置。

某些选项(例如 COMMIT 行为)的作用域是数据库范围。设置这些选项要求具有 DBA 权限。其它选项(例如 isolation_level)也可以只用于当前连接,并且不需要特殊权限。

根据选项的不同,选项设置更改的时间也不同。对全局选项(如 recovery_time)的更改发生在下一次数据库启动时。

通常,只有影响到当前连接的选项才会立即生效。例如,可以在一个事务中间更改选项设置。该规则的一个例外是在游标打开时更改选项会导致不可靠的结果。例如,在游标打开时,更改 date_format 或许不会改变下一行的格式。根据游标检索的方式,或许要到几行之后更改才会对用户生效。

设置公共选项

为 PUBLIC 用户 ID 设置选项要求具有 DBA 权限。

为 PUBLIC 用户 ID 更改选项的值,相当于为没有设置该值的所有用户设置此选项的永久值。如果某选项没有 PUBLIC 用户 ID 设置,则无法为单个用户 ID 设置此选项的值。

一些只能为 PUBLIC 用户设置的选项对现有连接会立即生效,即使用户通过 CONNECTION_PROPERTY 函数无法看到更改的设置也是这样。global_database_id 选项就是一例。因此,在有其他用户连接到数据库时,不应更改仅用于 PUBLIC 的选项。

设置临时选项

向 SET OPTION 语句添加 TEMPORARY 关键字可改变此项更改的持续时间。通常选项更改是永久的。在使用 SET OPTION 语句显式进行更改之前,它不会变化。

执行 SET TEMPORARY OPTION 语句时,新选项值只对当前连接生效,其有效时间也只是连接的持续时间。

在使用 SET TEMPORARY OPTION 设置 PUBLIC 选项时,更改在数据库运行的任何时间都有效。当数据库关闭时,PUBLIC 用户 ID 的临时选项恢复为其永久值。

为 PUBLIC 用户 ID 设置临时选项在安全上具有优点。例如,在启用 login_mode 选项时,数据库依赖其运行时所在的系统的登录安全性。将其作为临时选项设置启用意味着,对于依赖 Windows 域的安全性的数据库,如果该数据库关闭并被复制到本地计算机,它的安全不会受到威胁。在这种情况下,login_mode 选项将恢复至其永久值,而其永久值可能为 [Standard],即不允许集成登录的模式。

SQL 语句的设置选项

INSERT、UPDATE、DELETE、SELECT、UNION、EXCEPT 和 INTERSECT 语句有一个 OPTION 子句,用于指定语句使用实例化视图的方式和查询优化方式。此子句也可用于指定一个仅适用于该语句的选项设置,该选项设置优先于任何有效的公共或临时选项设置。在 OPTION 子句中,可以更改以下选项的设置: