এসকিউএল সার্ভারের টেবিল: @, # এবং ## এর মধ্যে পার্থক্য কী?


উত্তর:


114

#table অস্থায়ী টেবিলটিকে স্থানীয় (কেবল এটির ব্যবহারকারীর কাছে দৃশ্যমান) বোঝায়।

##table একটি গ্লোবাল (সমস্ত ব্যবহারকারীর কাছে দৃশ্যমান) অস্থায়ী সারণিকে বোঝায়।

@variableName এমন ভেরিয়েবলকে বোঝায় যা এর ধরণের উপর নির্ভর করে মান ধরে রাখতে পারে।


31
আপনার # টেবিলের সংজ্ঞা পুরোপুরি সঠিক নয়। এটি ব্যবহারকারীর মধ্যে সীমাবদ্ধ নয় বরং সংযোগ রয়েছে। যদি কোনও ব্যবহারকারীর একাধিক সংযোগ থাকে তবে এটি কেবল সংযোগের জন্য দৃশ্যমান হবে যা প্রথম স্থানে # টেবিল তৈরি করেছে।
ডেভিন স্টাডার

@ ডেভিডস্টুডার একটি গুরুত্বপূর্ণ ব্যাখ্যা দিয়েছে। ব্যবহারকারীর কাছে দৃশ্যমান একটি সারণীর মধ্যে পার্থক্য। কেবলমাত্র বর্তমান সংযোগে একটি টেবিল দৃশ্যমান খুব গুরুত্বপূর্ণ।
মিরজমাস্টার

@ ডেভিনিস্টার ব্যবহারকারীর জন্য একাধিক সংযোগ কীভাবে দেখছেন? একই সংযোগ স্ট্রিং?
কিকিনেট

24

4
আমি বুঝতে পেরেছি এটি অনেক আগে থেকেই, তবে যেহেতু এটি একটি লিঙ্ক-একমাত্র উত্তর (এবং প্রথম লিঙ্কটি মারা গেছে), তাই প্রতিটি লিঙ্কের মূল টেকওয়েজের সাথে এটি আপডেট করা যেতে পারে?
মাইক গুথ্রি

7

#এবং ##টেবিল প্রকৃত টেবিল টেম্প ডাটাবেসের মধ্যে প্রতিনিধিত্ব আছে। এই সারণিতে সূচি এবং পরিসংখ্যান থাকতে পারে এবং একটি সেশনে স্প্রোকগুলি জুড়ে অ্যাক্সেস করা যায় (বৈশ্বিক টেম্প টেবিলের ক্ষেত্রে এটি সেশন জুড়ে উপলব্ধ)।

@ টেবিলটি একটি সারণী পরিবর্তনশীল।

আরও জন্য: http://www.sqlteam.com/article/temporary-tables


4
টেবিলের ভেরিয়েবলটি টেম্পডিবি ডাটাবেসেও বাস করবে, যদি এর আকার মেমরি ধরে রাখতে খুব বড় হয়।
marc_s

5

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

@মার্ক_স দ্বারা @ যোনার প্রতিক্রিয়া একেবারে সত্য: এটি একটি প্রচলিত রূপকথা যে টেবিলের পরিবর্তনগুলি সর্বদা স্মৃতিতে থাকে। কোনও টেবিল ভেরিয়েবলের জন্য ডিস্কে যেতে এবং টেম্প টেবিলের মতো কাজ করা আসলে এটি বেশ সাধারণ।

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


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

@ রায়ান কেন ## সারণি বৈধ যখন আপনি dbo.Table ব্যবহার করতে পারতেন? আপনার সমস্ত কাজ একটি DROP বিবৃতি টাইপ করা থেকে নিজেকে রক্ষা করা হলে আমি এটিকে বৈধ ব্যবহারের কেস হিসাবে বিবেচনা করি না।
অ্যারন বারট্র্যান্ড

4
আমি আমার ডিবিতে অডিটরকে ডিআআরপি অনুমতি দিতে চাই না। আমিও চাইনা যে সে হয়ে যাওয়ার পরে ফিরে আসতে হবে এবং পরিষ্কার করে আসতে হবে। একটি টেম্প টেবিল দিয়ে তিনি প্রায়শই তাঁর পছন্দ মতো ক্যোয়ারী চালাতে পারেন এবং আমি জানি যখন তিনি শেষ হয়ে যান তখন তিনি ডিবিতে কোনও পদচিহ্ন ছাড়ছেন না।
রায়ানফায়েস্কটল্যান্ড

4
CREATE TABLE #t

একটি সারণী তৈরি করে যা কেবলমাত্র প্রদর্শিত এবং সেই সংযোগ চলাকালীন একই ব্যবহারকারী যা অন্য সংযোগ তৈরি করে অন্য সংযোগ থেকে টেবিল # টি দেখতে সক্ষম হবে না।

CREATE TABLE ##t

অন্যান্য সংযোগগুলিতে দৃশ্যমান একটি অস্থায়ী টেবিল তৈরি করে। তৈরির সংযোগ শেষ হয়ে গেলে টেবিলটি বাদ দেওয়া হয়।


SqlConnection.Open()সঙ্গে একই সংযোগ স্ট্রিং হয় একই সংযোগ ?
কিকিনেট

4
না, এটি একই ডাটাবেসের সাথে সংযোগ, তবে প্রায় একই সংযোগ নয়।
মার্কাস

0

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

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