创建远程服务器。
CREATE SERVER server-name CLASS server-class-string USING connection-info-string [ READ ONLY ]
server-class-string : 'ADSODBC' | 'ASEODBC' | 'DB2ODBC' | 'HANAODBC' | 'IQODBC' | 'MIRROR' | 'MSACCESSODBC' | 'MSSODBC' | 'MYSQLODBC' | 'ODBC' | 'ORAODBC' | 'SAODBC' | 'ULODBC'
connection-info-string : { 'data-source-name' | 'sqlanywhere-connection-string' }
CREATE SERVER server-name CLASS 'DIRECTORY' USING using-string
using-string : 'ROOT = path [ ;SUBDIRS = n ] [ ;READONLY = { YES | NO } ] [ ;CREATEDIRS = { YES | NO } ] [ ;DELIMITER = { / | \ } ]'
CLASS 子句 指定要用于远程连接的服务器类。服务器类包含详细的服务器功能信息。
语法 2 中使用 DIRECTORY 类来访问本地计算机上的目录。
如果启用了磁盘沙箱,则会将数据库的操作限制为主数据库文件所在的目录。 请参见磁盘沙箱。
USING 子句 在语法 1 中,USING 子句为数据库服务器提供了一个连接字符串。适用的连接字符串取决于所使用的驱动程序,而驱动程序又取决于 server-class-string。
USING 子句是一个 ODBC 连接字符串,它可以包括用于指定 ODBC 数据源名称的 'DSN=data-source-name'
和/或用于在 Unix 上指定二进制驱动程序(或在 Windows 上指定驱动程序名称)的 'DRIVER=driver-name'
。
对于 SQL Anywhere 远程服务器(SAODBC 服务器类),connection-info-string 参数可以是任何有效的 SQL Anywhere 连接字符串。可以使用任何 SQL Anywhere 连接参数。例如,如果存在连接问题,则可以包含一个 LOG 连接参数以对连接尝试进行故障排除。
USING 子句中的字符串还可以包含用大括号括起来的局部或全局变量名 ({variable-name})。SQL 变量名的类型必须为 CHAR、VARCHAR 或 LONG VARCHAR。例如,包含 ['DSN={@mydsn}'
] 的 USING 子句表示 @mydsn 是 SQL 变量并且 @mydsn 变量的当前内容应该在连接远程数据访问服务器时被替换。
在语法 2 中,USING 子句为本地目录指定以下值:
ROOT 子句 指定代表目录访问类根目录的路径(相对于数据库服务器)。当使用目录访问服务器名创建代理表时,代理表相对于此根路径。
如果启用了磁盘沙箱,则会将数据库的操作限制为主数据库文件所在的目录。 请参见磁盘沙箱。
SUBDIRS 子句 指定介于 0 与 10 之间的数字,该数字用于表示根目录内可供数据库服务器访问的目录层级数。如果省略 SUBDIRS 或将其设置为 0,则通过目录访问服务器仅可以访问根目录中的文件。可通过目录访问服务器创建任何可用目录或子目录的代理表。
DELIMITER 子句 指定 file_name 列中的路径是使用斜线 (/) 还是反斜线 (\) 字符进行分隔。缺省情况下使用本地路径分隔符。
USING 子句中的字符串还可以包含用大括号括起来的局部或全局变量名 ({variable-name})。SQL 变量名的类型必须为 CHAR、VARCHAR 或 LONG VARCHAR。例如,包含 'ROOT={@mypath}'
的 USING 子句表示 @mypath 是 SQL 变量并且 @mypath 变量的当前内容应该在与目录访问服务器建立连接时被替换。这样便允许创建动态目录访问服务器。
有关在 USING 子句中使用变量的详细信息,请参见创建目录访问服务器 (SQL)。
Windows Mobile 上不支持此语句。
当创建远程服务器时,会将它添加到 ISYSSERVER 系统表中。使用对应的系统视图 SYSSERVER 可查看该表。
语法 1 CREATE SERVER 语句用于定义远程服务器。
要在定义 SQL Anywhere 远程服务器时跳过 ODBC 驱动程序管理器,请使用下列语法(后跟 connection-info-string 的剩余部分):
CREATE SERVER remote-server CLASS 'SAODBC' USING 'DRIVER=SQL Anywhere Native;DSN=my-dsn;UID=my-username;PWD=my-pwd'; |
此语法允许远程访问数据以直接装载 SQL Anywhere 的 ODBC 驱动程序,并且受 Windows 和 Unix 支持。直接装载 SQL Anywhere 的 ODBC 驱动程序可确保使用当前服务器版本的 ODBC 驱动程序。另外,如果 SQL Anywhere 的 ODBC 驱动程序仅用于远程数据访问,则无需注册。
如果应用程序还使用非 SQL Anywhere 远程服务器,或者在未使用 'DRIVER=SQL Anywhere Native'
的情况下定义 SQL Anywhere 远程服务器,则对于其它远程服务器,远程数据访问仍使用驱动程序管理器。
在 Unix 平台上也可以引用 SQL Anywhere ODBC 驱动程序。语法如下:
USING 'DRIVER=SQL Anywhere 16;DSN=my-dsn' |
语法 2 CREATE SERVER 语句允许创建一个访问运行数据库服务器的计算机上的本地目录结构的目录访问服务器。必须为需要使用目录访问服务器的每个数据库用户创建一个外部登录。在 Unix 上,数据库服务器以特定用户身份运行,因此文件权限基于授予给数据库服务器用户的特权而定。
您必须具有 SERVER OPERATOR 系统特权。
自动提交。
SQL/2008 服务商扩充。
以下示例创建名为 RemoteSA 的 SQL Anywhere 远程服务器,使用 SQL Anywhere ODBC 驱动程序。
CREATE SERVER RemoteSA CLASS 'SAODBC' USING 'DRIVER=SQL Anywhere 16;DSN=RemoteDS'; |
以下示例在不使用 ODBC 驱动程序管理器的情况下直接装载 SQL Anywhere 的 ODBC 驱动程序:
CREATE SERVER RemoteSA CLASS 'SAODBC' USING 'DRIVER=SQL Anywhere Native;DSN=RemoteDS'; |
以下示例使用变量引用来创建动态远程数据访问服务器。运行此示例需要 MANAGE ANY USER 和 CREATE TABLE 系统特权。
CREATE SERVER RemoteSA CLASS 'SAODBC' USING 'DRIVER=SQL Anywhere 16;DSN={dsn_string};Server=saremote;UID=DBA;PWD=sql'; CREATE VARIABLE dsn_string LONG VARCHAR; SET dsn_string = 'Test16'; CREATE EXTERNLOGIN DBA TO RemoteSA; CREATE EXISTING TABLE test_employees AT 'RemoteSA...Employees'; SELECT * FROM test_employees; DROP REMOTE CONNECTION TO RemoteSA CLOSE ALL; |
以下示例使用 ASE ODBC 驱动程序创建名为 ase_prod 的 Adaptive Server Enterprise (ASE) 远程服务器。
CREATE SERVER ase_prod CLASS 'ASEODBC' USING 'DSN=remoteASE'; |
下例为名为 oracle723 的 Oracle 服务器创建一个远程服务器。它的 ODBC 数据源名称是 oracle723。
CREATE SERVER oracle723 CLASS 'ORAODBC' USING 'oracle723'; |
以下示例创建一个仅能访问 c:\temp 目录内文件的目录访问服务器。
CREATE SERVER diskserver0 CLASS 'DIRECTORY' USING 'ROOT=c:\\temp'; CREATE EXTERNLOGIN DBA TO diskserver0; CREATE EXISTING TABLE diskdir0 AT 'diskserver0;;;.'; -- Get a list of those files. SELECT privileges, file_name, size FROM diskdir0; |
以下示例创建一个用于探究两个不同目录的动态目录访问服务器。
CREATE SERVER diskserver9 CLASS 'DIRECTORY' USING '{dir_options}'; CREATE EXTERNLOGIN DBA TO diskserver9; CREATE EXISTING TABLE diskdir9 AT 'diskserver9;;;.'; CREATE VARIABLE dir_options VARCHAR(256); SET dir_options = 'ROOT=c:\\temp;SUBDIRS=9;DELIMITER=/'; SELECT * FROM diskdir9; DROP REMOTE CONNECTION TO diskserver9 CLOSE ALL; SET dir_options = 'ROOT=c:\\ProgramData;SUBDIRS=9;DELIMITER=/'; SELECT * FROM diskdir9; |
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |