一、 开启SQL Server 2008远程连接---如果已经开启,则可以跳过1. 打开SSMS,用Windows身份连接数据库后,右键点击数据库引擎,选择“属性”2. 左侧选择“安全性”,选中右侧的“SQL Server和Windows身份验证模式”以启用混合登录模式3. 左侧选择“连接”,勾选“允许远程连接此服务器”,然后点“确定”4. 打开SSCM,选中左侧的“SQL Server服务”,确保右侧的“SQL Server”以及“SQL Server Browser”正在运行5. 选中左侧“SQL Server网络配置”下的“MSSQLSERVER的协议”,右侧的TCP/IP默认是“Disabled”,双击或右键点击选“属性”,在“协议”选项卡中将其修改为“Enabled”,在“IP Address”选项卡,设置端口“1433”6. 选中左侧“SQL Native Client 10.0配置”下的“客户端协议”,将“TCP/IP”也修改为“Enabled”
7. 重新启动SQL Server 2008
8. 此时应该可以使用了,但还是要确认一下防火墙。将SQLServr.exe(C:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\Binn\sqlservr.exe)添加到允许的列表中
本人记录下SQLSERVER2008 R2 创建链接服务器至ORACLE 11GR2,中间也花费不少的时间,网上也有很多的方法 ,但是从2005以后的SQLSERVER 都不同于以前的方法了。
1,首先确保SQLSERVER 2008 服务器版本与ORACLE11GR2客户端的安装文件版本一致。
本人是使用WIN8 X64 系统,SQLERVER2008 也是X64。
2,去ORACLE官网下载 64位INTANTAS CLIENT 。安装完毕。
3,设置ORACLE_home 指向安装的客户端CLINET_1目录.(本人目录 是D:\app\OracleInstants\product\11.2.0\client_1)
4,设置PATH环境变量,分别需要添加 D:\app\OracleInstants\product\11.2.0\client_1 和D:\app\OracleInstants\product\11.2.0\client_1\bin.
其中,bin目录下有使用到OraOLEDBPUS1.dll
项目中用到sqlserver去连接oracle,通过sqlserver可以直接操作oracle.
1、安装oracle客户端软件,并配置:
1)打开Net Manager,新增服务名:
2)选择网络协议:
3)填写主机名和端口号:
4)填写服务名:
5)下一步,进行测试:
6)测试结果:
2、设置sqlserver:
1)打开企业管理器,选择服务器对象--链接服务器
2)右键选择"新建链接服务器"
3)常规选项,填写内容。
链接服务器:定义链接名称;
服务器类型--其他数据源,指定程序名称为:Microsoft OLE DB Provider for Oracle;
产品名称:Oracle(可不填);
数据源:orcl(oracle新建的服务名);
访问接口字符串:UID=username;PWD=userpasswd(或MSDAORA);
4)选择安全性:
选择使用此安全上下文进行连接,输入用户名,密码。
5)连接中可看到表和视图:
整个过程基本完成!
3、SQL的写法有两种:
a) 使用T-SQL语法:
SELECT * FROM ERP.BAS_ITEM_CLASS
注意在,SQL查询分析器中输入SQL语句时注意中文的全角半角切换方式!
注意:在这种方式下取数,如果在oracle中声明表的时候表明用了引号,此处的表明必须和oracle中一致,否则全部使用大写,不然会提示找不到表。(此处浪费时间若干。。。)
b) 使用PLSQL语法:
SELECT * FROM OPENQUERY(orcl,'SELECT * FROM ERP.BAS_ITEM_CLASS ')
c)第二种访问方式比第一种约快50%;第二种访问方式跟直连ORACLE的速度相当;第一种访问方式可能会导致一些意外错误,如:
该表不存在,或者当前用户没有访问该表的权限等等一些信息。
d)如果需要访问的column中使用没有精度的数据类型,这两种查询方式都可能会报错,这是ORACLE的BUG,无法修正,只能通过查询语句的特殊处理规避这一问题:
OLE DB 提供程序 'OraOLEDB.Oracle' 为列提供的元数据不一致。执行时更改了元数据信息。