问题:
通过 链接服务器 远程查看某张表数据时报如下错误:
消息 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"