ITPub博客

首页 > 数据库 > SQL Server > SQLServer通过链接服务器查询视图报错 “消息 7347,级别 16”

SQLServer通过链接服务器查询视图报错 “消息 7347,级别 16”

原创 SQL Server 作者:chenoracle 时间:2019-10-13 14:54:14 0 删除 编辑

SQLServer通过链接服务器查询视图报错“ 消息 7347 ,级别 16


问题: 通过 链接服务器 远程查看某张表数据时报如下错误:

消息 7347 ,级别 16 ,状态 1 ,第 1

链接服务器 '192.168.200.51' OLE DB 访问接口 'SQLNCLI11' 返回的数据与列 '[192.168.200.51].[erp].[dbo].[vp_cust].PName' 所需的数据长度不匹配。所需的 ( 最大 ) 数据长度为 30 ,但返回的数据长度为 37

问题原因:

视图所在基表表结构发生变化, PName 字段字符长度变长了,但是 通过 链接服务器 远程查看的表仍然使用表 PName 字段 原来的字符长度, 表结构变化的信息没有同步,查询时显示数据长度不够;

解决方案:

手动刷新视图;

EXECUTE   sp_refreshview   N'dbo.vp_cust' ;

问题重现过程如下:

192.168.100.100 服务器创建链接服务器,连接 192.168.100.200 TESTDB 数据库;

---192.168.100.200

创建测试数据;

Use TESTDB

Create table test1013(id int,col1 varchar(3));

Create view v_test1013 as select * from test1013;

Insert into test1013 values(1, a );

Insert into test1013 values(2, bb );

Insert into test1013 values(3, ccc );

---192.168.100.100

Select * from [192.168.100.200].[TESTDB].[dbo].[v_test1013];

Id col1

1 a

2 bb

3 ccc

---192.168.100.200

Alter table test1013 alter column col1 varchar(5);

Insert into test1013 values(5, eeeee );

Select * from v_test1013;

---192.168.100.100

Select * from [192.168.100.200].[TESTDB].[dbo].[v_test1013];

消息 7347 ,级别 16 ,状态 1 ,第 3  

链接服务器 '192.168.2.141' OLE DB 访问接口 'SQLNCLI11' 返回的数据与列 '[192.168.2.141].[erp352].[dbo].[v_ test1013 ]. col1 ' 所需的数据长度不匹配。所需的 ( 最大 ) 数据长度为 3 ,但返回的数据长度为 5

---192.168.100.200

EXECUTE   sp_refreshview   N'dbo.v _test1013 ' ;

---192.168.100.100

Select * from [192.168.100.200].[TESTDB].[dbo].[v_test1013];

Id col1

1 a

2 b

3 ccc

5 eeeee


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29785807/viewspace-2659813/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
纸上得来终觉浅,绝知此事要躬行!

注册时间:2014-08-05

  • 博文量
    239
  • 访问量
    768567