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 服务器 - SQL 参考 » 使用 SQL » SQL 语句 » SQL 语句 (E-O)

 

GRANT REMOTE 语句 [SQL Remote]

此语句用于标识 SQL Remote 层次中位于当前数据库下一层的数据库,该数据库将从当前数据库接收消息。这些数据库的用户称为远程用户。

语法
GRANT REMOTE TO userid, ...
TYPE message-system, ...
ADDRESS address-string, ...
[ SEND { EVERY | AT } send-time ]
参数
  • userid   被授予权限的用户的用户 ID。

  • message-system   SQL Remote 支持的消息系统之一。它必须是以下值之一:

    • FILE
    • FTP
    • SMTP

  • address-string   一个字符串,包含指定消息系统的有效地址。

  • send-time   一个字符串,包含 hh:mm:ss 格式的时间说明。

注释

在 SQL Remote 安装中,每个从当前数据库接收消息的数据库都必须被授予 REMOTE 权限。

唯一的例外是 SQL Remote 层次中位于当前数据库上一层的数据库,该数据库必须被授予 CONSOLIDATE 权限。

远程用户按消息系统进行标识,所标识的是统一用户收发消息的方法。地址名必须是消息系统的有效地址,用单引号括起来。

对于 FILE 消息类型,地址是 SQLREMOTE 环境变量所指向目录的子目录。

远程数据库需要使用 GRANT REMOTE 语句来接收消息,但此语句本身并不为远程用户预订任何数据。要预订数据,必须使用数据库抽取实用程序或 CREATE SUBSCRIPTION 语句,为用户 ID 创建对当前数据库中的某个发布的预订。

可选的 SEND EVERY 和 SEND AT 子句指定发送消息的频率。该字符串包含各消息之间的时间长度(对于 SEND EVERY)或一天中发送消息的具体时间(对于 SEND AT)。使用 SEND AT 时,每天发送一次消息。

如果授予用户远程权限时未指定 SEND EVERY 或 SEND AT 子句,则消息代理处理消息,然后停止。要继续运行消息代理,必须确保为每个具有 REMOTE 权限的用户都指定了频率 SEND AT 或 SEND EVERY。

预计在许多统一数据库中,消息代理都连续运行,因此所有远程数据库都指定了 SEND 子句。典型安装可能涉及每天向膝上型电脑用户发送消息 (SEND AT) 和每隔一两个小时向远程服务器发送一次消息 (SEND EVERY)。为提高效率,所使用的时间应尽量相同。

权限

必须具有 DBA 权限。

副作用

自动提交。

另请参见
标准和兼容性
  • SQL/2003   服务商扩充。

示例

以下语句将远程权限授予用户 SamS,使用 SMTP 电子邮件系统,每隔两小时向 Singer, Samuel 这一地址发送一次消息:

GRANT REMOTE TO SamS
TYPE SMTP
ADDRESS 'Singer, Samuel'
SEND EVERY '02:00';