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

SQL Anywhere 12.0.0 (中文) » SQL Anywhere 服务器 - 编程 » OLE DB 和 ADO 开发

 

使用 OLE DB 设置 Microsoft 链接服务器

可创建一个能使用 SQL Anywhere OLE DB 提供程序来获得对 SQL Anywhere 数据库的访问权限的 Microsoft 链接服务器。可使用 Microsoft 的表引用语法(由 4 部分组成)或 Microsoft 的 OPENQUERY SQL 函数来发出 SQL 查询。下面就是一个由 4 部分组成的语法的示例。

SELECT * FROM SADATABASE..GROUPO.Customers

在本例中,SADATABASE 是链接服务器的名称,GROUPO 是 SQL Anywhere 数据库中的表所有者,而 Customers 是 SQL Anywhere 数据库中的表名。由于分类名不是 SQL Anywhere 数据库的功能,因此被省略(由两个连续点表示)。

另一种形式是使用 Microsoft 的 OPENQUERY 函数。

SELECT * FROM OPENQUERY( SADATABASE, 'SELECT * FROM Customers' )

在 OPENQUERY 语法中,第二个 SELECT 语句 ('SELECT * FROM Customers') 被传递到 SQL Anywhere 服务器中执行。

可以用 Microsoft SQL Server 交互应用程序或 SQL Server 脚本来设置使用 SQL Anywhere OLE DB 提供程序的链接服务器。

 ♦  交互方式设置链接服务器
  1. 对于 Microsoft SQL Server 2005,启动 Microsoft SQL Server Management Studio。对于其它版本的 SQL Server,此应用程序的名称和设置链接服务器的步骤可能会有所不同。

    在 [Object Explorer] 窗格中,在树形视图中向下展开到 [Server Objects] » [Linked Servers]。右击 [Linked Servers] 区域并选择 [New Linked Server]。

  2. 填充 [General] 页。

    [General] 页上的 [Linked Server] 字段应包含 Linked Server 的名称(如上面使用的 SADATABASE)。应选择 [Other Data Source] 选项,并应从列表中选择 [SQL Anywhere OLE DB Provider 12]。[Product Name] 字段可以填入任意名称(例如 SQL Anywhere)。[Data Source] 字段应当包含 ODBC 数据源名(例如 SQL Anywhere 12 Demo)。[Provider String] 字段可以包含附加的连接参数,例如 DATABASEFILE (DBF)。其它字段(如 [General] 页上的 [Location])应当留空。

  3. 不要在 [Provider String] 字段中指定数据库口令作为连接参数(因为它是明文显示的),而应该在 [Security] 页面中填写。

    在 SQL Server 2005 中,选择 [Be made using this security context] 选项并填写 [Remote login] 和 [With password] 字段(口令以星号显示)。

  4. 选择 [RPC] 和 [RPC Out] 选项。

    完成该操作的方法因 Microsoft SQL Server 的版本而异。在 SQL Server 2000 中,必须为这两个选项选中两个复选框。这些复选框位于 [Server Options] 页上。在 SQL Server 2005 中,这些选项具有 True/False 设置。确保将它们设置为 True。如果想要在 SQL Anywhere 数据库中执行存储过程/函数调用,并成功地传递参数(传入和传出),则必须设置 Remote Procedure Call (RPC) 选项。

  5. 选择 [Allow Inprocess] 提供程序选项。

    完成该操作的方法因 Microsoft SQL Server 的版本而异。在 SQL Server 2000 中有一个 [Provider Options] 按钮,可将您引至能选择此选项的页面。对于 SQL Server 2005,在 [Linked Servers] » [Providers] 树形视图中右击 SAOLEDB.12 提供程序并选择 [Properties]。确保选中 [Allow Inprocess] 复选框。如果未选择 [Inprocess] 选项,则查询将失败。

 ♦  使用脚本设置链接服务器
  • 可以通过类似以下方法用 SQL Server 脚本来设置链接服务器。在 SQL Server 下运行脚本前先对其进行适当更改。应该选择新的链接服务器名称(示例中使用 SADATABASE)、数据源名称(示例中使用 SQL Anywhere 12 Demo)以及远程用户 ID 和口令。



    USE [master]
    GO
    EXEC master.dbo.sp_addlinkedserver @server=N'SADATABASE', 
         @srvproduct=N'SQL Anywhere', @provider=N'SAOLEDB.12', 
         @datasrc=N'SQL Anywhere 12 Demo'
    GO
    EXEC master.dbo.sp_serveroption @server=N'SADATABASE', 
         @optname=N'rpc', @optvalue=N'true'
    GO
    EXEC master.dbo.sp_serveroption @server=N'SADATABASE', 
         @optname=N'rpc out', @optvalue=N'true'
    GO
    -- Set remote login
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'SADATABASE', 
         @locallogin = NULL , @useself = N'False', 
         @rmtuser = N'DBA', @rmtpassword = N'sql'
    GO
    -- Set global provider "allow in process" flag
    EXEC master.dbo.sp_MSset_oledb_prop N'SAOLEDB.12', N'AllowInProcess', 1