数据插入远程服务器的表中 ,这个表里面有自动增加的字段 `~

linzi_0535 2009-01-22 03:38:19


--sql2000
从服务器A的表table1 里面取出数据 插入服务器B的表table2 里面
操作是在服务器A里面查询分析器里执行的

比如 服务器B 表table2的表结构
create table table2(
a int,
b int IDENTITY (1, 1)------大家看好了 表有2列 但是第2列是自动增加的 平时插入时只插入第1列就行
)

--插入数据 操作是在服务器A里面查询分析器里执行的

insert into [B的ip].[数据库名字].dbo.table2
select
table1.xx --只插入第1列 第2列是自动增加的
from table1





如果在同一数据里面执行是正确的 但是跨服务器就插入数据和表结构不相符合

就是如何把数据插入远程数据库表中 这个表里面有自动增加的字段

顺便祝大家新年快乐 牛气冲天
...全文
88 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
水族杰纶 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 linzi_0535 的回复:]
引用 15 楼 wufeng4552 的回复:
引用 14 楼 linzi_0535 的回复:
SQL code
--2个服务器之间相互有连接 都有最高的权限 跨服务时候不需要用户名 密码什么的
--服务器A 数据库AA 表名table1
--服务器B 数据库BB 表名table2

create table table1
{
x int,
y int,
c int
}
create table table2
{
a int,
b int IDENTITY (1, 1)
}


--table2的第二个子段时自动增加的
--现在的处理是在服务器…
[/Quote]
不管有多少字段,把除自增列的字段都列出來即可
linzi_0535 2009-01-22
  • 打赏
  • 举报
回复
晕了 揭帖了 大家都有分 不说了
linzi_0535 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 wufeng4552 的回复:]
引用 14 楼 linzi_0535 的回复:
SQL code
--2个服务器之间相互有连接 都有最高的权限 跨服务时候不需要用户名 密码什么的
--服务器A 数据库AA 表名table1
--服务器B 数据库BB 表名table2

create table table1
{
x int,
y int,
c int
}
create table table2
{
a int,
b int IDENTITY (1, 1)
}


--table2的第二个子段时自动增加的
--现在的处理是在服务器A 数据库AA 的查询分析器里面执行 …
[/Quote]

我要插入好多字段呢
水族杰纶 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 linzi_0535 的回复:]
SQL code
--2个服务器之间相互有连接 都有最高的权限 跨服务时候不需要用户名 密码什么的
--服务器A 数据库AA 表名table1
--服务器B 数据库BB 表名table2

create table table1
{
x int,
y int,
c int
}
create table table2
{
a int,
b int IDENTITY (1, 1)
}


--table2的第二个子段时自动增加的
--现在的处理是在服务器A 数据库AA 的查询分析器里面执行
--目的 就是把 table1的x字段插入到table2里面 …
[/Quote]
--暈了,一直讓你把字段列出來,不知道上面的代碼你測試了沒?
linzi_0535 2009-01-22
  • 打赏
  • 举报
回复

--2个服务器之间相互有连接 都有最高的权限 跨服务时候不需要用户名 密码什么的
--服务器A 数据库AA 表名table1
--服务器B 数据库BB 表名table2

create table table1
{
x int,
y int,
c int
}
create table table2
{
a int,
b int IDENTITY (1, 1)
}


--table2的第二个子段时自动增加的
--现在的处理是在服务器A 数据库AA 的查询分析器里面执行
--目的 就是把 table1的x字段插入到table2里面

insert [服务器B的ip].数据库BB.dbo.table2
select
x
from table1

--会提示错误 说字段不相符合

--如何table1 table2 在同一个数据库里面则不会出现这个问题

水族杰纶 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 linzi_0535 的回复:]
SQL code
--目的表有2个子段 组成 但是第二个是自动增加的
--所以从目的表只插入第一个字段就行了
--但是跨服务器执行的时候 就提示错误
--以为跨服务的时候 可能系统认为 目的表有2个子段 怎么只插入一个 肯定就不对了
--可能跨服务器的时候系统没有考虑目的表里面是否有自动增加的字段把
--如何解决呢?
--3楼的方法 只是处理 如何连接2个服务器把 执行时还是提示 同样的错误

--2个服务器之间有连接 不需要特…
[/Quote]
--我都測試過了,沒有問題~~~~
--TRY
insert into [B的ip].[数据库名字].dbo.table2(a)
select
table1.xx --只插入第1列 第2列是自动增加的
from table1
--或者
--這樣也可以
insert openrowset( 'SQLOLEDB', '[B的ip]'; '用户名'; '密码 ',数据库名.dbo.table2)(a)
select
table1.xx --只插入第1列 第2列是自动增加的
from table1
linzi_0535 2009-01-22
  • 打赏
  • 举报
回复

--目的表有2个子段 组成 但是第二个是自动增加的
--所以从目的表只插入第一个字段就行了
--但是跨服务器执行的时候 就提示错误
--以为跨服务的时候 可能系统认为 目的表有2个子段 怎么只插入一个 肯定就不对了
--可能跨服务器的时候系统没有考虑目的表里面是否有自动增加的字段把
--如何解决呢?
--3楼的方法 只是处理 如何连接2个服务器把 执行时还是提示 同样的错误

--2个服务器之间有连接 不需要特别的处理


lgxyz 2009-01-22
  • 打赏
  • 举报
回复
表1字段A不是标志列
INSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2 
(a)
SELECT A FROM 表1



如果表1字段A是标志列
INSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2 
(a)
SELECT A*1 FROM 表1


你要把你插入的字段名列出来,对应就可以了
水族杰纶 2009-01-22
  • 打赏
  • 举报
回复
--這樣也可以
insert openrowset( 'SQLOLEDB', '[B的ip]'; '用户名'; '密码 ',数据库名.dbo.table2)(a)
select
table1.xx --只插入第1列 第2列是自动增加的
from table1
lgxyz 2009-01-22
  • 打赏
  • 举报
回复
你要把字段列出来
linzi_0535 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wufeng4552 的回复:]
引用 6 楼 linzi_0535 的回复:
引用 3 楼 lgxyz 的回复:
表1字段A不是标志列


SQL codeINSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2
SELECT A FROM 表1


如果表1字段A是标志列


SQL codeINSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2
SELECT A*1 FROM 表1

我的问题是 那个自动增加的字段的处…
[/Quote]
试了 不行
水族杰纶 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 linzi_0535 的回复:]
引用 3 楼 lgxyz 的回复:
表1字段A不是标志列


SQL codeINSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2
SELECT A FROM 表1


如果表1字段A是标志列


SQL codeINSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2
SELECT A*1 FROM 表1

我的问题是 那个自动增加的字段的处理。。。大哥 你没有明白我的意思…
[/Quote]
5樓的試了沒?
linzi_0535 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lgxyz 的回复:]
表1字段A不是标志列



SQL codeINSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2
SELECT A FROM 表1




如果表1字段A是标志列



SQL codeINSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2
SELECT A*1 FROM 表1
[/Quote]
我的问题是 那个自动增加的字段的处理。。。大哥 你没有明白我的意思吗
2个数据库有连接
不需要重新设置

主要问题是 目的表有2个子段 第二个字段是 自动增加的

如果插入数据 只插入第一列就行

但是跨服务器插入数据库的时候 不能只插入一列 会提示错误
水族杰纶 2009-01-22
  • 打赏
  • 举报
回复
--TRY
insert into [B的ip].[数据库名字].dbo.table2(a)
select
table1.xx --只插入第1列 第2列是自动增加的
from table1
linzi_0535 2009-01-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wufeng4552 的回复:]
兩個服務器做鏈結服務器了嗎?
[/Quote]
是连接服務器
lgxyz 2009-01-22
  • 打赏
  • 举报
回复
表1字段A不是标志列


INSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2 
SELECT A FROM 表1





如果表1字段A是标志列


INSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2 
SELECT A*1 FROM 表1


lgxyz 2009-01-22
  • 打赏
  • 举报
回复
表1字段A不是标志列

SQL codeINSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2 
SELECT A FROM 表1




如果表1字段A是标志列

SQL codeINSERT INTO OPENDATASOURCE('SQLOLEDB','Data Source=IP;User ID=XX;Password=XX').数据库.dbo.表2 
SELECT A*1 FROM 表1


在你另一贴,不是已经发了?
这样还不行?

水族杰纶 2009-01-22
  • 打赏
  • 举报
回复
兩個服務器做鏈結服務器了嗎?

22,210

社区成员

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

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