ITPub博客

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

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

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

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

欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!



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

请登录后发表评论 登录
全部评论
Oracle ACE、OCMU 用户组成员、Oracle 11g OCM、微信公众号"IT小Chen"

注册时间:2014-08-05

  • 博文量
    853
  • 访问量
    2727927