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

上传人:M****1 文档编号:513505804 上传时间:2023-04-18 格式:DOCX 页数:8 大小:18.59KB
返回 下载 相关 举报
sql中如何调用另一台服务器的数据库查询数据呢?_第1页
第1页 / 共8页
sql中如何调用另一台服务器的数据库查询数据呢?_第2页
第2页 / 共8页
sql中如何调用另一台服务器的数据库查询数据呢?_第3页
第3页 / 共8页
sql中如何调用另一台服务器的数据库查询数据呢?_第4页
第4页 / 共8页
sql中如何调用另一台服务器的数据库查询数据呢?_第5页
第5页 / 共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数据库应用程序,介绍如何访问服务器端数据。这个PocketPC应用程序需要引用System.Data.Common、System.Xml和System.Data.SqlClient命名空间。如何用sql语句进行跨库查询在机器B上的数据库database2中创建一个临时表#tmp,内容就是机器A上的数据库database里面的Table1。如何用sql语句完成?(不借用dts等)SQLcode-创建链接服务器execsp_addlinkedser

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号