SSIS یک رشته یونیکد را به عنوان یک کد کاراکتر Shift-JIS به یک فایل متنی خروجی می دهد
الگوهایی که منجر به خطا می شوند
فرض کنید که یک ستون از نوع nvarchar در یک جدول بر روی SQL سرور دارای رشته ای است که نمی تواند در Shift-JIS استفاده شود. به هر حال، اگر این کاراکترها را در ستون وارچار قرار داده باشید، کاراکترهایی وجود دارند که نمی توان از آن ها استفاده کرد، مانند ستون "ColumnShiftJis" در سمت راست. جايگزينش کن .
در SSIS، جریان تنظیم می شود تا داده های جدول قبلی را همان طور که در شکل نشان داده شده است بخواند و آن را به یک فایل متنی خروجی دهد.
فرض کنید که شما می خواهید آن را به عنوان یک فایل CSV خروجی. از آنجا که Shift-JIS است که اغلب در فایل های CSV استفاده می شود، مجموعه ای از کاراکتر encoding از فایل متنی به Shift-JIS.
اگر با این تنظیم اجرا کنید، خطایی در زمان بندی خروجی رخ خواهد داد.
یک پیام خطا شبیه به موارد زیر ظاهر می شود:
فایل خروجی نیز در نیمه راه از طریق زمانی که خطا رخ داده است قطع خواهد شد.
اگر شما سعی می کنید به خروجی به عنوان آن است، آن را یک خطا خواهد بود، بنابراین سعی کنید گنجاندن "تبدیل داده ها" در وسط.
نوع داده را از "DT_WSTR" به "DT_STR" تبدیل کنید و آن را به فرمی تبدیل کنید که می تواند خروجی به Shift-JIS باشد.
با این حال، اگر این کار را نیز اجرا کنید، خطا دریافت خواهید کرد. این به این دلیل است که SSIS به شدت با شکست مواجه پردازش ضمنی است که باعث می شود داده ها از دست رفته است. اگر می خواهید SSIS پردازش های متنی را انجام دهد، باید به صراحت جایگزینی کاراکتر را برای همه کاراکترها مشخص کنید.
راه حل
راهی برای تغییر نوع متن با استفاده از SQL در هنگام خواندن از یک جدول در یک پایگاه داده وجود دارد. اگر SQL باشد، موتور SQL Server است که آن را اجرا می کند، نه SSIS، بنابراین می تواند بدون خطا اجرا شود. به هر حال، تمام شخصیت هایی که نمی توانند در Shift-JIS مورد استفاده قرار گیرند، «؟» هستند. تبدیل به: این مشخصات سمت SQL سرور است. حتی اگر SSIS ن باشد، نتیجه برای تمام سیستم هایی که از SQL Server استفاده می کنند مشابه است.
مترجم ADO NET را باز کنید و حالت دسترسی به داده ها را به SQL Command تغییر دهید. حالا که می توانید SQL را وارد کنید، یک بیانیه Select بنویسید تا داده ها را از پایگاه داده بازیابی کنید. متنی که شامل کاراکتر هایی است که در Shift-JIS قابل استفاده نیست به زور با استفاده از cast به وارچار تبدیل می شود.
از آنجا که کاراکترهای قابل استفاده در Shift-JIS در حال حاضر در زمان جریان داده ها به SSIS حذف شده اند، پردازش می تواند به عنوان آن منتقل می شود.
شما می توانید ببینید که متن با موفقیت به CSV نوشته شده است. همچنین، تمام کاراکتر هایی که در Shift-JIS قابل استفاده نیست،"؟" هستند. شما می توانید ببینید که آن را تبدیل شده است به: