SQLServer通過連結伺服器查詢檢視報錯 “訊息 7347,級別 16”

chenoracle發表於2019-10-13

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",共同學習,共同成長!!!

SQLServer通過連結伺服器查詢檢視報錯 “訊息 7347,級別 16”

SQLServer通過連結伺服器查詢檢視報錯 “訊息 7347,級別 16”



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2659813/,如需轉載,請註明出處,否則將追究法律責任。

相關文章