2012-09-06 54 views
4

我有一個簡短的問題,我找不到任何地方的答案。我經常需要將一種類型的數據庫轉換爲另一種類型,因此我正在編寫一個程序來回轉換MS SQL Server數據庫。我遇到的問題是我無法聲明最大長度超過4000的nvarchar變量。我得到困惑於nvarchar限制

「給參數'description'的大小(6000)超過了允許的最大值(4000 )「。

然而,在原始數據庫中明確定義爲nvarchar(6000),至少我認爲是這樣,因爲max_length是6000,如果使用max max_length是-1,對不對?我知道我可以使用nvarchar(max),但如果我正在編寫轉換數據庫的軟件,我希望儘可能保持原樣。

最近nvarchar最大限制發生了變化,還是我錯過了一些設置?

+1

'max_length'是以字節爲單位的,而不是字符。 'nvarchar(6000)'無效,因爲*字符*限制是4000. –

+1

您可以有1-4000或Nvarchar的最大值。也許你之前看到的是大小 - 因爲Nvarchar存儲unicode數據,它需要的空間是常規varchar的兩倍 - 我期望你看到的是Nvarchar(3000) - 大小將達到6000. – Bridge

+0

當然,你是對的。最大長度顯然是以字節爲單位,謝謝! – user1277327

回答

3

給定的大小(6000)是以字節爲單位的,當你給出長度時,它是以unicode的字符數。限制4000是因爲nvarchar(xxxx)和nvarchar(max)的內部存儲器不同。如果您需要比4000 char更多的存儲空間,請使用nvarchar(max)。