چطور ميشه فيلد يونيكدي با ظرفيت بيش از 5000 كاراكتر در اس.كيو.ال ايجاد كرد.؟

mohammad-f

New Member
چطور ميشه فيلد يونيكدي با ظرفيت بيش از 5000 كاراكتر در اس.كيو.ال ايجاد كرد.؟مثل فيلدي با data type:memory در access.
 

mohammad-f

New Member
من از text,ntext استفاده کردم اما بیش از 3 تا 4 هزار کاراکتر بیشتر نمیگیره.در ضمن نسخه sql Enterpriseنصب کرده ام.
 

aminir

Member
عزيز جان Data Type ntext 2^30-1 كاركتر رو پشتيباني مي كنه يا به عبارتي 1,073,741,823 كاركتر يونكد رو
 

mazoolagh

Active Member
احتمالا شما بجای ntext از nchar استفاده کردی. MSSSQL برای nchar حداکثر 8000 بایت تخصیص میده که چون دیتا یونیکدی 2 بایتی هست میشه 4000 کارآکتر.
ولی همونطور که aminir گفت در ntext حداکثر 2 بتوان 31 منهای یک بایت هست که از دیدگاه تعداد کارآکتر نصفش میشه یعنی 2 بتوان 30 - 1
 

mohammad-f

New Member
در قسمت design table وقتی فیلد را از نوع text میگیرم به طور خودکار خاصیت length رو 16 قرار میده وقابل تغییر نیست.که در اینصورت بیشتر از 16^2 کاراکتر رو نمیگیره.خوب حالا اگه ممکنه یک راهنمایی جامع برای رفع مشکل بفرمایید.
 

mohammad-f

New Member
mazoolagh گفت:
ntext با text فرق داره!
خوب معلومه فرق داره.فکر میکنم در حالت text برای هر کاراکتر یک بایت ودر حالت2ntext بایت در نظر گرفته میشود.در هر دو صورت sql طول اون رو 16 در نظر میگیرد.
 
آخرین ویرایش:

mazoolagh

Active Member
منظورم اينه كه تفسير size در فيلد ntext با تفسيرش در فيلد text فرق داره. توضيحش پيچيده هست ولي بطور مختصر MSSQL SERVER با توجه به اينكه اندازه ديتا بيشتر يا كمتر از 32 كيلوبايت باشه براي ذخيره فيلدهاي ntext روشهاي متفاوتي رو استفاده ميكنه و چند پارامتر سيستمي هم بر رفتار اون تاثير دارن.
ضمنا خوندن و نوشتن اين فيلدها با فيلد متني معمولي متفاوت هست!
 

جدیدترین ارسال ها

بالا