PDA

View Full Version : خطای ناشناس



hmm
سه شنبه 04 اردیبهشت 1386, 08:32 صبح
مختصر و مفید:
در هنگام گرفتن query و join چند جدول این پیغام داده میشه

Cannot resolve collation conflict for equal to operation.

حمیدرضاصادقیان
سه شنبه 04 اردیبهشت 1386, 09:09 صبح
شما وقتی داری دو جدول رو باهم join میکنی درداخل این دو جدول دو یا چند فیلد وجود داره که از نوع text هست و collation های آنها یکی نیست. شما برو اونها رو تست کن.

hmm
سه شنبه 04 اردیبهشت 1386, 19:16 عصر
مرسی حمید جان از راهنمایتون
نمیدونم چرا وقتی از DTS برای upload اطلاعات بروی Host استفاده میکنم Owner و Collation تغییر میکنه
بهر حال با راهنمایی شما و Bol مشکل فعلا حل شد



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

AminSobati
سه شنبه 04 اردیبهشت 1386, 21:23 عصر
حمید جان شما به قول معروف on-the-fly هم میتونین Collation رو فقط در محاسبات (نه در اصل اطلاعات) عوض کنین، مثلا:


select * from customers
where customerid='alfki' collate arabic_ci_ai
order by country collate slovenian_bin2

hmm
سه شنبه 04 اردیبهشت 1386, 21:29 عصر
ممنون امین جان نکته بسیار مفیدی برای من بود


نمیدونم چرا وقتی از DTS برای upload اطلاعات بروی Host استفاده میکنم Owner و Collation تغییر میکنآیا من جایی اشتباه کردم؟

فرق بین arabic_ci_as, arabic_ci_ai چیه؟

AminSobati
سه شنبه 04 اردیبهشت 1386, 23:12 عصر
در حقیقت Collation در چند سطح به ارث برده میشه:
موقع نصب SQL Server، یک Default Collation مشخص میکنیم. یعنی اگر موقع ساخت دیتابیس، Collation رو مشخص نکردیم، از مقدار پیش فرض سرور استفاده کنه. در سطح پائینتر، دیتابیس Default Collation داره به این معنی که اگر Collation یک فیلد در جدول رو مشخص نکردیم، از پیش فرض دیتابیس استفاده کنه. ولی اینها فقط Default هستند و شما مختار هستین برای دیتابیس ها و فیلدها Collationهای متنوع داشته باشید. مثلا اگر یک نرم افزار چند زبانه تولید میکنین، میتونین پیغامی که قراره به کاربر نمایش بدین رو در زبانهای مختلف در یک جدول که هر فیلد اون Collation مناسب خودش داره قرار بدین.
بعنوان جمع بندی، احتمالا Default Collation سرور شما در اینترنت فرق داره و وقتی جدول رو بدون مشخص کردن Collation هر فیلد ساختین، از سرور به ارث برده لذا وقتی با DTS اطلاعات رو ارسال کردین، دچار ناسازگاری شده.
در مورد Owner، قائدتا لاگینی که Host به شما داده عضو sysadmin نیست که بتونین از dbo استفاده کنین. پس بهتره ازشون بخواین Username شما در دیتابیس رو عضو db_owner کنند تا حداقل از این طریق بتونین به Objectهای تحت مالکیت dbo داخل دیتابیس خودتون استفاده کنین.
AS=Accent Sensitive
AI=Accent Insensitive