از قدیم قدیما با فارسی نوشتن توی SQL Server مشکل داشتم!
اطلاعات درست توی دیتابیس میره، codepage صفحه Unicode UTF-8 هست، اما با این حال اطلاعات فارسی به صورت علامت سوال توی بانک ذخیره میشه.
حالا راه حل رو اینجا میذارم که اگه حداقل خودم یادم رفت بیام ببینم!
شما یک دیتابیس دارین و این مشکل رو داره، به احتمال زیاد مشکل از اینجاست که Collation روی Latin تنظیم شده و باید به Arabic تبدیل بشه.
خب، پس به قسمت SQL Query Analyzer میریم و این دستور Transact SQL رو مینویسیم:
ALTER DATABASE databasename COLLATE Arabic_CI_AI
اما بعد از اجرا، احتمالاً یک پیغام خطا میگیریم!
The database could not be exclusively locked to perform the operation
برای حل این مشکل، باید ابتدا دیتابیس رو به حالت single user برد، در آخر هم اونو به multi user برگردوند!
پس این دستورات مشکل ما رو حل میکنه:
ALTER DATABASE dbname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE dbname COLLATE Arabic_CI_AI
ALTER DATABASE dbname SET MULTI_USER
اختصارات بعد از نام زبان به چه معنیست
CaseSensitivity
CI specifies case-insensitive, CS specifies case-sensitive.
AccentSensitivity
AI specifies accent-insensitive, AS specifies accent-sensitive.
KanatypeSensitive
Omitted specifies case-insensitive, KS specifies kanatype-sensitive.
WidthSensitivity
Omitted specifies case-insensitive, WS specifies case-sensitive.
BIN
Specifies the binary sort order is to be used.
http://www.maghalat.com/item_35.aspx