MSSQL_複寫的LOB資料長度超過設定的最大值 65536

  • 4104
  • 0
  • 2012-02-09

摘要: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了!

---------------------------------------------------------------------------------------------------------------------