可创建一个能使用 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 提供程序的链接服务器。
对于 Microsoft SQL Server 2005,启动 Microsoft SQL Server Management Studio。对于其它版本的 SQL Server,此应用程序的名称和设置链接服务器的步骤可能会有所不同。
在 [Object Explorer] 窗格中,在树形视图中向下展开到 [Server Objects] » [Linked Servers]。右击 [Linked Servers] 区域并选择 [New Linked Server]。
填充 [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])应当留空。
不要在 [Provider String] 字段中指定数据库口令作为连接参数(因为它是明文显示的),而应该在 [Security] 页面中填写。
在 SQL Server 2005 中,选择 [Be made using this security context] 选项并填写 [Remote login] 和 [With password] 字段(口令以星号显示)。
选择 [RPC] 和 [RPC Out] 选项。
完成该操作的方法因 Microsoft SQL Server 的版本而异。在 SQL Server 2000 中,必须为这两个选项选中两个复选框。这些复选框位于 [Server Options] 页上。在 SQL Server 2005 中,这些选项具有 True/False 设置。确保将它们设置为 True。如果想要在 SQL Anywhere 数据库中执行存储过程/函数调用,并成功地传递参数(传入和传出),则必须设置 Remote Procedure Call (RPC) 选项。
选择 [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 |
![]() |
使用DocCommentXchange 讨论此页。
|
版权 © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |