20191013-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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值