PDA

View Full Version : مشکل در Collation



farzadvb
چهارشنبه 17 مرداد 1386, 09:26 صبح
اول سلام خدمت دوستان
مشکل من اینجاست که من دو تا سیستم دارم یکی Pcو یکی هم یک لپ تاپ هست.من روی هر دوی اینها sql رو نصب کردم اما چون نمیدونستم لپ تاپ روی Collation لاتین تنظیم شده بوده و pc روی عربی چون تنظیمات Regional اونها متفاوت بوده.
داستان اینه که من روی هر دوی این سیستم ها اطلاعات رو وارد بانک اطلاعاتی کردم و مشکلی هم نبوده اما هیچ کدون از این دو تا سیستم ها اطلاعات وارد شده دیگری رو نمیشناسه چون کدهای ذخیره سازی هر کدومشون متفاوت شده
حالا سوالم اینه که من چطور اطلاعات داخل بانکم را به اصطلاح یک جور و یکپارچه کنم ؟
ساپورت مایکروسافت گفته که از این سه collation میتونی استفاده کنی که اثری نداشت.

Arabic_BIN (binary order)
SQL_Latin1_General_Cp1256_CS_AS (case sensitive, accent sensitive)
SQL_Latin1_General_Cp1256_CI_AS (case insensitive, accent insensitive)

من با دو تا دستور زیر هم کار کردم و تغییر دادم با اثر بخش نبود:عصبانی++:

ALTER DATABASE [My_Database] COLLATE My_Collation


ALTER TABLE MyTable ALTER COLUMN CharCol
varchar(10) COLLATE My_Collation NOT NULL

در ضمن اینکه من زمانی که از Collation لاتین استفاده میکنم کوری ها درست کار میکنند اما اطلاعات به صورت ؟؟؟؟ نمایش داده میشوند.

خلاصه کلام مشکل من اینکه چطور اطلاعات وارد شده را ترمیم و یک دست کنم.

هر گونه راهنمایی و نظری محترم و باارزش است.

پویا
چهارشنبه 17 مرداد 1386, 12:49 عصر
من یکبار این مشکل داشتم
رفتم تو reginal and language options و language for non-Unicode programs را روی فارسی گذاشتم و درست شد

farzadvb
پنج شنبه 18 مرداد 1386, 14:10 عصر
یعنی هیچ کس نیست که بگه حداقل منظور منو متوجه شده ؟

AminSobati
پنج شنبه 18 مرداد 1386, 21:47 عصر
فرزاد جان چرا فیلد رو varchar گرفتین؟ برای اطلاعات فارسی باید nvarchar استفاده کنین. شاید اصلا مشکل اصلی این باشه

farzadvb
جمعه 19 مرداد 1386, 09:26 صبح
فرزاد جان چرا فیلد رو varchar گرفتین؟ برای اطلاعات فارسی باید nvarchar استفاده کنین. شاید اصلا مشکل اصلی این باشه
امین جان مرسی از راهنماییت اما نوع فلید national-charیا همون nvarcharهست.
من کد زیر رو نوشتم و collationرا یکی کردم با جواب نداد.

use data
SELECT 'ALTER TABLE ' + sysobjects.name + ' ' +
'ALTER COLUMN ' + syscolumns.name + ' ' +
systypes.name + '(' + cast(syscolumns.length as varchar) + ') ' +
'COLLATE ' + syscolumns.collation + ' ' +
case when syscolumns.isnullable = 1 then 'NULL' else 'NOT NULL' end sql
from syscolumns
inner join sysobjects
on sysobjects.id = syscolumns.id
inner join systypes
on systypes.xtype = syscolumns.xtype
where syscolumns.collation is not null

AminSobati
جمعه 19 مرداد 1386, 21:47 عصر
سعی کردین Collation خود فیلد رو عوض کنین ببینین چی میشه؟ البته بعضی Collationها به بعضی دیگه قابل تبدیل نیستند ولی ارزش تست رو داره!