如何在SQL SERVER跨服务器查询数据库

如何在SQL SERVER跨服务器查询数据库,第1张

--创建链接服务器

exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '

exec sp_addlinkedsrvlogin 'ITSV ', 'false ',null, '用户名 ', '密码 '

--查询示例

select from ITSV数据库名dbo表名

--导入示例

select into 表 from ITSV数据库名dbo表名

--以后不再使用时删除链接服务器

exec sp_dropserver 'ITSV ', 'droplogins '

--连接远程/局域网数据(openrowset/openquery/opendatasource)

--1、openrowset

--查询示例

select from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名dbo表名)

--生成本地表

select into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名dbo表名)

--把本地表导入远程表

insert openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名dbo表名)

select from 本地表

--更新本地表

update b

set b列A=a列A

from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名dbo表名)as a inner join 本地表 b

on acolumn1=bcolumn1

--openquery用法需要创建一个连接

--首先创建一个连接创建链接服务器

exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '

--查询

select

FROM openquery(ITSV, 'SELECT FROM 数据库dbo表名 ')

--把本地表导入远程表

insert openquery(ITSV, 'SELECT FROM 数据库dbo表名 ')

select from 本地表

--更新本地表

update b

set b列B=a列B

FROM openquery(ITSV, 'SELECT FROM 数据库dbo表名 ') as a

inner join 本地表 b on a列A=b列A

--3、opendatasource/openrowset

SELECT

FROM opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ' )testdboroy_ta

--把本地表导入远程表

insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ')数据库dbo表名

select from 本地表

可以,但前提是227的服务器能够访问到228的数据库。

如果可以访问,你可以尝试修改227网站根目录下的webconfig文件。

用记事本打开webconfig

找到下面类似的语句

<add name="ConnectionString" connectionString="server=;database=;uid=;pwd="

或者

<add key="ConnectionString" value="server=;database=;uid=;pwd=" />

把里面的"server="后面的内容改为228数据库的ip地址,"database="后面的内容改为228数据库的名字,"uid="后面的内容改为登陆名,"pwd="后面的内容改为密码

如果方便的话,你可以把你的227和228两个网站的webconfig的对应位置的内容,去掉一些关键信息后,贴出来,帮你看看,因为这个字符串也有可能加密过的。

打开sql server 软件,如图所示

服务器类型选择数据库引擎,点击服务器名称中的下拉菜单,点击浏览更多,

选择登陆服务器选项卡上的网络服务器,等待几分钟,这时候需要网络搜索

选中所要连接的服务器。这里都是局域网中电脑的名称,只要看一看对方电脑叫什么就行了。

身份验证选择sql server 身份验证

输入用户名和密码

登陆成功,如图所示

确定网速没问题的话,用的又是存储过程,服务器要处理rollback,log之类的操作会变慢,但是不至于慢这么多,你检查一下防火墙和杀毒软件,把他们关了看看会不会变快。能想到的就这么多了。刚刚给你查了下,禁用DNS解析,连接速度会快很多。不妨试一下,如果还慢的话,建议用缓存吧,比如hibernate框架

楼主好,想实现这个的话,可以使用SQL自带的VS开发工具,做一个ETL包,然后部署发布到服务器数据库上,添加作业,设定同步时间即可。跨局域网和跨服务器基本上在SQL连接中,本身就不太好解决,需要有服务器之间的链接访问权才可以建立连接。但是ETL不受这一点限制。唯一不足的地方在于,如果你有100张表数据需要同步,做ETL包是个麻烦事,同一个模式,你要做非常多的ETL流程,不管是做在一个包中也好,多个包中也好,都会显得比较繁琐。但是好处是不受服务器限制,另外要注意,如果同步的表有外键,那么需要在做ETL的时候添加执行顺序,才能确保表数据同步成功的。如果想了解更多可加我,646443736

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 如何在SQL SERVER跨服务器查询数据库

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情