'মাইক্রোসফ্ট.এসএইচএল সার্ভার.টাইপস' সংস্করণ 10 বা ততোধিক অ্যাজুরিতে পাওয়া যায় নি


98

আমি এএসপি.নেট এমভিসি ৪ তে একটি ওয়েবপি তৈরি করার চেষ্টা করছি The ওয়েবপিটি সত্তা ফ্রেমওয়ার্ক 5 স্পাটিয়াল টাইপ ব্যবহার করেছিল এবং আমি খুব সাধারণ কোড লিখেছি।

  public List<Area> GetAllAreas()
    {
        List<Area> aList = db.Areas.ToList();
        return aList;
    }

অঞ্চলটিতে DbGeometry রয়েছে।

আমি যখন এই স্থানীয় চালনা করি তখন এটি কার্যকর হয়, তবে আমি যখন এটি অ্যাজুরিতে প্রকাশ করি তখন এটি আমাকে এই ত্রুটি দেয়:

স্থান সরবরাহকারী প্রকার এবং ফাংশনগুলি এই সরবরাহকারীর জন্য উপলভ্য নয় কারণ সমাবেশটি 'মাইক্রোসফ্ট.এসএলএল সার্ভার.টাইপস' সংস্করণ 10 বা তার বেশি পাওয়া যায়নি।

কেউ সমাধান করবেন কীভাবে জানেন? :)

ধন্যবাদ!


4
আপনি কি আউজুর ওয়েব সাইট বা মেঘ পরিষেবাদিতে কোনও ওয়েব ভূমিকা ব্যবহার করছেন? এছাড়াও, আপনার ডাটাবেসটি কি এসকিউএল অ্যাজুরি ডাটাবেস? আপনি কি এসকিউএল অ্যাজুরি ডাটাবেসের বিরুদ্ধে আপনার স্থানীয় কোডটি চালানোর চেষ্টা করেছেন এবং এটি কি কাজ করে?
জো ক্যাপকা

উত্তর:


131

আমি সমাধান খুঁজে পেয়েছি! মাইক্রোসফট.এসএলএল সার্ভার.টাইপস কেবলমাত্র নুগেট প্যাকেজটি ইনস্টল করুন

প্রধানমন্ত্রী> ইনস্টল-প্যাকেজ মাইক্রোসফ্ট.এসএলএল সার্ভার.টাইপস

আরও তথ্যের জন্য লিঙ্ক


4
ধন্যবাদ আমি ঠিক দুপুর ২ টায় প্রকাশের পরে আমার সাথে এটি ঘটেছিল।
লি স্মিথ

4
খুশী আমি সেই নুগেট প্যাকেজটি রেখেছি! এটা সবসময় আমাকে পায়।
খাঁটি.ক্রোমে

ঈশ্বর! এটি কেবলমাত্র DbGeography ব্যবহারের জন্য ওয়েব অ্যাপে প্রায় 2MB বাইনারি ডেটা যুক্ত করে (ধন্যবাদ না) এটি এসকিউএল সার্ভারে ব্যবহার করার সময় এটি সিপিইউতেও ভারী ... এটি গ্রহণ করার পরে।
যোভাভ

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

4
সমস্যাটি সমাধান করার জন্য এটি যথেষ্ট ছিল না, আমাকে ক্রিসের উত্তরও করতে হয়েছিল।
শিমি ওয়েইজহ্যান্ডলার 13

115

উত্তর কাজ জরিমানা উপরে যখন সংস্করণ 11 (SQL সার্ভার 2012) সমাবেশের ব্যবহার করা যাবে।

আমার সমাধানটিতে একই সমস্যা ছিল কারণ আমার সলিউশনে একই সমাবেশের 13 (এসকিউএল সার্ভার 2016) সংস্করণে অন্যান্য নির্ভরতা রয়েছে। এক্ষেত্রে নোট করুন যে সন্নিবিষ্টের ফ্রেমওয়ার্ক (কমপক্ষে v6.1.3) কেবল এসেম্বলির 10 এবং 11 সংস্করণ অনুসন্ধান করার জন্য এর স্ক্লালটাইপস এস্প্যাসলোনডারে (এই ব্যতিক্রমের উত্স) হার্ডকড করা আছে

এটিকে কাজে লাগানোর জন্য আমি আবিষ্কার করেছি আপনি সত্তা ফ্রেমওয়ার্কটি বলতে পারেন যে আপনি কোন সমাবেশটি এর মতো ব্যবহার করতে চান:

SqlProviderServices.SqlServerTypesAssemblyName = typeof(SqlGeography).Assembly.FullName;

4
দুর্দান্ত স্পট - এমন মেশিনগুলিতেও প্রযোজ্য যেখানে কেবল এসকিউএল 2014 সিএলআর প্রকারগুলি ইনস্টল করা আছে। আমাদের ক্ষেত্রে, আমরা কেবল এসকিউএল 2012 সিএলআর প্রকারগুলি ইনস্টল করেছি এবং এটি সমস্যার সমাধান করেছে; তবে আপনার যদি সমাবেশগুলির উচ্চতর সংস্করণগুলির উপর নির্দিষ্ট নির্ভরতা থাকে তবে এটি সর্বোত্তম সমাধান বলে মনে হয়।
আন্দ্রেস জোল্টান

4
এটি একটি স্থির পাবলিক সম্পত্তি। এটি অ্যাপ্লিকেশন শুরুতে সেট করা উচিত। উদাহরণস্বরূপ, আমি এটিকে আমার ওয়েব অ্যাপ্লিকেশনের গ্লোবাল.এক্সএক্স.এস.সে অ্যাপ্লিকেশন_স্টার্ট ইভেন্টে সেট করছি।
ক্রিস

4
+1 এটিই আমার পক্ষে কাজ করেছে। আমি আমার কাস্টম EntityContextক্লাসের কনস্ট্রাক্টরে রেখেছি (যা উত্তরাধিকার সূত্রে প্রাপ্ত DbContext)।
ক্রিস

4
আমার বেকন সংরক্ষণ!
ম্যাট ক্যাস্যাট 22'17

23
সমাবেশের হার্ড-কোডিং এড়ানোর জন্য আপনি ব্যবহার করতে পারেনSqlProviderServices.SqlServerTypesAssemblyName = typeof(SqlGeography).Assembly.FullName;
স্যামুয়েল জ্যাক

68

কিছু কারণে আমি একটি বাধ্যতামূলক পুনর্নির্দেশ মিস করছি যা আমার জন্য এই সমস্যাটি স্থির করেছে।

নিম্নলিখিতটি যুক্ত করা আমার সমস্যার সমাধান করে

    <dependentAssembly>
      <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
      <bindingRedirect oldVersion="10.0.0.0-11.0.0.0" newVersion="14.0.0.0" />
    </dependentAssembly>

4
আপনার মেশিনে মাইক্রোসফ্ট.এসএলএল AppDomain currentDomain = AppDomain.CurrentDomain; Assembly[] assems = currentDomain.GetAssemblies(); foreach (Assembly assembly in assems) { _logger.Info(assembly.GetName().FullName); }সার্ভার.আর টাইপসের সংস্করণ নম্বরটি কী তা জানতে, আপনি যেখানে লোগারটি একটি নলগ লগার রয়েছে তা ব্যবহার করতে পারেন
ড্যানিয়েল

4
এটি আমার সমস্যার সমাধান করেছে (যেহেতু আমার ক্ষেত্রে টাইপগুলি ইতিমধ্যে ইনস্টল করা হয়েছিল)। এসকিউএল সার্ভার প্রকারগুলি ইনস্টল করার পরেও যদি কেউ ত্রুটি পান তবে এই উত্তরটি দেখুন check
পোয়েরাজোলু

4
@ আর 2 ডি 2 আপনাকে ধন্যবাদ, এটি আমার জন্য এটিও ঠিক করে দিয়েছে।
ওগ্লাস

4
আমি এসকিউএল সার্ভারটাইপগুলি ইনস্টল করেছি এবং এখনও একটি সমস্যার মুখোমুখি হয়েছি। এটি ওয়েবকনফিগটিতে যুক্ত করা আমার জন্য এটি স্থির করে।
সৌরভজ

26

এটি ঠিক করার জন্য 2 টি উপায় রয়েছে:

  1. যদি আপনার সার্ভার অ্যাক্সেস থাকে তবে কেবলমাত্র "এসকিউএল সার্ভার ২০১২ এর জন্য মাইক্রোসফ্ট সিস্টেম সিএলআর প্রকারগুলি ইনস্টল করুন" এটি https://www.microsoft.com/en-us/download/details.aspx?id=29065 থেকে এসেছে বা সরাসরি লিঙ্কের নীচে সরাসরি লিঙ্ক ব্যবহার করুন এক্স 86: http://go.microsoft.com/fwlink/?LinkID=239643&clcid=0x409 , বা এক্স 64- এর সরাসরি লিঙ্ক: http://go.microsoft.com/fwlink/?LinkID=239644&clcid=0x409
  2. দ্বিতীয় উপায় হ'ল নুগেট প্যাকেজ ম্যানেজার এবং ইনস্টল করা

    ইনস্টল-প্যাকেজ মাইক্রোসফ্ট.এসএলএল সার্ভার.টাইপস

তারপরে নীচের মতো প্লাগইন নোটগুলি অনুসরণ করুন

এমন কোনও মেশিনে 'এসকিউএল সার্ভারের জন্য সিস্টেম সিএলআর টাইপস' ইনস্টল না করে এমন একটি অ্যাপ্লিকেশন স্থানিক ডেটা ব্যবহার করে যাতে আপনার স্থানীয় সমাবেশ SqlServerSpatial110.dll স্থাপন করতে হবে। এই প্রকল্পের x86 (32 বিট) এবং x64 (64 বিট) উভয় সংস্করণ আপনার প্রকল্পে স্কেল সার্ভারটাইপস \ x86 এবং স্কেল সার্ভারটাইপস \ x64 সাব ডিরেক্টরিতে অন্তর্ভুক্ত করা হয়েছে। সি ++ রানটাইম ইনস্টল না করা অবস্থায় নেটিভ এসেম্বলি এমএসভিসিআর 100.dll এছাড়াও অন্তর্ভুক্ত রয়েছে।

রানটাইমে (বর্তমান স্থাপত্যের উপর নির্ভর করে) এই সংস্থাগুলির মধ্যে একটি সঠিক লোড করার জন্য আপনার কোড যুক্ত করতে হবে।

ASP.NET অ্যাপ্লিকেশনগুলি ASP.NET অ্যাপ্লিকেশনগুলির জন্য, Global.asax.cs এ অ্যাপ্লিকেশন_সার্ট পদ্ধতিতে নিম্নলিখিত কোডের লাইন যুক্ত করুন:

SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));

ডেস্কটপ অ্যাপ্লিকেশন ডেস্কটপ অ্যাপ্লিকেশনগুলির জন্য, কোনও স্থানিক ক্রিয়াকলাপ সম্পাদনের আগে চালানোর জন্য নিম্নলিখিত কোডের লাইন যুক্ত করুন:

SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

4
এসকিউএল সার্ভার বা নিউগেট ইনস্টল করা কোনও সমস্যার সমাধান করেনি, এই সাধারণ সিএলআর প্রকারগুলি সমস্যার সমাধান করেছে। এটি গ্রহণযোগ্য সমাধান হওয়া উচিত।
পোয়েরাজোলু

4
এক্স 64 এর লিঙ্কটি আমার জন্য মাইক্রোসফ্ট এসকিউএল সার্ভার 2016 (এসপি 1) (কেবি 3182545) - 13.0.4001.0 (এক্স 64) অক্টোবর 28 2016 18:17:30 কপিরাইট (সি) মাইক্রোসফ্ট কর্পোরেশন এক্সপ্রেস সংস্করণ (-৪-বিট) উইন্ডোজ 10 এন্টারপ্রাইজে 6.3 <X64> (10586 তৈরি করুন)
জাপু

আমার এএসপি.এনইটি স্টাইল লোডার ব্যবহার করা দরকার তবে আমার বিকাশের পথটি ~/পরিবর্তে ছিল ~/bin। আপনার পথটিও পরীক্ষা করে দেখুন নিশ্চিত হন Be
জোকুল

আমি যে এসকিউএল সংস্করণটি চেয়েছিলাম তার জন্য আমি এসকিউএল সার্ভার প্যাকটি ইনস্টল করতে সক্ষম হয়েছি কিন্তু আমার একেবারে নিশ্চিত করে নিতে হয়েছিল যে প্রতিটি এসকিউএল সার্ভার সংস্করণের জন্য পৃথক পৃথক হিসাবে বন্ডিং পুনঃনির্দেশটি ইনস্টল করা সংস্করণে নির্দেশিত হয়েছিল।
ক্রিস রাইস

13

আমিও এই সমস্যার মুখোমুখি হয়েছি, তবে মাইক্রোসফ্ট.এসএইচএল সার্ভার.টাইপস নুগেট প্যাকেজ ইতিমধ্যে ইনস্টল করা আছে।

আমার জন্য যে সমস্যার সমাধান হয়েছে তা হল সমাধান> তথ্যসূত্র> সিস্টেম.ডাটা.এন্টিটি> বৈশিষ্ট্য> স্থানীয় অনুলিপি করুন এবং এটিকে সত্যে সেট করা হয়েছে।

দ্রষ্টব্য: মাইক্রোসফ্টের জন্য স্থানীয় অনুলিপি করুন.এসএইচএল সার্ভার.টাইপসটি ইতিমধ্যে সত্যে সেট করা ছিল এবং এমনকি সিস্টেম.ডাটা.এন্টিটি সহ সমস্যাটি থাকা সত্ত্বেও ত্রুটি বার্তাটি এখনও মাইক্রোসফ্ট.এসএইচএল সার্ভার.টাইপস সম্পর্কে ছিল।

সমাধানটি উইন্ডোজ আজুর ফোরামের


4
এই বিকল্পটি নুগেট প্যাকেজগুলিতে উপলভ্য নয়।
শিমি ওয়েইজহ্যান্ডলার 13

কারণ, যেমনটি উল্লেখ করা হয়েছে, এটি রেফারেন্সের বৈশিষ্ট্যগুলির বিকল্পগুলির মধ্যে রয়েছে, নাগেটের বিকল্পগুলি নয় :) আপনার কাজের জন্য ধন্যবাদ! আমার জন্য কাজ করেছেন
Emixam23

9

অনুগ্রহ করে ওয়েব-কনফিগ ফাইলটি "নির্ভরশীল অ্যাসবেশন" যুক্ত করুন

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <dependentAssembly>
            <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
            <bindingRedirect oldVersion="0.0.0.0-14.0.0.0" newVersion="14.0.0.0" />
        </dependentAssembly>
    </assemblyBinding>
</runtime>

এটি আমার পক্ষে কাজ করেছে


5

আমার জন্য সমাধানটি কেবল কোডের এই লাইনটি Global.asax.cs এ যুক্ত করেছিল Application_Start():

SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));

শুভকামনা আমার ভাইয়েরা।


3

বর্তমান পোস্টের উত্তরে একটি মন্তব্যের পরে, এই দুটি লাইন যুক্ত করে (মূলত ফাংশনটিতে অগ্রাধিকার দিয়ে) কনসোল অ্যাপের জন্য আমার সমস্যার সমাধান করেছে:

SqlProviderServices.SqlServerTypesAssemblyName = typeof(SqlGeography).Assembly.FullName;
SqlServerTypes.Utilities.LoadNativeAssemblies(AppDomain.CurrentDomain.BaseDirectory);

3

আমার ক্ষেত্রে (ক ওয়েবফর্মগুলি অ্যাপ্লিকেশন) আমি নিম্নলিখিত লাইন যোগ সমস্যার সমাধান Application_Startএর Global.asaxফাইল।

SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));
System.Data.Entity.SqlServer.SqlProviderServices.SqlServerTypesAssemblyName = "Microsoft.SqlServer.Types, Version=14.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91";

আমি আশা করি এটি কাউকে সাহায্য করবে


4
এটি ভিএস 2019 পরিবেশের জন্য, সর্বশেষতম সমাধানের জন্য কাজ করেছে। ভাগ করে নেওয়ার জন্য ধন্যবাদ
কোডার কেম্প

1

উপরের সমাধানগুলির কোনওটিই আমার কাজে লাগেনি।

  • এসকিউএল সার্ভার বৈশিষ্ট্য প্যাক ইনস্টল করা হয়েছে? হ্যাঁ
  • নিউগেট প্যাকেজ ইনস্টল করা আছে? হ্যাঁ
  • জিএসি এবং প্রকল্পের বিনে ডিএলএল বিদ্যমান? হ্যাঁ

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


0

ঠিক একই সমস্যা ছিল। আমি ব্যবহার করছি EF6এবং কল করছি SQLযার একটি এসকিউএল ফাংশন রয়েছে যা স্থানিক কমান্ড ব্যবহার করে। আমি এটি ইউনিট পরীক্ষার মাধ্যমে পরীক্ষা করেছি এবং এটি ভাল কাজ করেছে। আমি যখন আমার Asp.Netসমাধানটি টেলিগ্রাম করতে গেলাম তখন আমি ত্রুটিটি পেয়েছি

স্থান সরবরাহকারী প্রকার এবং ফাংশনগুলি এই সরবরাহকারীর জন্য উপলভ্য নয় কারণ সমাবেশটি 'মাইক্রোসফ্ট.এসএলএল সার্ভার.টাইপস' সংস্করণ 10 বা তার বেশি পাওয়া যায়নি।

যোগ করে NUGETপ্যাকেজ "Microsoft.SqlServer.Types" এবং যোগ SqlServerTypes.Utilities.LoadNativeAssemblies(Server.MapPath("~/bin"));করার জন্য Application_Start methodGlobal.asax.csসবকিছু ঠিক কাজ করেন।


0

আমার ক্ষেত্রে, একটি খারাপভাবে রচিত সংযোগ স্ট্রিং এর কারণ ঘটেছে। আপনার সংযোগের স্ট্রিংটি সঠিকভাবে রচিত কিনা তা যাচাই করুন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.