您好,我是小DAI,专注于数据库管理员相关的技术问答,请问有什么可以帮您?

sp_file_path

说明

在使用 transfer table ... to 命令编写输出文件时,使用 sp_file_path 过程指定目录限制。

自版本 16.0 SP02 PL04 开始,不再允许 transfer table ... to 命令将输出文件写入到通过运行服务器可编写的任何目录中。相反,必须将输出文件写入到指定输出目录或其中一个子目录。目录限制应用服务器端,可按数据库进行修改。路径限制采用两种形式:

可使用 dtu path root 指定所有 tranfer table ... to 输出文件的所需文件根。如果未指定,则缺省设置为 $SYBASE/data。

可使用文件根 dtu path forbid 将特定路径指定为禁止。

语法


sp_file_path <database>, <attr> [, <path>] [, <option>]

参数

<database>

是在其中运行过程的数据库的名称。这有助于阻止意外更改。

<attr>

是 dtu path root 或 dtu path forbid 中的一个。这指定了哪些限制会受到影响。

<path>

<@attr> 的目标路径名。此路径可能包含环境变量 $SYBASE、$SYBASE_ASE、$SYBASE_OCS,服务器将在运行时对其进行转换。(Windows 注意:%SYBASE% 等也会被识别到。)

<option>

  • insert 插入新限制。

  • delete 移除现有限制。

  • select 列出限制。

  • show 列出限制。

  • help 输出简短帮助消息。

    如果不指定选项,则缺省值为 insert。

    示例

    示例 1

    在主目录中指定新 dtu path root:

    
    sp_file_path 'master', 'dtu path root', '$SYBASE/data'
    

    示例 2

    从目录 model 中移除 dtu path root:

    
    sp_file_path 'model', 'dtu path root', NULL, 'delete'
    

    用法

  • sp_file_path 必须从指定数据库中调用。

  • 可在 master 数据库和单个数据库(或在二者中同时)指定这些限制。

  • master 数据库中指定的 dtu path root 适用于该安装中的每个数据库。可以通过指定其自己的 dtu path root 来覆盖单个数据库。

  • 累计 dtu path forbid 目录的列表。master 数据库中指定的 dtu path forbid 路径适用于该安装中的每个数据库。可以将单个数据库添加到 master 列表,但不能从该列表中减去单个数据库。

  • 运行具有 @attr = “dtu path root” 和 @option = “insert” 的 sp_file_path 将替换指定数据库中任何现有的 dtu path root。

  • 可以通过将 dtu path root 设置为 *(单个星号)将其禁用。但是 dtu path forbid 列表仍然适用。SAP 建议只在需要时禁用 dtu path root,并且只在必要时这样做。如果可能,禁用单个数据库的 dtu path root,而不在 master 数据库中禁用,因此 dtu path root 限制仍适用于其它数据库。

  • 当 transfer table ... to 命令指定相对路径名作为输出文件时,服务器会为其加上当前 dtu path root 的前缀。如果没有设置过 dtu path root,或设置为 *,则服务器使用 $SYBASE/data。

  • 构建完整路径名后,如果其不以 dtu path root 开头,则拒绝传输。同样的,如果路径以 dtu path forbid 列表中的任何条目开头,将拒绝输出。服务器执行两次禁止列表检查:一次使用初始输出路径,在解析路径中的任何符号链接后再执行一次。

  • 路径限制只适用于使用 transfer table ... to 命令输出文件。任何有效输入文件都可能被指定为 transfer table ... from。