如何在SQL SERVER跨服务器查询数据库
--创建链接服务器
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
0条评论