-- Adding linked server: exec sp_addlinkedserver @server = 'Sybase Linked Server Name' , @srvproduct = 'Sybase', @provider = 'MSDASQL', @datasrc = 'Sybase System DSN' -- Adding linked server login: sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'Sybase Linked Server Name', @rmtuser = 'User Name', @rmtpassword = 'Strong Password'
EXEC sp_linkedservers
EXEC sp_addlinkedserver @server = 'Sybase Linked Server Name', @srvproduct='Sybase' @provider = 'MSDASQL' , @provstr = 'DRIVER={<Driver Name};SRVR=Sybase Server Name;UID=User Name;PWD=Strong Password'
exec sp_tables_ex 'SybaseLinkedServerName'
DBCC TRACEON(3604, 7300) go SELECT * FROM SybaseLinkedServerName.DatabaseName.Owner.TableName go
DBCC TRACEON(3604, 7300) go SELECT * FROM OPENQUERY(SybaseLinkedServerName, "Select * from DatabaseName.Owner.TableName") go
DBCC TRACEON(7300)
-- Adding linked server:
exec sp_addlinkedserver @server = 'server03' ,
@srvproduct = 'Sybase',
@provider = 'MSDASQL',
@datasrc = 'SQL Anywhere 12 Demo'
exec sp_addlinkedsrvlogin @useself='false ', @rmtsrvname = 'demo12',
@rmtuser = 'dba',
@rmtpassword = 'sql'
EXEC sp_linkedservers
exec sp_tables_ex 'demo12' --可以读取读取sybase asa 数据库表
--使用dbcc读取
DBCC TRACEON(3604, 7300)
go
SELECT * FROM OPENQUERY(demo12, 'Select * from demo12.GROUPO.SalesOrders')
go
--使用单独可以读取数据
SELECT * FROM OPENQUERY(demo12, 'Select * from demo12.dba.part')
___________________________________________________________________________________________________________________________________________
方法二:不使用ODBC直接使用 sysbase anywhere 的ole db 驱动来完成工作
select * from sybase..dba.part
需要配置信息为
如不配置会出现错误提示为:
结果如下
如果使用远程链接服务器插入操作那么他的语法为:
insert into sybase..dba
查询语句使用:以下视图处理
SELECT customer_id AS 客户代号, short_name AS 客户简称, full_name AS 客户全称, linkman AS 联系人, telephone AS 电话, mob_no AS 手机,
cust_add AS 客户详细地址
FROM DEMO12..dba.customer AS customer_1
WHERE (customer_id NOT IN
(SELECT F1047
FROM dbo.tabDIYTable101))
——————————————————————————————————————————————————————————————————————————————
【SQL Server数据迁移】32位的机器:SQL Server中查询ORACLE的数据
从SQL Server中查询ORACLE中的数据,可以在SQL Server中创建到ORACLE的链接服务器来实现的,但是根据32位 、64位的机器和软件,需要用不同的驱动程序来实现。
在32位的机器上,通过访问接口:Microsoft OLE DB Provide for Oracle,来实现。
1、机器环境和软件环境
机器是一台虚拟机,安装了windows xp,SQL Server 20008R2,Oracle 10g 10.2.0.1.0。
2、ORACLE环境的设置
连接oracle:
修改scott用户的密码为tiger,并给账户解锁,尝试登录,查询表:
查看listener.ora是否正确:
要特别注意里面的:
(SID_DESC =
(GLOBAL_DBNAME=orcl)
(ORACLE_HOME = C:\oracle\product\10.2.0\db_1)
(SID_NAME =orcl)
)
另外,查看tnsnames.ora是否正确:
特别是:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
查看监听器的状态是否正常:
3、设置链接服务器。
需要特别注意的是,数据源orcl指的是:tnsnames.ora文件中的orcl服务名。
第一步,选择“新建链接服务器”:
第二步,一定要选择 Microsoft OLE DB Provide for Oracle:
第三步,输入产品:oracle,数据源:orcl:
第四步,输入oracle的用户名和密码,这个需要根据实际情况设置,输入完后,点确定就好:
4、测试查询
返回结果:
5、用代码实现:
6、通过openrowset函数来实现,更简单。