sql中如何调用另一台服务器的数据库查询数据呢?

上传人:xin****18 文档编号:117032314 上传时间:2022-07-07 格式:DOCX 页数:8 大小:18.59KB
收藏 版权申诉 举报 下载
sql中如何调用另一台服务器的数据库查询数据呢?_第1页
第1页 / 共8页
sql中如何调用另一台服务器的数据库查询数据呢?_第2页
第2页 / 共8页
sql中如何调用另一台服务器的数据库查询数据呢?_第3页
第3页 / 共8页
资源描述:

《sql中如何调用另一台服务器的数据库查询数据呢?》由会员分享,可在线阅读,更多相关《sql中如何调用另一台服务器的数据库查询数据呢?(8页珍藏版)》请在装配图网上搜索。

1、sql中如何调用另一台服务器的数据库查询数据呢?建立链接服务器,然后查询时使用完整路径servername.dbname.schemaname.objectnamesp_addlinkedserverserver=CARDSRV,srvproduct=,catalog=iHRP,provider=SQLOLEDB,provstr=DRIVER=SQLServer;lnitialCatalog=iHRP;SERVER=192.168.0.32;UID=sa;PWD=;其中server名称随便取,catalog为数据库名,provider为数据库驱动,provstr为连接字符串然后使用sp_lin

2、kedservers,查看此服务器是否已经成功注册为链接服务器,如果已经注册成功,则使用EXECsp_addlinkedsrvloginCARDSRV,false,注册login帐号,然后你就可以执行一个Sql语句,试试看看是否可以从链接服务器中操作数据了,selecttop10*fromCARDSRV.iHRPdbo.Dept_Class就是从刚才我设置的链接服务器TEST中的一个表:Dept_Class中查询数据。用openrowset连接远程SQL或插入数据-如果只是临时访问,可以直接用openrowset-查询示例select*fromopenrowset(SQLOLEDB,sql服务

3、器名;用户名;密码,数据库名.dbo.表名)-导入示例select*into表fromopenrowset(SQLOLEDB,sql服务器名;用户名;密码,数据库名.dbo.表名)-创建链接服务器execsp_addlinkedserversrv_lnk,SQLOLEDB,远程服务器名或ip地址execsp_addlinkedsrvloginsrv_lnk,false,null,用户名,密码go-查询示例select*fromsrv_lnk.数据库名.dbo.表名-导入示例select*into表fromsrv_lnk.数据库名.dbo.表名-以后不再使用时删除链接服务器execsp_drop

4、serversrv_lnk,droploginsgo-下面的示例访问来自某个表的数据,该表在SQLServer的另一个实例中。SELECT*FROMOPENDATASOURCE(SQLOLEDB,DataSource=ServerName;UserID=MyUID;Password=MyPass).Northwind.dbo.Categories下面是个查询的示例,它通过用于Jet的OLEDB提供程序查询Excel电子表格。SELECT*FROMOpenDataSource(Microsoft.Jet.OLEDB.4.0,DataSource=c:Financeaccount.xls;User

5、ID=Admin;Password=;Extendedproperties=Excel5.0).xactions由于项目需要,在开发过程遇上跨数据库服务器访问数据的问题.在网络上一搜,资料确实不少,不过解决自己的问题也花了大半天的时候,在这里花些时间总结一下.1. 确立问题由于需要进行跨数据库服务器的查询操作,所以我个人把其定位于分布式查询数据的问题.2. 解决方案第一个概念.链接服务器.链接服务器一般用来处理分布式查询。当客户端应用程序通过链接服务器执行分布式查询时SQLServer将分析该命令,并向OLEDB发送行集请求。行集请求的形式可以是对提供程序执行查询或从提供程序打开基表。分布式查

6、询可以访问来自多种异类数据源的数据,而这些数据可存储在相同或不同的计算机上。Microsoft?SQLServer?2000通过使用OLEDB(Microsoft通用数据访问应用程序接口(API)规范)支持分布式查询。链接服务器配置允许Microsoft?SQLServer?对其它服务器上的OLEDB数据源执行命令。链接服务器具有以下优点:远程服务器访问。对整个企业内的异类数据源执行分布式查询、更新、命令和事务的能力。能够以相似的方式确定不同的数据源。链接服务器组件链接服务器的定义指定了OLEDB提供程序和OLEDB数据源。OLEDB提供程序是管理特定数据源和与特定数据源进行交互的动态链接库(

7、DLL)。OLEDB数据源标识可通过OLEDB访问的特定数据库。尽管通过链接服务器的定义所查询的数据源通常是数据库,但也存在适用于多种文件和文件格式的OLEDB提供程序,包括文本文件、电子表格数据和全文内容检索结果。下表说明了最常用于SQLServer的OLEDB提供程序和数据源示例。OLEDB数据源SQLServer实例mdb数据库文件的路径名指向某个具体数据库的ODBC数据指向oracle数据库的SQL*Net别名能够对其执行属性搜索或全文检索OLEDB提供程序用于SQLServer的MicrosoftOLEDB提供程序用于Jet的MicrosoftOLEDB提供程序用于ODBC的Micr

8、osoftOLEDB提供程序源名称用于oracle的MicrosoftOLEDB提供程序用于索引服务的MicrosoftOLEDB提供程序的内容文件说明SQLServer只针对分别用于SQLServer、Jet、Oracle、索引服务和ODBC的MicrosoftOLEDB提供程序进行了测试。然而,SQLServer分布式查询旨在与任何实现了必需的OLEDB接口的OLEDB提供程序一起使用。为了使数据源能够通过链接服务器返回数据,那个数据源的OLEDB提供程序(DLL)必须位于SQLServer所在的服务器上。链接服务器一般用来处理分布式查询。当客户端应用程序通过链接服务器执行分布式查询时SQ

9、LServer将分析该命令,并向OLEDB发送行集请求。行集请求的形式可以是对提供程序执行查询或从提供程序打开基表。管理链接服务器的定义设置链接服务器时,请注册SQLServer的连接信息和数据源信息。完成注册后,该数据源总可以用单个逻辑名称(即实例名)引用。可以使用存储过程或SQLServer企业管理器来创建或删除链接服务器的定义。使用存储过程:使用sp_addlinkedserver创建链接服务器的定义。若要查看有关给定的SQLServer实例中定义的链接服务器的信息,请使用sp_linkedservers。有关更多信息,请参见sp_addlinkedserver和sp_linkedser

10、vers。使用sp_dropserver删除链接服务器的定义。还可以使用此存储过程删除远程服务器。使用SQLServer企业管理器:使用SQLServer企业管理器控制台树和链接服务器节点(在安全性文件夹内)来创建链接服务器的定义。为链接服务器定义名称、提供程序属性、服务器选项和安全选项。有关各种为不同的OLEDB数据源设置链接服务器的方式以及要使用的参数值的更多信息,请参见sp_addlinkedserver。通过右击链接服务器并单击属性命令,可编辑链接服务器的定义。通过右击链接服务器并单击删除命令,可删除链接服务器的定义。当对链接服务器执行分布式查询时,请对每个要查询的数据源指定完全合法的

11、、由四部分组成的表名。这个由四部分组成的名称的格式应是:linked_server_name.catalog.schema.object_name。众所周知,在大型的数据库系统设计中,为了提升效率,不可避免的要将不用的业务放在不同的数据实例上,因此我们使用到了链接服务器,链接服务器为大家在不同的服务之间进行分布式数据操作提供了便利。本例子基于windows2003操作系统,Sqlserver2000(sp4)数据库。首先要打开你本地服务器和远程服务器的MSDTC:开始-MicrosoftSQLServer-服务管理器-选择服务中的DistributedTransactionCoordinato

12、r(此即DTC),点击“启动”按钮,启动MSDTC.打开以后,在本地服务器上注册远程服务器的信息,创建linkedServer,操作代码如下:execsp_addlinkedserverFar_MDB,SQLOLEDB,YOIIO005,MDB然后使用sp_linkedservers,查看此服务器是否已经成功注册为链接服务器,如果已经注册成功,则使用sp_addlinkedsrvloginFar_MDB,false,null,sa,*,注册login帐号,然后你就可以执行一个Sql语句,试试看看是否可以从链接服务器中操作数据了,例如:SELECT*FROMOPENQUERY(Far_MDB,S

13、ELECT*FROMMDB_Member)这就是从我的链接服务器当中去查询MDB_Member表的数据备注:1、关于链接服务器的详细情况请参阅联机丛书中的sp_addlinkedserver、sp_addlinkedsrvlogin、sp_addserver、sp_dropserver、sp_serveroption、sp_linkedservers等系统级存储过程。2、关于此链接服务器的创建及其使用在不同环境下(全部内网服务器、一内网一公网服务器、全公网服务器)测试,均告通过。3、有时候在存储过程中访问链接服务器的时候可能会碰到如下的提示,必须要对ANSIwarning和ANSInulls进

14、行设置,这时候按照如下的方法进行设置:设置本地数据库的属性-连接-选上ANSIwarning和ANSInulls如何访问SQLServer数据库无论是从桌面Windows电脑上还是在PocketPC设备上访问SQLServer数据库,首先都需要建立数据库连接。使用VisualStudio2005开发桌面Windows应用时,开发人员可以从服务器资源管理器中拖拉数据表到窗体上,但是.NETCompactFramework不支持数据设计器。这意味着开发人员需要编程实现建立数据库连接。.NETCompactFramework的System.Data.SqlClient命名空间同样不支持跨服务器的事务

15、和连接池。设计移动应用解决方案时,应该将数据库事务限制发生在服务器上的单独数据库中。因为.NETCompactFramework的System.Data.SqlClient命名空间不支持数据库连接池,所以在PocketPC设备上建立SQLServer数据库连接时会产生一定的延时。在桌面Windows编程中,要求尽可能缩短保持与数据库连接的时间以及减少数据库连接次数。而在开发PocketPC上的数据库应用程序时,最佳策略是提前创建数据库连接,并尽量在整个应用程序生命周期内保持数据库连接来减少连接次数。下面通过设计开发一个用途广泛的PocketPC数据库应用程序,介绍如何访问服务器端数据。这个Po

16、cketPC应用程序需要引用System.Data.Common、System.Xml和System.Data.SqlClient命名空间。如何用sql语句进行跨库查询在机器B上的数据库database2中创建一个临时表#tmp,内容就是机器A上的数据库database里面的Table1。如何用sql语句完成?(不借用dts等)SQLcode-创建链接服务器execsp_addlinkedserverITSV,SQLOLEDB,远程服务器名或ip地址execsp_addlinkedsrvloginITSV,false,null,用户名,密码-查询示例select*fromITSV数据库名.db

17、o.表名-导入示例select*into表fromITSV数据库名.dbo.表名-以后不再使用时删除链接服务器execsp_dropserverITSV,droplogins-连接远程/局域网数据(openrowset/openquery/opendatasource)-1、openrowset-查询示例select*fromopenrowset(SQLOLEDB,sql服务器名;用户名;密码,数据库名.dbo.表名)-生成本地表select*into表fromopenrowset(SQLOLEDB,sql服务器名;用户名;密码,数据库名.dbo.表名)-把本地表导入远程表insertopen

18、rowset(SQLOLEDB,sql服务器名;用户名;密码,数据库名.dbo.表名)select*from本地表-更新本地表updatebsetb.歹UA=a.歹UAfromopenrowset(SQLOLEDB,sql服务器名;用户名;密码,数据库名.dbo.表名)asainnerjoin本地表bona.column1=b.column1-openquery用法需要创建一个连接-首先创建一个连接创建链接服务器execsp_addlinkedserverITSV,SQLOLEDB,远程服务器名或ip地址-查询select*FROMopenquery(ITSV,SELECT*FROM数据库.d

19、bo.表名)-把本地表导入远程表insertopenquery(ITSV,SELECT*FROM数据库.dbo.表名)select*from本地表-更新本地表updatebsetb.列B=a.列BFROMopenquery(ITSV,SELECT*FROM数据库.dbo.表名)asainnerjoin本地表bona.列A=b.列A-3、opendatasource/openrowsetSELECT*FROMopendatasource(SQLOLEDB,DataSource=ip/ServerName;UserID=登陆名password=密码).test.dbo.roy_ta-把本地表导入远

20、程表insertopendatasource(SQLOLEDB,DataSource=ip/ServerName;UserID=登陆名password=密码)数据库.dbo.表名select*from本地表用链接服务器OPENROWSETOPENDATASOURCE都可以链接服务器.databasel.dbo.tablel链接服务器.databasel.dbo.tablelSQLcodeselect*into#fromopenrowset(sqloledb,ip;sa;,select*frompubs.dbo.jobs)如果只是偶尔使用就用opendatasource/openrowset固定的频繁使用建linkedserver

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!