sqlserver客户端连接工具有哪些(查看odbc数据源配置)

导读:上次讲到《SQL server 2008一些常见配置之一(基本配置)》,基本了解到如何配置账户、远程登录、分配内存等操作,今天我们一起来学习一下SQL server 2008如何访问其他数据库(链接服务器设置),如Oracle、MySQL、其他SQL server服务器。

一、访问Oracle数据库

Oracle是目前排名第一的数据库,一般对数据安全和性能要求极高的公司都会选择它。下面一起学习一下如何通过SQL server来访问Oracle数据库数据和一些注意事项。

sqlserver客户端连接工具有哪些(查看odbc数据源配置)

DB-Engines 发布了 2018 年数据库排名,排前10 名的数据库中,Oracle 稳居第一。

(一)先在SQL server服务器安装Oracle客户端

要访问Oracle数据库,必须先安装Oracle客户端,并配置好tnsnames.ora文件,SQL server也不例外,具体安装办法可以百度【Oracle客户端安装办法】,比较简单,这里不做赘述。

假设tnsnames.ora文件内容为

itower_241 = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 101.241.241.241)(PORT = 1521)) ) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = prod) ) )

(二)通过增加数据源(ODBC)办法验证Oracle服务器是否可以正常访问。

1.打开路径:控制面板->管理工具->数据源(ODBC)

或者直接运行:cmd->ODBC

注意:如果Oracle客户端安装的是32位的,必须选择32位的ODBC(重要)

2.Oracle客户端正常安装的话,这里就会出现“Oracle in OraDB12Home1”选项。

3.注意填写规范,TNS这里填写的是tnsnames.ora里面的服务器配置。数据源名、描述可以随便起一个或者不填,现在只是为了验证是否可以正常访问Oracle数据库,我们不通过ODBC名字来访问,而是通过tnsnames.ora配置的服务器名字来访问。直接点“测试连接”,输入账户和密码,点确认(OK)。

4.测试成功提示:

如果测试失败,请根据失败提示仔细检查tnsnames.ora和Oracle客户端安装情况。

5.或者通过PL/SQL来验证:

(三)在SQL server配置Oracle链接服务器

服务器对象->链接服务器(右键)->新建链接服务器

1.链接服务器(名称):ORACLE1(在SQL查询时用到)

2.访问接口:选择Oracle Provider for DLE DB

3.数据源:为tnsnames.ora所配置的Oracle服务器名称

注意:这里的数据源也可以使用通过ODBC设置的数据源,殊途同归。

4.安全性:输入Oracle账户和密码

5.点确定后,即开始验证接口的合规性和合法性。如果验证通过的话会自动关闭这个窗口,并在链接服务器出现【ORACLE1】这个接口,说明配置基本完成,如果没通过会出现具体的错误提示。

(1)可以逐层打开查看Oracle服务器对象。

(2)在这里可以查看到完整的建立链接服务器的SQL脚本

/******Object:LinkedServer[ORACLE1]ScriptDate:09/17/201812:48:37******/EXECmaster.dbo.sp_addlinkedserver@server=N’ORACLE1′,@srvproduct=N’ORACLE’,@provider=N’OraOLEDB.Oracle’,@datasrc=N’itower_241’/*Forsecurityreasonsthelinkedserverremoteloginspasswordischangedwith########*/EXECmaster.dbo.sp_addlinkedsrvlogin@rmtsrvname=N’ORACLE1′,@useself=N’False’,@locallogin=NULL,@rmtuser=N’ITOWER_VIF_gxfgs’,@rmtpassword=’########’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’collationcompatible’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’dataaccess’,@optvalue=N’true’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’dist’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’pub’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’rpc’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’rpcout’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’sub’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’connecttimeout’,@optvalue=N’0’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’collationname’,@optvalue=nullGOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’lazyschemavalidation’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’querytimeout’,@optvalue=N’0’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’useremotecollation’,@optvalue=N’true’GOEXECmaster.dbo.sp_serveroption@server=N’ORACLE1′,@optname=N’remoteproctransactionpromotion’,@optvalue=N’true’GO

注意:当然,这里的@rmtpassword 显示的是加密后的数据,还需使用者自行修改为真正的密码。

6.访问数据验证:

(1)SQL server访问Oracle的语法一般有两种方式:

1)PL/SQL语法格式:这里使用的是PL/SQL的语法,比如PL/SQL特有的rownum、rowid等在这里都能用上。

select*fromopenquery(ORACLE1,’selectrowid,a.*fromitower.v_if_prov_org_gxfgsawhererownum<100′);

–查看Oracle版本select*fromopenquery(ORACLE1,’select*fromv$version’);

注意:这里用到的是 ORACLE1 这个名称,在建立链接服务器的时候要特别留意。

2)SQL server语法格式:

selecttop10*from[ORACLE1]..[ITOWER].[V_IF_PROV_ORG_GXFGS]go

如果忘记语法,可以这样去查看:

(2)注意事项:SQL server不支持Oracle一些特殊字段类型,如果Oracle存在特殊要极其留意。

1)访问失败的例子一:

select*fromopenquery(ORACLE1,’select*fromitower.v_if_prov_station_gxfgswhererownum<100′);

2)访问失败的例子二:

selecttop10*from[ORACLE1]..[ITOWER].v_if_prov_station_gxfgs

3)此时,表名(V_IF_PROV_STATION_GXFGS)应用大写

selecttop10*from[ORACLE1]..[ITOWER].V_IF_PROV_STATION_GXFGS

这样可以得到准确的错误提示:GEOMETRY 这个字段的数据类型SQL server不支持。在获取这个表信息的时候,就应避开或转换为SQL server支持的格式。

7.或者你很懒干脆不想建立链接服务器,想直接访问Oracle,可以通过函数openrowset来实现。

select*fromopenrowset(‘OraOLEDB.Oracle’,’itower_241′;'<Oracle账户>’;'<Oracle账户密码>’,’select*fromitower.v_if_prov_org_gxfgs’)

注意:<Oracle账户> <Oracle账户密码>需要您手工填写。

8.删除链接服务器:删除就比较简单了,在链接服务器名称->右键->删除即可,或者使用脚本删除:

USE[master]GO/******Object:LinkedServer[ORACLE1]ScriptDate:09/17/201813:02:24******/EXECmaster.dbo.sp_dropserver@server=N’ORACLE1′,@droplogins=’droplogins’GO

SQL server 访问Oracle数据库就一起学习到这里。

二、访问MySQL数据库

MySQL数据库由于免费性和开源性,近年来普及非常迅速,MySQL还支持linux下的安装,所以得到很多人的青睐,其排名第二名,有赶上Oracle数据库的趋势。

(一)先安装MySQL驱动。

建议在官网下载:

http://dev.mysql.com/downloads/connector/odbc/

(二)在ODBC增加MYSQL数据源(上面有详细讲述,这里简略说明),测试是否可以正常访问MySQL服务器。

1.注意点:

(1)是系统DSN,不是用户DSN。

(2)驱动程序选择:MYSQL ODBC 5.3 Unicode DRIVER

2.输入数据源名称、IP、账户和密码,并点测试(test)。

测试成功后,可以在这里选择默认数据库。

(二)在SQL server配置MySQL server的链接服务器

1.链接服务器(名称):TO_MYSQL34(在SQL查询时用到)

2.访问接口:选择Microsoft OLE DB Provider for ODBC Drivers

3.数据源:填写ODBC所配置的数据源名称 MYSQL34

注意:如果不配置ODBC的话,也可以直接在“访问接口字符串”进行设置,同时“数据源”留空,但这样容易暴露数据库账户和密码,不利于账户安全性管理:

Driver={MySQL ODBC 5.3 Unicode Driver};Server=<MySQL服务器IP>;Database=<实例名>;User=<数据库账户>;Password=<数据库密码>;Option=3;

4.安全性设置

5.点确定后,即开始验证接口的合规性和合法性。如果验证通过的话会自动关闭这个窗口,并在链接服务器出现【TO_MYSQL34】这个接口,说明配置基本完成,如果没通过会出现具体的错误提示。

6.创建脚本

/******Object:LinkedServer[TO_MYSQL34]ScriptDate:09/17/201816:58:22******/EXECmaster.dbo.sp_addlinkedserver@server=N’TO_MYSQL34′,@srvproduct=N’MySQL’,@provider=N’MSDASQL’,@datasrc=N’MYSQL34’/*Forsecurityreasonsthelinkedserverremoteloginspasswordischangedwith########*/EXECmaster.dbo.sp_addlinkedsrvlogin@rmtsrvname=N’TO_MYSQL34′,@useself=N’False’,@locallogin=NULL,@rmtuser=N’ttgl’,@rmtpassword=’########’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’collationcompatible’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’dataaccess’,@optvalue=N’true’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’dist’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’pub’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’rpc’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’rpcout’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’sub’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’connecttimeout’,@optvalue=N’0’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’collationname’,@optvalue=nullGOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’lazyschemavalidation’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’querytimeout’,@optvalue=N’0’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’useremotecollation’,@optvalue=N’true’GOEXECmaster.dbo.sp_serveroption@server=N’TO_MYSQL34′,@optname=N’remoteproctransactionpromotion’,@optvalue=N’true’GO

注意:当然,这里的@rmtpassword 显示的是加密后的数据,还需使用者自行修改为真正的密码。

7.访问数据验证:和访问Oracle语法差不多,又有一定区别。

–查看版本select*fromopenquery(TO_MYSQL34,’select@@version’);

–查询selecttop10*fromopenquery(TO_MYSQL34,’select*fromzxhc_image’);–理论上可以跨服务器进行增、删、改操作,但极不赞同这么操作,要修改的话建议直接到对端服务器去修改。–修改updateopenquery(TO_MYSQL34,’select*fromzxhc_imagewhereimage_id=1319and1=2′)set[status]=’2′;–orupdateopenquery(TO_MYSQL34,’select*fromzxhc_image’)set[status]=’2’whereimage_id=1319;–添加insertintoopenquery(TO_MYSQL34,’select*fromzxhc_imagewhere1=0′)values(’11’,’22’,’22’);–删除deletefromopenquery(TO_MYSQL34,’select*fromzxhc_imagewhereimage_id=1319′);

8.删除链接服务器脚本(或链接服务器名称->右键->删除)

USE[master]GO/******Object:LinkedServer[TO_MYSQL34]ScriptDate:09/17/201816:58:15******/EXECmaster.dbo.sp_dropserver@server=N’TO_MYSQL34′,@droplogins=’droplogins’GO

三、访问其它SQL server数据库

SQL server数据库排名第三名,是微软公司的产品,只能在Windows上安装,但对同样是微软公司产品的Execl支持相当好,这是一个重要优势,适合初学者选用。

(一)在SQL server配置其它SQL server的链接服务器

1.常规配置:链接服务器名称为

1.链接服务器(名称):TO_SQL33(在SQL查询时用到)

2.访问接口:选择Microsoft OLE DB Provider for SQL Server

3.数据源:直接填写SQL server服务器IP即可

4.安全性:输入账户和密码,确定

5.点确定后,即开始验证接口的合规性和合法性。如果验证通过的话会自动关闭这个窗口,并在链接服务器出现【TO_SQL33】这个接口,说明配置基本完成,如果没通过会出现具体的错误提示。

6.创建脚本

/******Object:LinkedServer[TO_SQL33]ScriptDate:09/17/201815:39:50******/EXECmaster.dbo.sp_addlinkedserver@server=N’TO_SQL33′,@srvproduct=N’MySQL’,@provider=N’SQLNCLI’,@datasrc=N’10.8.1.33’/*Forsecurityreasonsthelinkedserverremoteloginspasswordischangedwith########*/EXECmaster.dbo.sp_addlinkedsrvlogin@rmtsrvname=N’TO_SQL33′,@useself=N’False’,@locallogin=NULL,@rmtuser=N’tower’,@rmtpassword=’########’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’collationcompatible’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’dataaccess’,@optvalue=N’true’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’dist’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’pub’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’rpc’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’rpcout’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’sub’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’connecttimeout’,@optvalue=N’0’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’collationname’,@optvalue=nullGOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’lazyschemavalidation’,@optvalue=N’false’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’querytimeout’,@optvalue=N’0’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’useremotecollation’,@optvalue=N’true’GOEXECmaster.dbo.sp_serveroption@server=N’TO_SQL33′,@optname=N’remoteproctransactionpromotion’,@optvalue=N’true’GO

注意:当然,这里的@rmtpassword 显示的是加密后的数据,还需使用者自行修改为真正的密码。

7.访问数据验证:和访问Oracle语法基本一致。

–查看版本select*fromopenquery(TO_SQL33,’select@@version’);

–查询select*fromopenquery(TO_SQL33,’selecttop10*from[dbo].[zy_站址]’);selecttop10*from[TO_SQL33].[tower].[dbo].[zy_站址];–理论上可以跨服务器进行增、删、改操作,但极不赞同这么操作,要修改的话建议直接到对端服务器去修改。–修改updateopenquery(TO_SQL33,’select*from[dbo].[zy_站址]where[站址编码]=”45010200000003”’)set[站址名称]=’2′;–orupdateopenquery(TO_SQL33,’select*from[dbo].[zy_站址]’)set[站址名称]=’2’where[站址编码]=’45010200000003′;–添加insertintoopenquery(TO_SQL33,’select*from[dbo].[zy_站址]where1=0′)values(’11’,’22’,’22’);–删除deletefromopenquery(TO_SQL33,’select*from[dbo].[zy_站址]where[站址编码]=”45010200000003”’);

8.删除链接服务器脚本(或链接服务器名称->右键->删除)

USE[master]GO/******Object:LinkedServer[TO_SQL33]ScriptDate:09/17/201815:31:07******/EXECmaster.dbo.sp_dropserver@server=N’TO_SQL33′,@droplogins=’droplogins’GO

四、题外话

人,是个奇怪的动物,整天想东想西,搞的脑子里面整天都乱哄哄的。睡觉不是睡觉,吃饭不是吃饭,让忙碌多年的心静下来其实很难。那么,什么是静心?

释迦摩说:应如是住,如是降伏其心。

奥修说得更加易懂:不要与头脑抗争,不要控制头脑,不要专注。不要有任何干涉,只要静静地观照着头脑,不要有任何判断或评价。放松、观照和不判断,渐渐、渐渐地,就会有很深的宁静降临到你身上。

清.傅儒-柳体小楷精品《金刚经》

(完)

发表评论

登录后才能评论