অ্যাসেম্বলির 'system.web, সংস্করণ = .0.০.০.০, সংস্কৃতি = নিরপেক্ষ, সরকারীকিটোকেন = b03f5f7f11d50a3a' এসকিউএল ক্যাটালগ পাওয়া যায় নি


9

আমি এইচটিপিএল ইউটিলিটি ব্যবহার করে একটি এসকিউএল সিএলআর ফাংশন স্থাপন করার চেষ্টা করছি System System.Web এর urlDecode পদ্ধতি কিন্তু আমি এটি স্থাপন করতে পারি না। ত্রুটি প্রাপ্ত হয়েছে:

। নেট স্ক্যালক্লিয়েন্ট ডেটা সরবরাহকারী: এমএসজি 6503, স্তর 16, রাজ্য 12, লাইন 1 এসেম্বলির 'system.web, সংস্করণ = 4.0.0.0, সংস্কৃতি = নিরপেক্ষ, পাবলিকিটোকেন = b03f5f7f11d50a3a' ' এসকিউএল ক্যাটালগ পাওয়া যায় নি।

ফাংশন (এসএসডিটি প্রকল্পের অংশ হিসাবে):

using System;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Data.SqlTypes;
using Microsoft.SqlServer.Server;

public partial class UserDefinedFunctions
{
    [Microsoft.SqlServer.Server.SqlFunction(IsDeterministic = true)]
    public static SqlString udf_UrlDecode(SqlString encodedXML)
    {
        string decodedXML;

        decodedXML = HttpUtility.UrlDecode(encodedXML.ToString());

        return new SqlString(decodedXML);
    }
}

এটি এই থ্রেডের সাথে সম্পর্কিত । আমি ভিএস2012 এসএসডিটি এবং ডাটাবেস প্রকল্পের সাথে এসকিউএল সার্ভার 2014। অন্যান্য টার্গেট ফ্রেমওয়ার্কগুলির সাথে চেষ্টা করেছেন, যেমন 3, 3.5, 4 এবং 4.5।

আমি System.Web এর সাথে ASSEMBLY তৈরি করার চেষ্টাও করেছি, তবে তারপরে অন্যান্য অ্যাসেমব্লিগুলি যুক্ত করতে হবে, যেমন মাইক্রোসফট.বিল্ড, সিস্টেম.এক্স্যামেল তারা ব্যর্থ না হওয়া পর্যন্ত। আমি দেখতে পাই System.Web সমর্থিত গ্রন্থাগারগুলির তালিকায় নেই তাই কোনও ধারণা?

উত্তর:


9

হয় আপনি ব্যবহার করতে পারেন Uri.UnescapeDataString (ইন System), যে ক্ষেত্রে আপনি একটি কি প্রয়োজন হবে Replace('+', ' ')স্ট্রিং উপর সামনে থেকে এটি ক্ষণস্থায়ী Uri.UnescapeDataString, অথবা যদি আপনি বরং এটি দিয়ে বিরক্ত করেনি, এই ফাংশন ফ্রি সংস্করণ পাওয়া যায়, এসকিউএল # (যা আমি এর লেখক)

আমদানি System.Webকরা সম্ভবত এটির চেয়ে বেশি কাজ। এবং আসলে, এটি ঝুঁকিপূর্ণ হতে পারে। System.Webপ্রশ্নটিতে আপনি যে লিঙ্কযুক্ত "সমর্থিত লাইব্রেরি" তালিকায় নেই তার একটি যুক্তিসঙ্গত কারণ রয়েছে : এটি কাজ করার নিশ্চয়তা দেয় না! আপনি পরিস্থিতিগুলিতে দৌড়াতে পারেন, বিশেষত যখন ইউএস-এএসসিআইআই-র অক্ষর সেটগুলি নিয়ে আচরণ করা হয়, যা প্রত্যাশার মতো আচরণ করে না এবং মাইক্রোসফ্ট এটি ঠিক করে না। সুতরাং, যদি আপনার একেবারে না হয়, আপনার অ-সমর্থিত ডিএলএল যুক্ত করা উচিত careful "সমর্থিত" তালিকার ডিএলএলগুলি এসকিউএল সার্ভার কোলিশেশন এবং উইন্ডোতে চলমান স্ট্যান্ডার্ড সিএলআর এবং এসকিউএল সার্ভারের অভ্যন্তরে সিএলআর-এর মধ্যে চলমান সিএলআরের মধ্যে পৃথক যে কোনও পরিবেশগত সমস্যাগুলির সাথে কাজ করার জন্য সম্পূর্ণ পরীক্ষা করা হয়েছে এবং যাচাই করা হয়েছে।

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


আপনার কোড সম্পর্কে কয়েকটি নোট:

  1. পরামিতি, ইনপুট বা আউটপুট জন্য। নেট ধরণ ব্যবহার করবেন না। সুতরাং, string encodedXMLহতে পরিবর্তন SqlString encodedXML
  2. এই ফাংশনটি হতাশাবোধমূলক তাই এটি হিসাবে চিহ্নিত করা উচিত, অন্যথায় আপনি একটি পারফরম্যান্স হিট ক্ষতিগ্রস্থ হবে। যোগ IsDeterministic = trueকরার জন্য SqlFunctionএট্রিবিউট।

8

আপনি যেমনটি উল্লেখ করেছেন, System.Webএটি একটি অসমর্থিত লাইব্রেরি। রেফারেন্স করার জন্য System.Webআপনাকে কল করতে হবে CREATE ASSEMBLY। দেখে মনে হচ্ছে আপনি এটি চেষ্টা করেছিলেন তবে আপনি কীভাবে অবস্থানটির অবস্থানটি উল্লেখ করেছেন System.Web.dll? আপনি কি এটি অন্য কোনও স্থানে অনুলিপি / পেস্ট করেছেন? এসকিউএল সার্ভার একই স্থানে নির্ভরশীল সমাবেশগুলি সনাক্ত করার চেষ্টা করবে। অন্য কথায়, আপনি যদি System.Web.dllএকই ডিরেক্টরিতে বসবাসরত অন্যান্য নির্ভরশীল লাইব্রেরির সাথে অবস্থানটির উল্লেখ করেন তবে এটি ঠিক কাজ করা উচিত। এখানে একটি কাজের উদাহরণ। আমি System.Webঅ্যাসেম্বলি এবং আপনার সমাবেশ উভয়ই যুক্ত করতে সক্ষম হয়েছি :

create assembly [System.Web]
from 'C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Web.dll'
with permission_set = unsafe;
go

create assembly SystemWebTest
from 'c:\SqlServer\SystemWebTest.dll'
with permission_set = safe;
go

এসকিউএল সার্ভার লোড হওয়া অন্যান্য সমস্ত অ্যাসেমস্লির সমস্ত ক্লায়েন্টের বার্তাগুলি থেকে আপনি দেখতে পাবেন। তবে খেয়াল করুন, এসকিউএল সার্ভার এর প্রতিটিটির জন্য নিম্নলিখিত সতর্কতা প্রদর্শন করে:

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

তেমনিভাবে, তবে যুক্ত করে System.Web, নিম্নলিখিত সংস্থাগুলি যোগ করা হয়েছে তা একবার দেখুন:

select
    name,
    permission_set_desc,
    is_visible
from sys.assemblies
where is_user_defined = 1
order by is_visible desc;

name                                            permission_set_desc is_visible
System.Web                                      UNSAFE_ACCESS       1
SystemWebTest                                   SAFE_ACCESS         1
Microsoft.Build.Framework                       UNSAFE_ACCESS       0
System.Xaml                                     UNSAFE_ACCESS       0
System.ComponentModel.DataAnnotations           UNSAFE_ACCESS       0
System.Runtime.Caching                          UNSAFE_ACCESS       0
System.Web.ApplicationServices                  UNSAFE_ACCESS       0
System.Drawing                                  UNSAFE_ACCESS       0
Microsoft.Build.Utilities.v4.0                  UNSAFE_ACCESS       0
System.DirectoryServices                        UNSAFE_ACCESS       0
System.DirectoryServices.Protocols              UNSAFE_ACCESS       0
System.EnterpriseServices                       UNSAFE_ACCESS       0
System.Runtime.Remoting                         UNSAFE_ACCESS       0
System.Runtime.Serialization.Formatters.Soap    UNSAFE_ACCESS       0
System.Design                                   UNSAFE_ACCESS       0
System.Windows.Forms                            UNSAFE_ACCESS       0
Accessibility                                   UNSAFE_ACCESS       0
System.Drawing.Design                           UNSAFE_ACCESS       0
System.Web.RegularExpressions                   UNSAFE_ACCESS       0
Microsoft.Build.Tasks.v4.0                      UNSAFE_ACCESS       0
System.ServiceProcess                           UNSAFE_ACCESS       0
System.Configuration.Install                    UNSAFE_ACCESS       0
System.Runtime.Serialization                    UNSAFE_ACCESS       0
System.ServiceModel.Internals                   UNSAFE_ACCESS       0
SMDiagnostics                                   UNSAFE_ACCESS       0

এখানে আসলে কী ঘটছে সে সম্পর্কে সচেতন হওয়া মূল্যবান এবং অন্য অতিরিক্ত অ্যাসেমব্লির টি-এসকিউএল এন্ট্রি পয়েন্টগুলির উপায় না থাকলেও তারা এখন নির্ভরতা are আপনার সত্যিকারের রেফারেন্সের দরকার আছেSystem.Web কিনা তা দেখার জন্য আমি বিকল্পগুলি বিবেচনা করব বা আপনি যা চান তা পূরণ করার জন্য যদি অন্য কোনও রুট রয়েছে।


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

1
@ ভোবি: যদি আপনার একেবারে না হয় তবে আপনার অ-সমর্থিত ডিএলএল যুক্ত করা উচিত। System.Webআপনার যুক্ত লিঙ্কযুক্ত "সমর্থিত লাইব্রেরি" তালিকায় নেই এমন একটি ভাল কারণ রয়েছে : এটি কাজ করার গ্যারান্টিযুক্ত নয়! । আপনি পরিস্থিতিগুলিতে দৌড়াতে পারেন, বিশেষত যখন ইউএস-এএসসিআইআই-র অক্ষর সেটগুলি নিয়ে আচরণ করা হয়, যা প্রত্যাশার মতো আচরণ করে না এবং মাইক্রোসফ্ট এটি ঠিক করে না। আমি আমার উত্তরে এই সম্পর্কে একটি নোট যুক্ত করব কেবল তাদের পক্ষে পরিষ্কার হওয়ার জন্য যারা জানেন না।
সলোমন রুটজকি

@ শ্রুতজকি আমি সম্মত
ডাব্লুবিউই

1
তুমি একজন জীবন রক্ষাকারী. আমি এই লাইব্রেরিটি আমদানি করতে না পারলে আমি এসএল হতে যাচ্ছিলাম। (এটি অত্যন্ত বিরল ক্ষেত্রে একটি।)
ডেভিনিস্ট

5

পরীক্ষা করে দেখুন এই উত্তর । আপনি ব্যবহার করতে হবে না Uri.UnescapeDataStringবা System.Web। ফাংশন সহ এবং এর WebUtilityভিতরে একটি ক্লাস রয়েছে ।System.NetHtmlEncodeHtmlDecode


আপনার চিহ্নিত করা উচিত যে WebUtilityএটি কেবল এসকিউএল সার্ভার 2012, 2014 বা আরও নতুন ব্যবহার করছেন। এখনও এসকিউএল সার্ভার ২০০ 2005, ২০০৮ এবং ২০০৮ আর 2-তে রয়েছে এটি নেট নেট ফ্রেমওয়ার্ক 4.0-এ চালু হওয়ার কারণে এটি ব্যবহার করতে সক্ষম হবে না।
সলোমন রুটজকি 16

@ শ্রুতজকি প্রশ্নটি 2014 এর জন্য তবে ব্যবহারকারীদের এই সীমাবদ্ধতা সম্পর্কে অবহিত করা গুরুত্বপূর্ণ। .NET ফ্রেমওয়ার্ক সংস্করণ এবং এসকিউএল সার্ভার সংস্করণের মধ্যে সম্পর্কটি দেখায় এমন একটি লিঙ্ক আছে যা আমি পোস্ট করতে পারি?
skeletank

আমার নিবন্ধটি আজ প্রকাশিত হয়েছিল সুতরাং এখন এসকিউএল সার্ভার সংস্করণ এবং এসকিউএলসিআরআর বৈশিষ্ট্যগুলির (ফ্রেমওয়ার্ক এবং সিএলআর সংস্করণ সহ) এর মধ্যে সম্পর্কযুক্ত একটি লেখচিত্র উপস্থিত রয়েছে: এসকিউএলসিআরআর স্তর সিঁড়ি 5 স্তর: বিকাশ (এসকিউএল সার্ভারের মধ্যে .NET ব্যবহার করে) (নিখরচায় নিবন্ধকরণ প্রয়োজন )।
সলোমন রুটজকি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.