এসকিউএলসিএমডি কমান্ড অ্যাকসেন্টগুলি সন্নিবেশ করতে সক্ষম নয়


19

কমান্ড লাইন থেকে একটি নতুন ডাটাবেস সেটআপ করার জন্য আমি sqlcmd.exe চালানোর চেষ্টা করছি । আমি উইন্ডোজ 7 64 বিটগুলিতে এসকিউএল সার্ভার এক্সপ্রেস 2012 ব্যবহার করছি।

আমি যে আদেশটি ব্যবহার করি তা এখানে:

SQLCMD -S .\MSSQLSERVER08 -V 17 -E -i %~dp0\aqualogyDB.sql -o %~dp0\databaseCreationLog.log 

এবং এখানে স্কিল ফাইল তৈরির স্ক্রিপ্টের একটি অংশ রয়েছে:

    CREATE DATABASE aqualogy 
    COLLATE Modern_Spanish_CI_AS
    WITH TRUSTWORTHY ON, DB_CHAINING ON;
    GO
    use aqualogy
    GO
    CREATE TABLE [dbo].[BaseLayers] (
    [Code] nchar(100) NOT NULL ,
    [Geometry] nvarchar(MAX) NOT NULL ,
    [IsActive] bit NOT NULL DEFAULT ((1)) 
    )

    EXEC sp_updateextendedproperty @name = N'MS_Description', @value = N'Capas de     cartografía base de la aplicaicón. Consideramos en Galia Móvil la cartografía(...)'
, @level0type = 'SCHEMA', @level0name = N'dbo'
, @level1type = 'TABLE', @level1name = N'BaseLayers'

ভাল, দয়া করে পরীক্ষা করে দেখুন যে শব্দগুলিতে কিছু উচ্চারণ রয়েছে; যা টেবিলের বর্ণনা। ডাটাবেসটি কোনও সমস্যা ছাড়াই তৈরি করা হয়েছে। 'কোলেট' স্ক্রিপ্ট দ্বারা বোঝা যায়, যেমন আপনি সংযুক্ত স্ক্রিনশটটিতে দেখতে পারেন। তবুও, সারণী পরীক্ষা করার সময় উচ্চারণগুলি সঠিকভাবে প্রদর্শিত হয় না।কোলেশন সমস্যা

আমি সত্যিই কোন সাহায্যের প্রশংসা করব। আপনাকে অনেক ধন্যবাদ.

[সম্পাদনা]: হাই হাই। নোটপ্যাড ++ ব্যবহার করে এসকিউএল ফাইল এনকোডিং পরিবর্তন করা ভাল কাজ করেছে! আপনাকে সহায়তার জন্য আপনাকে অনেক ধন্যবাদ: আমি এই সমস্যাটির সাথে আকর্ষণীয় কিছু শিখেছি!

এখানে চিত্র বর্ণনা লিখুন


1
আপনার এসকিউএল স্ক্রিপ্ট ফাইলটির এনকোডিং কী?
পন্ডলাইফ

আমি @ পন্ডলাইফের ধারণাটি নিয়ে যাব। একটি পাঠ্য সম্পাদক (নোটপ্যাড ++ এর মতো) ধরুন, সেখানে .sQL ফাইলটি খুলুন, এনকোডিং এ যান এবং দেখুন যে আপনার ফাইলটি এএনএসআইতে নেই (বা অন্য কোনও অসমর্থিত এনকোডিং)। যদি তা হয় তবে ফাইলটিকে অন্য কোনও কিছুতে রূপান্তর করতে বেছে নিন। আমি বলব ইউটিএফ 8 এটি করা উচিত। এটি কীভাবে চলুন তা আমাদের জানান।
মেরিয়ান

উত্তর:


8

মতামত অনুসারে, সমস্যাটি ঠিক টেবিলের সাথে নয় বা যেভাবে এসকিউএলসিএমডি বিশেষ অক্ষরগুলি আমদানি করে। সাধারণত, সমস্যাযুক্ত আমদানিগুলি স্ক্রিপ্টের নিজেই বিন্যাসের সাথে সম্পর্কিত।

ম্যানেজমেন্ট স্টুডিও নিজেই একটি নির্দিষ্ট এনকোডিং দিয়ে সংরক্ষণের বিকল্প সরবরাহ করে, যা ভবিষ্যতে সমস্যার সমাধান করা উচিত। প্রথমবারের জন্য কোনও ফাইল সংরক্ষণ করার সময় (বা সংরক্ষণ হিসাবে ব্যবহার করুন) আপনার এনকোডিং সহ সেভ বিকল্পটি ব্যবহার করতে সেভ বোতামের নিকটে ছোট তীরটিতে ক্লিক করা উচিত ।

এখানে চিত্র বর্ণনা লিখুন

ডিফল্টরূপে এটি ফাইলটি পশ্চিম ইউরোপীয় (1252) এ সংরক্ষণ করে । যখনই আমার কোনও বিশেষ অক্ষর রয়েছে আমি ইউটিএফ 8 ব্যবহার করি (যদিও অন্য কোনও বিধিনিষেধযুক্ত এনকোডিং উপযুক্ত হবে) কারণ এটি সাধারণত দ্রুততম সমাধান।

এখানে চিত্র বর্ণনা লিখুন

আপনি যে এসএসএমএস ব্যবহার করছেন তা আমি নিশ্চিত (পিক থেকে) নিশ্চিত নই, সুতরাং দয়া করে নিশ্চিত হয়ে নিন যে আপনার নিজস্ব সম্পাদকের কাছে ফাইলটি অন্য একটি এনকোডিংয়ে সংরক্ষণ করার বিকল্প রয়েছে। যদি তা না হয় তবে একটি স্মার্ট সম্পাদক (যেমন আপনি ইতিমধ্যে নোটপ্যাড ++ এ চেষ্টা করেছেন) তে ফাইলটি রূপান্তর করা সাধারণত কাজ করে। যদিও এটি কার্যকর না হতে পারে যদি আপনি প্রশস্ত এনকোডিং থেকে সংকীর্ণে রূপান্তর করেন এবং তারপরে একটি বিস্তৃত জায়গায় ফিরে যান (যেমন: ইউনিকোড থেকে এএনএসআইতে এবং ইউনিকোডে ফিরে)।


হাই মারিয়ান আবার আপনাকে ধন্যবাদ. আমি নাভিট্যাট থেকে 'ডেটা ট্রান্সফার' বৈশিষ্ট্যটি ব্যবহার করেছি, কারণ এটি এসকিএল স্ক্রিপ্টটি যেভাবে উত্পন্ন করে তা আমাকে পছন্দ করে (দ্রুত, এমডিএফ-ফাইল স্বাধীন, এবং এখন থেকে সবসময় আমার জন্য কাজ করেছিল)। আমি নাভিটকেটে 'ডেটা ট্রান্সফার' বৈশিষ্ট্যে কিছু পরামিতি পরীক্ষা করেছি, তবে আউটপুট ফাইল এনকোডিং পরিবর্তন করার কোনও উপায় আমি পাইনি। এনকোডিং পরিবর্তন করতে আমাকে নোটপ্যাড ++ ব্যবহার করে কিছু অতিরিক্ত কাজ করতে হবে তবে এটি কোনও বড় বিষয় নয়।
ওসকিটার

ঠিক আছে, কোন সমস্যা নেই। যদিও, সাধারণত, এই সাইটে ধন্যবাদ আপভোট বৈশিষ্ট্যটি (উত্তরের নিকটস্থ আপ তীর) ব্যবহার করে বিতরণ করা হয় যদি উত্তরটি কার্যকর হয়, বা, এটি যদি আপনার সমস্যাটিকে পুরোপুরি সমাধান করে, এমনকি চিহ্নটিকে উত্তর হিসাবে ব্যবহার করে (উত্তরের নিকটে চেকমার্ক) ) :-)। FAQ এ আরও এখানে দেখুন ।
মারিয়ান

আমি আমার শেষ মন্তব্যটি সংশোধন করেছি: নাভিচ্যাট দিয়ে 'ডেটা ট্রান্সফার' চালানোর সময় ফাইল আউটপুট এনকোডিং নির্বাচন করা সম্ভব।
ওস্কিটার

দুর্দান্ত, সুতরাং এখন আপনি ম্যানুয়াল রূপান্তর পদক্ষেপটি বাইপাস করতে সক্ষম হবেন। এটা আরও ভালো.
মারিয়ান

2
এই উত্তরটি সঠিক নয় বলে মনে হচ্ছে। আমি ইউটিএফ -8 এ নোটপ্যাড ++ দ্বারা ফাইলটি সংরক্ষণ করেছি। SQLCMD.exe অক্ষরগুলি সঠিকভাবে স্থানান্তর করে না। আমি লিখিত সামগ্রীটি যদি এসএসএমএসে অনুলিপি করি তবে এটি ঠিক আছে works আসল সমাধানটি হ'ল স্বশেক দ্বারা পরম -f 65001 যুক্ত করার জন্য উত্তরটি সরবরাহ করা হয়েছিল
টমাস

39

অন্য একটি বিকল্প, যা আমি সবে শিখেছি, তা sqlcmdডকুমেন্টেশন থেকে আসে । sqlcmdফাইল এনকোডিংয়ের সাথে মিলে যাওয়ার জন্য আপনাকে কোডপেজ সেট করতে হবে। ইউটিএফ -8 এর ক্ষেত্রে কোডকটি 65001 তাই আপনি চান:

SQLCMD -S .\MSSQLSERVER08 -V 17 -E -i %~dp0\aqualogyDB.sql -o %~dp0\databaseCreationLog.log -f 65001


1
এটি সবেমাত্র আমার জীবন বাঁচিয়েছে, আমি আমদানি-সিএসভি-এনকোডিং ইউটিএফ 8 সহ একটি সিএসভি ফাইল পড়ার জন্য একটি পাওয়ারশেল স্ক্রিপ্ট করতে চলেছিলাম যাতে এটি সঠিক হয়ে যায়। ধন্যবাদ
স্প্ররি

এটি আমার পক্ষে কাজ করেছিল যখন আমাকে একটি এনভিচারার কলামে ফাদাস (á, é, í, Irish, ú) সহ আইরিশ পাঠ্য মান সন্নিবেশ করতে হয়েছিল
এপ্রিল

এটি সঠিক উত্তর
পিচম্যাট

2

এই ধরণের জিনিসটি খুব কৃপণ কারণ কারণ আপনাকে না বলেই অনেক কিছু করা হয়েছে।

আমি প্রথম যেটি করবো তা হল স্ট্রিংটি প্রদর্শনের জন্য sqlcmd ব্যবহার করুন। এটি যদি cmd.exe উইন্ডোতে সঠিকভাবে প্রদর্শিত হয় তবে এটি একটি কার্যকর তথ্য। এরপরে, আমি সারিটি convertস্ট্রিংটি ভেরিবিনারিতে নির্বাচন করব তা দেখতে বাইটগুলি আসলে কী আছে তা দেখতে। আমি মনে করি কার্টোগ্রাফিয়াটি প্রদর্শিত হবে 0x636172746f67726166c3ad61, যেখানে উচ্চারণিত "i" বাইটস সি 3 এড দ্বারা প্রতিনিধিত্ব করা হয়েছে, যা সেই চরিত্রটির জন্য ইউটিএফ -8 এনকোডিং। আধুনিক স্প্যানিশ কলামে (উইন্ডোজ 1252) ইউটিএফ -8 থাকা ভাল নয়। সেই অক্ষরের জন্য উইন্ডোজ 1252 এর বাইট মান 237 দশমিক (হেক্স ইডি)।

যদি কলামটি ভুল চিহ্নবিহীন ডেটা ধারণ করে, তবে ত্রুটিটি কীভাবে এটি sertedোকানো হয়েছিল তার মধ্যে রয়েছে। সম্ভবত স্ট্রিং ধ্রুবকগুলির মধ্যে শীর্ষস্থানীয় এন মুছে ফেলা - N'string'এসকিউএল সার্ভারকে ইউনিকোড স্ট্রিং তৈরি করতে বলে, তবে সরল 'string'অক্ষরগুলি ক্লায়েন্টের এনকোডিং ব্যবহার করে - এটি ইউনিকোডের পরিবর্তে আধুনিক স্প্যানিশ সন্নিবেশ করায়।

যদি কলামটি সঠিকভাবে এনকোডড ডেটা ধারণ করে, তবে আমি বলব যে আপনি জিইউআই ডিসপ্লেতে একটি বাগ খুঁজে পেয়েছেন।

আপনি যদি ডেটা সঠিকভাবে সন্নিবেশ করানোর জন্য sqlcmd না পেয়ে (নেতৃত্বাধীন এন বা না), তবে আপনি মাইক্রোসফ্টের কাছে অভিযোগ করতে চান। আপনি যখন করেন, কলামে সঞ্চিত হিসাবে বাইটগুলি প্রদর্শন করতে সক্ষম হচ্ছেন - ব্যবহার করে convert(colname as varbinary)- কী ভুল হচ্ছে তা ব্যাখ্যা করার জন্য গুরুত্বপূর্ণ।


হাই জেমস, আপনার বিস্তারিত উত্তরের জন্য আপনাকে অনেক ধন্যবাদ। আমি কিছু পরীক্ষা করেছি এবং SQLlCdd.exe সঠিক স্ট্রিং দেখাচ্ছে না । এটি কীভাবে ডেটা .োকানো হয় সে সম্পর্কে স্পষ্টতই একটি সমস্যা।
ওস্কিটার

এসকিএল প্রোফাইলার ব্যবহার করে, এসকিউএল সার্ভার জিইউআই ক্লায়েন্ট ব্যবহার করার সময় এসকিউএল সার্ভারে কোন বাক্য প্রেরণ করা হয়েছিল তা ডিবাগ করেছিলাম। অন্তর্ভুক্ত করুন [এলিমেন্টটাইপ] ([কোড], [নাম], [বিবরণ], [জ্যামিতি টাইপ], [স্ট্রিংআইডি], [ক্যাপচারড জ্যামিতি টাইপ]) ভ্যালুস ('এসট্যাকশন', 'এস্তাসেইন', 'এস্তাসেইন', 'মাল্টপয়েন্ট), নুল, 'পয়েন্ট'); সূক্ষ্মভাবে কাজ করেছে, সুতরাং সমস্ত অ্যাকসেন্টগুলি সঠিকভাবে inোকানো হয়েছিল !. এটি একই 'সন্নিবেশ বাক্য' যা আমার স্ক্যাল স্ক্রিপ্টে প্রদর্শিত হবে। আমি কি স্কেল স্ক্রিপ্ট ফাইলটিতে অক্ষর কোড নির্দিষ্ট করব?
ওস্কিটার
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.