可创建一个能使用 SQL Anywhere OLE DB 提供程序来获得对 SQL Anywhere 数据库的访问权限的 Microsoft 链接服务器。可使用 Microsoft 的表引用语法(由四部分组成)或 Microsoft 的 OPENQUERY SQL 函数来发出 SQL 查询。下面就是一个由四部分组成的语法的示例。
SELECT * FROM SADATABASE.demo.GROUPO.Customers |
在本例中,SADATABASE 是链接服务器的名称,demo 是目录或数据库名,GROUPO 是 SQL Anywhere 数据库中的表所有者,而 Customers 是 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 提供程序的链接服务器。
若使用 Windows Vista 或更高版本的 Windows,则设置链接服务器之前需要注意几个事项。SQL Server 作为系统上的服务运行。根据服务在 Windows Vista 或更高版本上的设置方式,服务可能无法使用共享内存连接,无法启动服务器,以及无法访问用户数据源定义。例如,作为网络服务登录的服务无法启动服务器,无法通过共享内存连接,也无法访问用户数据源。这些情况下,SQL Anywhere 服务器必须提前启动并且必须使用 TCPIP 通信协议。此外,如果要使用数据源,则该数据源必须是系统数据源。
对于 Microsoft SQL Server 2005/2008,启动 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] 选项,并从 [Provider] 列表中选择 [SQL Anywhere OLE DB Provider 12]。
[Product Name] 字段可以填入任意名称(例如 SQL Anywhere 或您的应用程序名称)。
[Data Source] 字段可包含 ODBC 数据源名 (DSN)。这是一个便捷选项,不一定非得包含数据源名。如果使用系统 DSN,则必须是适用于 32 位 SQL Server 版本的 32 位 DSN,或者是适用于 64 位 SQL Server 版本的 64 位 DSN。
Data Source: SQL Anywhere 12 Demo |
[Provider String] 字段可以包含其它连接参数,例如 UserID (UID)、ServerName (Server) 和 DatabaseFile (DBF)。
Provider string: Server=myserver;DBF=sample.db |
[Location] 字段可以包含与 SQL Anywhere Host 连接参数等效的内容(例如,localhost:4444 或 10.25.99.253:2638)。
Location: AppServer-pc:2639 |
[Initial Catalog] 字段可以包含要连接的数据库的名称(例如,demo)。此数据库必须已经处于打开状态。
Initial Catalog: demo |
上述最后四个字段与 [Security] 页面中的用户 ID 和口令的组合必须包含足够多的信息才能成功连接到数据库服务器。
不要在 [Provider String] 字段中指定数据库用户 ID 和口令作为连接参数(因为它是以纯文本显示的),而应该在 [Security] 页面中填写。
在 SQL Server 2005/2008 中,单击 [Be made using this security context] 选项并填写 [Remote login] 和 [With password] 字段(口令以星号显示)。
转到 [Server Options] 页面。
启用 [RPC] 和 [RPC Out] 选项。
完成该操作的方法因 Microsoft SQL Server 的版本而异。在 SQL Server 2000 中,必须为这两个选项选中两个复选框。在 SQL Server 2005/2008 中,这些选项具有 True/False 设置。确保将它们设置为 True。如果想要在 SQL Anywhere 数据库中执行存储过程/函数调用,并成功地传递参数(传入和传出),则必须设置 Remote Procedure Call (RPC) 选项。
选择 [Allow Inprocess] 提供程序选项。
完成该操作的方法因 Microsoft SQL Server 的版本而异。在 SQL Server 2000 中有一个 [Provider Options] 按钮,可将您引至能选择此选项的页面。对于 SQL Server 2005/2008,在 [Linked Servers] » [Providers] 下右击 SAOLEDB.12 提供程序并单击 [Properties]。确保选中 [Allow Inprocess] 复选框。如果未选择 [Inprocess] 选项,则查询将失败。
可以通过类似以下方法用 SQL Server 脚本来设置链接服务器。在 SQL Server 上运行脚本前先对其进行适当更改。应选择新的链接服务器名称(本例中使用 SADATABASE)、可选的数据源名称(本例中使用 SQL Anywhere
12 Demo)、可选的提供程序字符串(本例中使用 N'host=localhost:4444;server=myserver;dbn=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', @provstr=N'host=localhost:4444;server=myserver;dbn=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讨论此页。
|
版权 © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |