簡體   English   中英

SQL Server 2012無法保存nvarchar(MAX)> 42531個字符

[英]SQL Server 2012 fails to save nvarchar(MAX) > 42531 characters

我的表中有一個名為[Body]的nvarchar(MAX)字段。 我正在嘗試將該字段設置為(相當長)的字符串。 我發現如果我的字符串> 42531個字符,則運行update語句,更新其他字段,但是[Body]字段設置為空字符串。 如果我從字符串的任何位置刪除1個字符,則[正文]字段將包含我設置的文本。 我添加/刪除的字符也不影響其位置,這不是一個奇怪的字符或轉義問題。

DECLARE @p1 nvarchar(MAX)
SET @p1 = 'a string longer 
than 42531 chars...
with line breaks etc'
UPDATE [dbo].[MyTable] SET [Body] = @p1, CreatedOn = GETDATE() WHERE Id = 15597

怎么會這樣?! 很明顯,nvarchar(MAX)可以存儲多達2GB的數據,但我沒有得到任何類似的結果。

嗯,這真的很奇怪。 也許這是Management Studio的問題-如您在此屏幕快照中所見,在SSMS中,對於某些記錄,該字段顯示為空。 但是,我發現我可以將光標放在“空”字段中,按CTRL-C並將值復制到其他地方-因此數據實際上在那里,SSMS僅顯示了其中任何一個! 即使我將光標放在該字段中,數據也不會直觀顯示,該字段的作用就好像是空的一樣。 但是CTRL-C獲取數據!

也許這是SSMS 2012的新功能-我之前從未見過。

我知道SSMS的“每列顯示的最大字符數”設置為256。但是我看不到這會如何影響任何內容,因為其他記錄(有數千個字符,但少於42532個字符)確實顯示了當前數據,如果將光標放在這些字段中,SSMS會轉到文本字符串的末尾,則可以按F2並在整個字符串中移動光標,而不僅僅是256個字符。 但是,當> 42531個字符時,我在該字段中什么也看不到...

無論如何,至少我現在知道數據在那里!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM