এমএস এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে সঞ্চিত পদ্ধতি তৈরি করা সত্ত্বেও "সঞ্চিত পদ্ধতিটি খুঁজে পাওয়া যায়নি"


21

আমি testtableডাটাবেসের ভিতরে একটি সারণী তৈরি testbaseকরেছি যার নিম্নলিখিত কাঠামো রয়েছে:

product_no (int, not null)
product_name (varchar(30), not null)
price (money, null)
expire_date (date, null)
expire_time (time(7), null)

যা আমি মাইক্রোসফ্ট এসকিউএল সার্ভার ২০০৮ ম্যানেজমেন্ট স্টুডিও ব্যবহার করেছি।

আমি সঞ্চিত পদ্ধতি নির্মিত testtable_pricesmallerনিম্নরূপ

use testbase
go
create procedure testtable_pricesmaller
    @pricelimit money
as
select * from testtable where price = @pricelimit;
go

এবং Object Explorerমাইক্রোসফ্ট এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে সঞ্চিত পদ্ধতি দেখতে সক্ষম । (এটি নীচের গাছের কাঠামোতে তালিকাভুক্ত Object Explorer)

Databases
    + testbase
        + Tables
            + dbo.testtable
        + Programmability
            + Stored Procedures
                + dbo.testtable_pricesmaller

নিম্নলিখিত ত্রুটিটি পেয়ে আমি এটি খুব অদ্ভুত বলে মনে করি:

Could not find the stored procedure 'dbo.testtable_pricesmaller'.

যখন আমি নিম্নলিখিত এসকিউএল বিবৃতি কার্যকর করি:

execute dbo.testtable_pricesmaller 50

এটি কি অনুপস্থিত হতে পারে?


আপনি কি নিশ্চিত করেছেন যে আপনার এক্সিকিউট স্টেটমেন্টটি "টেস্টবেস" ডাটাবেসের প্রসঙ্গে চলছে? আপনি কোনও ইউএসই স্টেটমেন্ট যুক্ত করার বা অবজেক্টের নামটিকে পুরোপুরি যোগ্য করে তোলার চেষ্টা করতে পারেন।
শন মেল্টন

হ্যাঁ, আমি USEবিবৃতিটি যুক্ত করেছি তবে এটি আমাকে ত্রুটি দেয়।
জ্যাক

আমার নির্বাহী বিবৃতিতে আমাকে স্পষ্টরূপে ডাটাবেসের নামটি সংজ্ঞায়িত করতে হয়েছিল: এক্সইসি [টেস্টবেস]। [ডিবিও]। [টেস্টেবল_প্রাইসিসমিলার] 50
জারুনক

উত্তর:


17

ইন্টেলিজেন্স রিফ্রেশ স্থানীয় ক্যাশে এটি ঠিক করা উচিত


7

নতুন সঞ্চিত পদ্ধতি যুক্ত করার পরে আপনাকে ডাটাবেস পুনরায় আরম্ভ করতে হবে না, যদিও এটি দেখার জন্য আপনার অবজেক্ট এক্সপ্লোরারকে রিফ্রেশ করতে হবে।

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


4

শেষ পর্যন্ত আমি জানি কেন এমএস এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে বার্তাটি উপস্থিত হয়।

এমএস এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিওতে এটিতে একটি সঞ্চিত প্রক্রিয়া তৈরি করার পরে এটি পুনরায় চালু করার প্রয়োজন।

এমএস এসকিউএল সার্ভার ম্যানেজমেন্ট স্টুডিও পুনরায় চালু করার পরে, আর এরকম কোনও ত্রুটি নেই।

(আশ্চর্যের বিষয়, এর অর্থ কি এই যে প্রতিবার আমি কোনও সঞ্চিত প্রক্রিয়া তৈরি করি, আমাকে এটি পুনরায় চালু করতে হবে?)


12
আপনার এটি পুনরায় আরম্ভ করা উচিত নয়।
শন মেল্টন

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

5
আপনি যা করেছেন তার একমাত্র পিছনের অংশ ইন্টেলিজেন্স। এক্সিকিউট স্টেটমেন্টটি কার্যকর করা এসএসএমএস পুনরায় চালু না করে কাজ করা উচিত ছিল। অন্য কিছু আছে যা এটি কার্যকর না করার জন্য অবদান রেখেছিল। আমি @ শ্যাশনমেল্টনের সাথে একমত
টমাস স্ট্রিংগার

@ শর্ক, আকর্ষণীয়! আমার এসএসএমএস কেন এমন আচরণ করে যে আমাকে এটি বেশ অদ্ভুত মনে হয় তা যদি কেউ আমাকে ব্যাখ্যা করতে পারে তবে আমি প্রশংসা করব।
জ্যাক

6
ভবিষ্যতের রেফারেন্সের জন্য: সিটিআরএল-শিফট-আর ইন্টেলিসেন্সের জন্য স্থানীয় ক্যাশে রিফ্রেশ করবে।
অ্যাডাম Scharp

3

আপনার তৈরি আদেশ হতে হবে

create procedure dbo.testtable_pricesmaller
    @pricelimit money

আপনি অনুপস্থিত dbo.পদ্ধতির নামের আগে । আপনি যখনই কোনও পদ্ধতি তৈরি করেন, তখন কোনও পদ্ধতির নামের সাথে ব্যবহারকারী / স্কিমাকে সুস্পষ্টভাবে সংজ্ঞায়িত করা ভাল অনুশীলন অর্থাৎ পদ্ধতির নামটিতে পুরোপুরি যোগ্য স্বাক্ষর থাকা উচিত।

আমি আশা করি এটা তোমাকে সাহায্য করবে।


3

এসকিউএল সার্ভার ২০০৮-এ, যখন কোনও উইন্ডোজ অ্যাকাউন্টের অধীনে লগ ইন করা হয়, আপনার যদি SYSADMIN সুরক্ষা স্তর না থাকে, যখন আপনি কোনও স্পষ্টভাবে স্কিমাকে নির্দিষ্ট করে না দিয়ে কোনও বস্তু তৈরি করেন, এটি এটি [DOMAIN \ ব্যবহারকারীর নাম] এর অধীনে তৈরি করতে পারে [[অবজেক্টনাম) ] [ডিবিও] এর পরিবর্তে [[অবজেক্টনাম] (এটি এসকিউএল সার্ভারে 2012 স্থির করা হয়েছিল আমার মনে হয়)।

যখন আমি কোনও ব্যবহারকারীর সুরক্ষা স্তর হ্রাস করেছিলাম তখন আমার সাথে এই সমস্যাটি হয়েছিল এবং তিনি যে প্রক্রিয়াটি চালাচ্ছিলেন তার মধ্যে একটি স্কিম ছাড়াই টেবিলগুলি বাদ এবং পুনরায় তৈরি করছিল, সুতরাং প্রক্রিয়াটির বাকী অংশ ক্র্যাশ হচ্ছিল কারণ এটি আবার বস্তুটিতে অ্যাক্সেস করতে পারে নি it । সারণীগুলি সারণী এখন তার ডোমেন ব্যবহারকারীর নাম অনুসারে তৈরি করা হয়েছিল।

এই আচরণ সম্পর্কে মাইক্রোসফ্ট পোস্ট এখানে:

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-schema-transact-sql?view=sql-server-2017 ("অন্তর্ভুক্ত স্কিমা এবং ব্যবহারকারী সৃষ্টি" বিভাগটি দেখুন)

ডিবিও স্কিমার অধীনে সারণী তৈরি হচ্ছে না

এসকিউএল ২০০৮ আর 2 ব্যবহারকারী / স্কিমা তৈরি করে যখন উইন্ডোজ ব্যবহারকারী সারণী তৈরি করে

সুতরাং, সংক্ষেপে, আপনার সম্ভবত হয় একটি ডাটাবেস সমস্যা রয়েছে (আপনি একটি টেবিলটি একটি ডাটাবেসে তৈরি করেন তবে এটি অন্য একটি থেকে অ্যাক্সেস করার চেষ্টা করুন) অথবা আমি যেমন বর্ণনা করেছি তেমন সমস্যা আছে।


2

আমি জানি এটি পুরানো; আমি এই একই সমস্যার সমাধানের জন্য অনুসন্ধান করার সময় আমি এই প্রশ্নটি জুড়ে এসেছি এবং আমি এই উত্তরটি এই আশায় পোস্ট করছি যে এটি অন্যদের যারা এই প্রশ্নটি সন্ধান করে তাদেরও সহায়তা করে।

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

এটি সমাধানের জন্য, আমি এসকিউএল সার্ভারের ইন লগিনের জন্য ডিফল্ট ডাটাবেসটি মাস্টার থেকে ডেটাবেসগুলিতে পরিবর্তিত করে রিপোর্টটি কার্যকর করতে চেয়েছিল এমন সঞ্চিত প্রক্রিয়াযুক্ত ডেটাবেজে।

এসএসএমএস থেকে জিনিসগুলি চালানোর সময়, অবজেক্ট এক্সপ্লোরার ফলকটি একটি সংযোগের বিষয়টি মনে রাখবেন আপনি যেই সম্পাদক হোন তা সম্পূর্ণ ভিন্ন সংযোগ। সুতরাং আপনি SQL01 এর জন্য অবজেক্ট এক্সপ্লোরারগুলিতে অবজেক্টগুলি দেখতে পাচ্ছেন, তবে আপনি যে সম্পাদকটিতে সম্পাদনা করছেন তা কোডটি এসকিউএল 2 এর বিরুদ্ধে চলবে - কয়েক বছর ধরে এবং বহুবার ঝাঁকুনির পরেও আমি এই সমস্যায় পড়েছি এবং "কেন হবে না" এটা কাজ?" আমার ভুল বুঝতে পেরেছি। সম্পাদকটির জন্য, আপনি কোন দৃষ্টান্ত এবং ডাটাবেসটির সাথে সংযুক্ত রয়েছেন তা দেখতে নীচের ডানদিকে দেখুন।


1

টিএল; ডিআর: আপনার কাছে এমন একটি সঞ্চিত প্রক্রিয়া থাকতে পারে যা অন্য সঞ্চিত প্রক্রিয়াটিকে কল করে যা অস্তিত্বহীন।


আমার এই সমস্যা হয়েছিল এবং আমি একটি সমাধান খুঁজে পেয়েছি। এখানে কি ঘটেছে। আমি একটি সঞ্চিত পদ্ধতি তৈরি করেছি:

create procedure dbo.MyProc
    ...

তারপরে আমি আর একটি সঞ্চিত পদ্ধতি তৈরি করেছি যা প্রথমটি কার্যকর করে

create procedure dbo.MyProcCaller
    ...
    exec dbo.MyProc
    ...

কিছু সময় পরে, আমি নাম পরিবর্তন dbo.MyProcকরে dbo.MyProc2। এটির নামকরণের পরে, যখন আমি কল করার চেষ্টা dbo.MyProcCallerকরেছি, আমি এই ত্রুটি বার্তাটি পেয়েছি:

exec dbo.MyProcCaller

সঞ্চিত পদ্ধতি 'RLM.usp_getSecondaryRestrictedLists_Old' খুঁজে পাওয়া যায় নি।

আমার সমাধানটি ছিল নতুন নামটি ব্যবহার করার জন্য আমার দ্বিতীয় সঞ্চিত পদ্ধতিটি পরিবর্তন করা:

create procedure dbo.MyProcCaller
    ...
    exec dbo.MyProc2
    ...

আপনার সমস্যা আছে কিনা তা যাচাই করার জন্য এখানে একটি সহজ উপায়। সঞ্চিত পদ্ধতির পাঠ্যকে সংশোধন করতে ক্লিক করুন এবং তারপরে সেই পাঠ্যটি কার্যকর করুন। আপনি যদি এর মতো সতর্কতা পান তবে আপনার আপনার সঞ্চিত পদ্ধতিটির নাম পরিবর্তন করতে হবে:

'Dbo.MyProcCaller' মডিউলটি অনুপস্থিত বস্তু 'dbo.MyProc' এর উপর নির্ভর করে। মডিউলটি এখনও তৈরি করা হবে; যাইহোক, অবজেক্টটি উপস্থিত না হওয়া পর্যন্ত এটি সফলভাবে চলতে পারে না।

(1 সারি (s) প্রভাবিত)


0

এই প্রশ্নটি কয়েক বছরের পুরনো, তবে আমি আমার মতো যে কেউ পরে এটি পেয়েছে তার জন্য অন্য একটি সম্ভাবনা ফেলে দিতে চাই।

আমি এই আদেশটি চালিয়েছি: EXEC SP_CONFIGURE 'এজেন্ট এক্সপিএস'

এবং বর্ণিত ত্রুটিটি পেয়েছে: এমএসজি 2812, স্তর 16, রাজ্য 62, লাইন 1 সঞ্চিত পদ্ধতি 'SP_CONFIGURE' সন্ধান করতে পারেনি।

তবে তখন আমি মনে করেছি যে এই সার্ভারটি কেস-সংবেদনশীল হতে সেট আপ করা হয়েছে। সুতরাং এই আদেশটি ঠিক কাজ করেছে: EXEC sp_configure 'এজেন্ট XPs'

আছে HTH

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