摘要:MSSQL複寫的LOB資料長度超過設定的最大值 65536
---------MS SQL 案例
/*
訊息7139,層級16,狀態1,行1
要複寫的LOB 資料(247903) 長度超過設定的最大值65536。
陳述式已經結束。
*/
---複寫
---table:XX 為發行端的發行集,內有LOB欄位
CREATE TABLE [dbo].[XX](
[id] [int] NOT NULL,
[name] [varchar](100) NULL,
[lob1] [text] NULL, --LOB
[lob2] [varchar](max) NULL,--LOB
CONSTRAINT [PK_XX] PRIMARY KEY CLUSTERED ([id] ASC)
--
INSERT INTO dbo.xx (id,name,lob1)--[lob1] [text]
select 110,'aa', * from OPENROWSET (BULK 'E:\self.txt', SINGLE_CLOB) as lob1
INSERT INTO dbo.xx (id,name,lob2)-- [lob2] [varchar](max)
select 111,'aa', * from OPENROWSET (BULK 'E:\self.txt', SINGLE_CLOB) as lob2
/*
訊息7139,層級16,狀態1,行1
要複寫的LOB 資料(247903) 長度超過設定的最大值65536。
陳述式已經結束。
*/
無論是text,varchar(max) datatype皆報錯。
--------試建一個同架構但非發行集的table:yy
select * into yy
from dbo.xx
where 1=0
INSERT INTO dbo.yy (id,name,lob1,lob2)
select 102,'aa', * from OPENROWSET (BULK 'E:\self.txt', SINGLE_CLOB) as lob1,
OPENROWSET (BULK 'E:\self.txt', SINGLE_CLOB) as lob2
(1 個資料列受到影響)
-----INSERT OK!!
--故要複寫的LOB 資料長度有最大值65536(預設)的限制。
--但可透過更改發行端伺服器的進階屬性來更改其預設值65536
exec sp_configure 'show advanced options',1
RECONFIGURE
EXEC sp_configure 'max text repl size (B)','20000000'
RECONFIGURE
--
INSERT INTO dbo.xx (id,name,lob1)--[lob1] [text]
select 126,'aa', * from OPENROWSET (BULK 'E:\self.txt', SINGLE_CLOB) as lob1
(1 個資料列受到影響)
INSERT INTO dbo.xx (id,name,lob2)-- [lob2] [varchar](max)
select 127,'aa', * from OPENROWSET (BULK 'E:\self.txt', SINGLE_CLOB) as lob2
(1 個資料列受到影響)
-----此時xx就可insert ok了!
---------------------------------------------------------------------------------------------------------------------