sqlserver新建oracle发布是咋回事,SQLServer创建链接服务器对象链接oracle
打开SQL Server Management Studio 进入Server Objects 列表,右键Linked
Servers,点击“New Linked Server...”
在General 界面中填写下面几项内容:
Linked server: 填写Linked Server 名称
Provider:选择Microsoft OLE DB Provider for Oracle
Product name:填写Oracle
Data source:填写上面提到的数据库别名ORADB
(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.1.1)(PORT=1521))(CONNECT_DATA=(SID=Service_Name)));User
Id=name;Password=pwd
点击Security ,点选“Be made using this security context”,假设Oracle
数据库有一个名称为admin 的用户ID,在“Remote login”中输入访问帐号,点击“OK”结束创建。
完成后Linked Servers 中会看到刚创建的Oracle 数据库链接。
访问Oracle
接下来就可以在SQL Server 端访问Oracle 数据库了,查询语法如下:
SELECT * FROM
LINKED_NAME..ACCOUNT_NAME.TABLE_NAME;
注:这种方访问方法,要求ACCOUNT_NAME为大写,否则查询不到。
结合上面的实例,假如要查询admin 用户下jobs 表的内容,则相应SQL 语句应为:
SELECT * FROM ORASVR..ADMIN.JOBS;
使用上述方法进行数据查询时,若Oracle 表有NUMBER 列时会出现转化错误,这时可以将NUMBER
类型转化为字符串(也有将该列属性修改成NUMBER(10),为NUMBER 列设定好位数)。考虑到View
查询等因素个人感觉还是转为字符串的方式较为通用。
当然如果查询的列过多,每个NUMBER 列都转为VARCHAR 的话工作量也的确不小,这时最好的方法就是使用OPENQUERY
函数:
SELECT * FROM OPENQUERY(LINKED_NAME,'SELECT * FROM
TABLE_NAME');
按照OPENQUERY 的语法上面SQL 语句应变为:
SELECT * FROM OPENQUERY(ORASVR,'SELECT * FROM JOBS');
这样我们就可以在SQL Server 端方便的访问Oracle 数据库,并做相应的数据调整。