社区
MS-SQL Server
帖子详情
怎樣訪問這個庫?
Bman
2005-10-26 09:35:04
兩台電腦 A和B,都安裝有Sqlserver. A電腦上的庫為DB1,B電腦的庫為DB2.
現在己在A電腦上把B電腦上的DB2注冊。
怎樣在A電腦的DB1裡寫語句訪問Db2裡面的表。
例如我在要db1裡建個查詢,需要顯示Db2庫中的tab2表的所有內容,我應該怎樣寫?
...全文
77
6
打赏
收藏
怎樣訪問這個庫?
兩台電腦 A和B,都安裝有Sqlserver. A電腦上的庫為DB1,B電腦的庫為DB2. 現在己在A電腦上把B電腦上的DB2注冊。 怎樣在A電腦的DB1裡寫語句訪問Db2裡面的表。 例如我在要db1裡建個查詢,需要顯示Db2庫中的tab2表的所有內容,我應該怎樣寫?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
samfeng_2003
2005-10-26
打赏
举报
回复
第二种方式,可以利用opendatabase的方法,不用连接服务器的方式来使用服务器
SELECT *
FROM OPENDATASOURCE(
'SQLOLEDB',
'Data Source=192.168.0.2;User ID=sa;Password=XXXXXXX'
).fx.dbo.usertable
这是我要访问服务器为192.168.0.2的fx库的usertable表的内容
samfeng_2003
2005-10-26
打赏
举报
回复
第一种方式,可以通过建立连接服务器的方式。
使用sql-server进行分布式查询(链接服务器)
可以使用sql-server企业管理器进行建立,注意其中的rpc及rpc out两项,也可以使用sql语句来完成定义,主要涉及到三个存储过程
sp_addlinkedserver,sp_serveroption和sp_addlinkedsrvlogin,以下是三个存储过程的语法:
sp_addlinkedserver
创建一个链接的服务器,使其允许对分布式的、针对 OLE DB 数据源的异类查询进行访问。在使用 sp_addlinkedserver 创建链接的服务器之后,此服务器就可以执行分布式查询。如果链接服务器定义为 Microsoft? SQL Server?,则可执行远程存储过程。
语法
sp_addlinkedserver [ @server = ] 'server'
[ , [ @srvproduct = ] 'product_name' ]
[ , [ @provider = ] 'provider_name' ]
[ , [ @datasrc = ] 'data_source' ]
[ , [ @location = ] 'location' ]
[ , [ @provstr = ] 'provider_string' ]
[ , [ @catalog = ] 'catalog' ]
例如:
sp_addlinkedserver 'ServerName','','SQLOLEDB','dbconn',null,'driver={sql server};server=192.168.1.181;uid=sa,pwd=;'
此处ServerName为自定义名称,dbconn为定义的odbc数据源
一般使用的参数如下:
@server “LINKED SERVER”
@srvproduct “Product name”
@provider “Provider”
@datasrc “Data source”
二、设置服务器选项
使用 sp_serveroption 过程,所要使用的参数如下:
@server “Linked server”
@optname “RPC”或“RPC OUT”
@optvalue True 或 False
三、添加Login
使用 sp_addlinkedsrvlogin 过程,所要使用的参数如下:
@rmtsrvname “Linked server”
@useself True 或 False
@locallogin 本地LOGIN
@rmtuser 远程用户
@rmtpassword 远程用户口令
全部完整的示例如下:
exec sp_helpserver /*---查看远程服务器的列表-------*/
exec sp_helplinkedsrvlogin /*------查看远程服务器的登录用户---------*/
exec sp_droplinkedsrvlogin 'sestlserver',null /*----删除远程服务器的登录用户-----*/
exec sp_dropserver 'sestlserver','droplogins'/*-----删除远程服务器------*/
EXEC sp_addlinkedserver 'sestlserver','','SQLOLEDB','sestlserver',null,'driver={sql server};server=192.168.0.2;uid=sa,pwd=tianqibuhao;'
exec sp_serveroption N'sestlserver', N'rpc out', N'true'
exec sp_serveroption N'sestlserver', N'rpc', N'true'
exec sp_addlinkedsrvlogin 'sestlserver','False',null,'sa','tianqibuhao'
/*------建立一个远程的连接服务器---------*/
/*---在远程服务器上建立一个表----*/
create table tb2
(学号 int,科目 varchar(20),成绩 int)
学号 科目 成绩
----------- ---------- -----------
6 政治 50
6 英语 70
7 语文 80
7 数学 90
7 英语 71
/*---在本地服务器上建立一个表----*/
create table tb1
(学号 int,科目 varchar(20),成绩 int)
学号 科目 成绩
----------- ---------- -----------
1 语文 60
1 数学 70
1 英语 75
1 政治 60
2 语文 55
2 数学 53
2 英语 71
3 语文 80
4 数学 0
5 英语 91
/*---在本地服务器上建立一个分布视图----*/
creat view student as
select * from tb1
union all
select * from sestlserver.test.dbo.tb2
/*---查询分布视图----*/
select * from student
学号 科目 成绩
----------- ---------- -----------
1 语文 60
1 数学 70
1 英语 75
2 语文 55
2 数学 53
2 英语 71
3 语文 80
4 数学 0
5 英语 91
1 政治 60
6 政治 50
6 英语 70
7 语文 80
7 数学 90
7 英语 71
Bman
2005-10-26
打赏
举报
回复
上面這位能把上面的code轉換成一個簡單的實例麼?
子陌红尘
2005-10-26
打赏
举报
回复
--创建链接服务器
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
go
--查询示例
select * from srv_lnk.数据库名.dbo.表名
--导入示例
select * into 表 from srv_lnk.数据库名.dbo.表名
--以后不再使用时删除链接服务器
exec sp_dropserver 'srv_lnk','droplogins'
go
--如果只是临时访问,可以直接用openrowset
--查询示例
select * from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)
--导入示例
select * into 表 from openrowset('SQLOLEDB'
,'sql服务器名';'用户名';'密码'
,数据库名.dbo.表名)
zlp321002
2005-10-26
打赏
举报
回复
--这样访问
select * from B.DB2.dbo.Table2
QQMagicer
2005-10-26
打赏
举报
回复
select * from linkservername.db2.dbo.tab2
你必须知道的495个C语言问题
第1章 声明和初始化 ...6.23 sizeof返回的大小是以字节计算的,怎样才能判断数组中有多少个元素呢? 第7章 内存分配 基本的内存分配问题 7.1 为什么这段代码不行?char*answer;printf("Typesomething...
什么是分库分表?为什么要分库分表?什么时候需要分库分表?怎么样拆分?(数据库分库分表详解)
而拆分的粒度,一般又分为分库和分表,所以组成的拆分策略最终如下:分库:将一个数据库拆分成多个独立的数据库,每个数据库可以部署在不同的服务器上,从而分散数据存储和访问压力。分表:将一个数据表拆分成多个小...
什么是撞库攻击,如何预防撞库攻击?
“撞库”(Credential Stuffing Attack)在网络安全中是一个古老的概念,按中文的字面意思解读,就是“碰撞数据库”的意思。“碰撞”意味着碰运气,即不一定能成功;而“数据库”中往往存储着大量敏感数据,比如我们...
访问数据库_常用的数据库访问方式是什么?
常用的数据库访问方式是什么?ASP访问数据库的方式有哪些?在ASP中可以通过三种方式访问数据库:1、IDC...这三种访问方式对数据库的访问都是由InternetInformationServer完成的。通过Web浏览器用H...
什么是库?库的开发与使用(C/C++)
静态库与动态库的区别在于,静态库是在程序链接时就已经将整个静态库打包到整个程序之中。程序需要使用静态库中的内容时,可以直接使用。而动态库在程序链接时不会将整个动态库的代码全部链接到程序之中,而只是将...
MS-SQL Server
34,873
社区成员
254,640
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章