复制一个数据库表中的多条记录到另一个数据库相同的表中问题

刚刚凉 2008-04-30 06:58:58
目的是从一个数据库中的一个表中查询满足条件的记录 ,然后把这些记录插入到另一个数据库(在另一台电脑上)的相同的表中,使用ADO +VC ,数据库是SQL Server 2000,有没有一次性地完成这个操作的方法?请指教!
我的想法是挨个查询每个记录的每个元素,写成SQL 插入语句,再用INSERT 插入到另一个数据库中,但这样很麻烦.现在就是能把这些满足条件的记录存在一个记录集中_RecordsetPtr ,然后能不能把这个记录集一次性地插入到另一个数据库的相同的表中?
...全文
275 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
刚刚凉 2008-05-05
  • 打赏
  • 举报
回复
我找到原因了 ,SQL Server2000 需要添加个补丁sp4 , 然后用telnet 服务器IP 1433 还是不好用,原来问题出在防火墙 把 防火墙1433添加到信任端口就行了 .
用openrowset 可以一次性完成
刚刚凉 2008-04-30
  • 打赏
  • 举报
回复
我使用下面语句:
select * into table1 from openrowset('SQLOLEDB','ZXL';'CC';'123456',DUTHMIDB.dbo.table2)也就是按照下面格式写的:
select * into 表 from openrowset( 'SQLOLEDB ', 'sql服务器名 '; '用户名 '; '密码 ',数据库名.dbo.表名)
我在VC中使用写好的上面的语句然后在m_connection->Excute();语句中执行的,但是出错:
CC 登录失败.原因:未与信任SQL Server相关联.


我在ZXL 服务器上设置的是混合验证模式,而且我在那台电脑上用CC 和123456 密码都能正常访问.
哪位大虾指教,加分!!!!!!
刚刚凉 2008-04-30
  • 打赏
  • 举报
回复
请问二楼 有没有对应的VC 语句啊? 怎么在VC 里面实现啊?谢谢
hery2002 2008-04-30
  • 打赏
  • 举报
回复
DTS 或者SSIS
liangCK 2008-04-30
  • 打赏
  • 举报
回复
不同服务器数据库之间的数据操作

--创建链接服务器
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
liangCK 2008-04-30
  • 打赏
  • 举报
回复
写成存储过程..让ado去执行这个存储过程.

在编程世界中..不是每一件事都可以用一句代码就解决.

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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