mssql 两个数据库对接数据

helinhai 2011-07-08 03:15:21

本地数据库 称为A 远程的服务器称为B (ip 数据库名 账户 密码都知道)


现在我想每天把数据库固定一段时间把A数据库A表的数据 导入B数据库的B表

怎么执行啊 比如B数据库的ip是219.249.136.120


怎么操作!!
...全文
689 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eversnow 2012-09-25
  • 打赏
  • 举报
回复
今天也碰到这个问题了 囧=。=
WhenYouSeeMe 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 yubofighting 的回复:]
建立dtsx包进行传输就可以了啊,搞的这么麻烦

链接服务器数据量大的话会掉的
[/Quote]

顶,我们用的就是DTS包传输。每天定时跑作业。
sekai2011 2011-07-11
  • 打赏
  • 举报
回复

解决就好 ,方法蛮多的
接分。。
helinhai 2011-07-11
  • 打赏
  • 举报
回复
咯咯 终于搞定了 原来是配置管理工具里面: TCP/ip 属性里面的IP地址 里面的TCP端口没有弄成1433
唉。 终于瞎猫碰死耗子 给碰上了!
helinhai 2011-07-11
  • 打赏
  • 举报
回复
找了老半天了 还是没有解决!
helinhai 2011-07-11
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 yubofighting 的回复:]
建立dtsx包进行传输就可以了啊,搞的这么麻烦

链接服务器数据量大的话会掉的
[/Quote]


怎么用?
唐诗三百首 2011-07-10
  • 打赏
  • 举报
回复
如果远程服务器B只用做查询的话,即只读不改.
那么建个日志传送(Log Shipping)最简单了.
yubofighting 2011-07-10
  • 打赏
  • 举报
回复
建立dtsx包进行传输就可以了啊,搞的这么麻烦

链接服务器数据量大的话会掉的
helinhai 2011-07-09
  • 打赏
  • 举报
回复
打开双方的135端口
MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。
使用“telnet IP 135”命令测试对方端口是否对外开放。也可用端口扫描软件(比如Advanced Port Scanner)扫描端口以判断端口是否开放


我的135 端口都不可以用

但是RPC 的值已经是2了 而且 开始--运行--services.msc--找到TCP/IP NetBIOS Helper开启


都已经打开了
helinhai 2011-07-09
  • 打赏
  • 举报
回复

select * from OPENDATASOURCE('SQLOLEDB','Data Source=219.136.259.130\MSSQL2008;User ID=sa;Password=sasa').pets.dbo.brand_info

如果这个语句是到B服务器的话可以正确执行

但是到A服务器是不可以执行的 错误


链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。
链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。
消息 65535,级别 16,状态 1,第 0 行
SQL Server 网络接口: 定位指定的 Server/Instance 时出错 [xFFFFFFFF].
helinhai 2011-07-09
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 acherat 的回复:]
引用 11 楼 helinhai 的回复:

SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=219.136.259.130/mssql2008;User ID=sa;Password=12348limr' ).pets.dbo.Brand_info


这个样子也不可以


链接服务器"(null)"的 OLE D……
[/Quote]


TCP/IP 已经选用了

错误提示

链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。
链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。
消息 65535,级别 16,状态 1,第 0 行
SQL Server 网络接口: 定位指定的 Server/Instance 时出错 [xFFFFFFFF].


fanzhouqi 2011-07-08
  • 打赏
  • 举报
回复
链接服务器 是个解决办法。
但是如果 lz 需要 定期做 数据同步的话。
可以试试,数据库复制 或者 logship(日志传送)。

也可以手动备份日志,定期恢复 日志备份
AcHerat 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 helinhai 的回复:]

SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=219.136.259.130/mssql2008;User ID=sa;Password=12348limr' ).pets.dbo.Brand_info


这个样子也不可以


链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10……
[/Quote]

找到外围应用配置器,选择第一个,进去找到远程服务,选择 TCP/IP或命名管道 重启SQL服务,再试试建立连接服务
helinhai 2011-07-08
  • 打赏
  • 举报
回复
SELECT *
FROM opendatasource( 'SQLOLEDB ', 'Data Source=219.136.259.130/mssql2008;User ID=sa;Password=12348limr' ).pets.dbo.Brand_info


这个样子也不可以


链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。
链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。
消息 53,级别 16,状态 1,第 0 行
命名管道提供程序: 无法打开与 SQL Server 的连接 [53].



helinhai 2011-07-08
  • 打赏
  • 举报
回复
exec sp_addlinkedserver 'ITSV ', ' ', 'SQLOLEDB ', '远程服务器名或ip地址 '
最后的参数是不是这样 "219.136.24.1/mssql2008" mssql2008 是我的实例名 程序连接数据库都是./msql2008
helinhai 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cd731107 的回复:]
SQL code
--不同服务器数据库之间的数据操作(来自小F)
--************************************************************************************
1、--创建链接服务器
exec sp_addlinkedserver 'ITSV', ' ', 'SQLOLEDB', '远程服务器名或ip地址……
[/Quote]

链接服务器"ITSV"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "登录超时已过期"。
链接服务器"ITSV"的 OLE DB 访问接口 "SQLNCLI10" 返回了消息 "与 SQL Server 建立连接时发生了与网络相关的或特定于实例的错误。找不到或无法访问服务器。请检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。"。
消息 53,级别 16,状态 1,第 0 行
命名管道提供程序: 无法打开与 SQL Server 的连接 [53].


根据你的方法 这样的错误提示 IP地址 用户名 还有密码 都没有错 还有135的端口都打开了
--小F-- 2011-07-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 cd731107 的回复:]
SQL code

--不同服务器数据库之间的数据操作(来自小F)
--************************************************************************************
1、--创建链接服务器
exec sp_addlinkedserver 'ITSV', ' ', 'SQLOLEDB', '远程服务器名或ip……
[/Quote]

这个我也是引用的别人的 呵呵
--小F-- 2011-07-08
  • 打赏
  • 举报
回复
链接服务器
AcHerat 2011-07-08
  • 打赏
  • 举报
回复

EXEC sp_addlinkedserver
@server='DBVIP',--被访问的服务器别名(任意的名称)
@srvproduct='',
@provider='SQLOLEDB',
@datasrc='MYSQLServer' --要访问的服务器(SQL SERVER实例名)

EXEC sp_addlinkedsrvlogin
'DBVIP', --被访问的服务器别名
'false',
NULL,
'sa', --登陆链接服务器的帐号
'1q2w3e4R' --登陆链接服务器的密码

--查看已注册的链接服务器
--exec sp_linkedservers

--把本地的表数据插入到链接服务器上的表中
SELECT * INTO DBVIP.database_name.dbo.table_name FROM local_table_name
--DBVIP.database_name.dbo.table_name 远程服务器完整表名(必须用4部分表示)
--local_table_name 本地表名

--用完后可删除
--Exec sp_droplinkedsrvlogin DBVIP,NULL --删除链接服务器的登陆帐户
--Exec sp_dropserver DBVIP --删除链接服务器


/*******************************

在使用openrowset/opendatasource前搜先要启用Ad Hoc Distributed Queries服务,因为这个服务不安全所以SqlServer默认是关闭的

启用Ad Hoc Distributed Queries的方法

SQL Server 阻止了对组件 'Ad Hoc Distributed Queries' 的 STATEMENT'OpenRowset/OpenDatasource'

的访问,因为此组件已作为此服务器安全配置的一部分而被关闭。系统管理员可以通过使用

sp_configure 启用 'Ad Hoc Distributed Queries'。有关启用 'Ad Hoc Distributed Queries' 的详细

信息,请参阅 SQL Server 联机丛书中的 "外围应用配置器"。
启用Ad Hoc Distributed Queries的方法,执行下面的查询语句就可以了:

exec sp_configure 'show advanced options',1
reconfigure
exec sp_configure 'Ad Hoc Distributed Queries',1
reconfigure
使用完毕后,记得一定要要关闭它,因为这是一个安全隐患,切记执行下面的SQL语句

exec sp_configure 'Ad Hoc Distributed Queries',0
reconfigure
exec sp_configure 'show advanced options',0
reconfigure

*******************************/

--创建链接服务器
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 a.column1=b.column1

--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=密码 ' ).test.dbo.roy_ta
--把本地表导入远程表
insert opendatasource( 'SQLOLEDB ', 'Data Source=ip/ServerName;User ID=登陆名;Password=密码 ').数据库.dbo.表名
select * from 本地表


cd731107 2011-07-08
  • 打赏
  • 举报
回复
--不同服务器数据库之间的数据操作(来自小F)
--************************************************************************************
1、--创建链接服务器
exec sp_addlinkedserver 'ITSV', ' ', 'SQLOLEDB', '远程服务器名或ip地址 '
exec sp_addlinkedsrvlogin 'ITSV', 'false ',null, '用户名', '密码'


2、启动两台服务器的MSDTC服务
MSDTC服务提供分布式事务服务,如果要在数据库中使用分布式事务,必须在参与的双方服务器启动MSDTC(Distributed Transaction Coordinator)服务。

3、打开双方的135端口
MSDTC服务依赖于RPC(Remote Procedure Call (RPC))服务,RPC使用135端口,保证RPC服务启动,如果服务器有防火墙,保证135端口不被防火墙挡住。
使用“telnet IP 135”命令测试对方端口是否对外开放。也可用端口扫描软件(比如Advanced Port Scanner)扫描端口以判断端口是否开放


4、--如要创建触发器
create trigger t_test on test
for insert,update,delete
as
--加上下面两句,否则会提示新事务不能登记到指定事务处理器
set xact_abort on
begin distributed tran
delete from openrowset('sqloledb','xz';'sa';'',test.dbo.test)
where id in(select id from deleted)
insert into openrowset('sqloledb','xz';'sa';'',test.dbo.test)
select * from inserted
commit tran

--查询示例
select * from ITSV.数据库名.dbo.表名

--导入示例
select * into 表 from ITSV.数据库名.dbo.表名

--以后不再使用时删除链接服务器
exec sp_dropserver 'ITSV ', 'droplogins '
加载更多回复(4)

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧