پایگاه دانش:
تغییر کالیشن در کوئری
منتشر شده توسط , ویرایش شده توسط: در تاریخ 1394/11/4 یکشنبه 12:45

گاهی اوقات در هنگام join دیتابیس هایی با Collation مختلف با خطای عدم تطابق Collation دیتابیس ها مواجه میشویم. با توجه به اینکه اگر دیتابیسی با شماهای مختلف داشته باشیم امکان تغییر Collation کار ساده ای نخواهد بود لذا کافی است از دستور زیر برای تغییر Collation در کوئری ها و گزارشات خود استفاده نماییم:

نام فیلد مورد نظر COLLATE Latin1_General_CI_AS

 شما میتوانید از الگوی زیر استفاده کنید:

 

SELECT
'REVOKE ' + convert(varchar(50),x.[Action])
+ ' on ' + x.[Schema]
+ '.' + convert(varchar(50),x.[Object])
+ ' TO ' + convert(varchar(50),x.[User]) COLLATE Latin1_General_CI_AS
FROM (
SELECT
u.name COLLATE Latin1_General_CI_AS AS 'User',
schema_name(o.schema_id) As 'Schema',
o.name COLLATE Latin1_General_CI_AS AS 'Object' ,
p.permission_name COLLATE Latin1_General_CI_AS AS 'Action'
--into tmp
FROM sys.database_permissions p, sys.database_principals u, sys.all_objects o
WHERE o.object_id = p.major_id
AND p.grantee_principal_id = u.principal_id
AND p.grantee_principal_id IN (0, 2)
) x

 

 لازم به ذکر است که در کوئری های فوق نوشتن بخش Convert اجباری نیست.

(4 رای (ها))
مفید
مفید نیست

نظرات (0)
نظری جدید منتشر کنید
 
 
نام کامل:
ایمیل:
نظرات:
تایید کپچا 
 
لطفاً متن موجود در تصویر را در زیر وارد کنید (برای جلوگیری از ارسالهای خودکار).

سیستم پشتیبانی (تیکتینگ) فراگستر