এসকিউএল সার্ভারের লুকানো বৈশিষ্ট্য


215

এসকিউএল সার্ভারের কিছু লুকানো বৈশিষ্ট্য কী কী ?

উদাহরণস্বরূপ, অপ্রকাশিত সিস্টেম সঞ্চিত পদ্ধতি, এমন জিনিসগুলি করার কৌশলগুলি যা খুব দরকারী তবে যথেষ্ট নথিভুক্ত নয়?


উত্তর

সকল দুর্দান্ত উত্তরের জন্য প্রত্যেককে ধন্যবাদ!

সঞ্চিত পদ্ধতি

  • sp_msforeachtable: 'দিয়ে একটি কমান্ড চালায় ?' প্রতিটি টেবিলের নাম (v6.5 এবং উপরে) দিয়ে প্রতিস্থাপন করা হয়েছে
  • sp_msforeachdb: '' দিয়ে একটি কমান্ড চালায় ? প্রতিটি ডাটাবেস নাম (v7 এবং উপরে) দিয়ে প্রতিস্থাপিত
  • sp_who2: ঠিক এসপি_ও যেমন, তবে সমস্যা সমাধানের জন্য আরও অনেক তথ্যের সাথে (v7 এবং আরও)
  • sp_helptext: আপনি যদি কোনও সঞ্চিত পদ্ধতির কোড চান তবে দেখুন এবং ইউডিএফ
  • sp_tables: সমস্ত টেবিলের তালিকা এবং সুযোগের মধ্যে ডাটাবেসের ভিউগুলিকে ফিরিয়ে দিন।
  • sp_stored_procedures: সমস্ত সঞ্চিত পদ্ধতির একটি তালিকা ফেরত দিন
  • xp_sscanf: প্রতিটি ফর্ম্যাট আর্গুমেন্ট দ্বারা নির্দিষ্ট আর্গুমেন্ট অবস্থানগুলিতে স্ট্রিং থেকে ডেটা পড়ে।
  • xp_fixeddrives:: বৃহত্তম মুক্ত স্থান সহ স্থির ড্রাইভটি সন্ধান করুন
  • sp_help: আপনি যদি সারণির কাঠামো, সূচীগুলি এবং কোনও সারণির সীমাবদ্ধতাগুলি জানতে চান। এছাড়াও দেখুন এবং ইউডিএফ। শর্টকাট হ'ল Alt + F1

টুকিটাকি

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

ক্রিয়াকলাপ

  • HashBytes ()
  • EncryptByKey
  • পিভট কমান্ড

বিবিধ

  • সংযোগ স্ট্রিং অতিরিক্ত
  • TableDiff.exe
  • লগন ইভেন্টের জন্য ট্রিগার (সার্ভিস প্যাক 2 এ নতুন)
  • স্থির-গণিত-কলামগুলি (পিসি) দিয়ে পারফরম্যান্স বুস্ট করা।
  • ডিএসএফএল ডাটাবেস_সূত্রগুলিতে DEFAULT_SCHEMA সেটিং
  • জোর করে প্যারামিটারাইজেশন
  • ভার্দিসিমাল স্টোরেজ ফর্ম্যাট
  • সেকেন্ডের মধ্যে সর্বাধিক জনপ্রিয় অনুসন্ধানগুলি বের করা
  • স্কেলযোগ্য শেয়ার্ড ডাটাবেসগুলি
  • এসকিউএল ম্যানেজমেন্ট স্টুডিওতে সারণী / সঞ্চিত পদ্ধতি ফিল্টার বৈশিষ্ট্য
  • পতাকাগুলি ট্রেস করুন
  • GOব্যাচের পুনরাবৃত্তি করার পরে সংখ্যা
  • স্কিমা ব্যবহার করে সুরক্ষা
  • ট্রিগারগুলির সাথে এনক্রিপশন ফাংশন, ভিউ এবং বেস টেবিলগুলিতে অন্তর্নির্মিত এনক্রিপশন

4
যদি জানা থাকে তবে প্রতিটি উত্তরের সাথে প্রযোজ্য সংস্করণগুলি অন্তর্ভুক্ত করা ভাল nice (2000 এবং উপরে, 2005, কেবল 2000 ইত্যাদি)
bw

এই প্রশ্নে অনেক ধার্মিকতা রয়েছে। এটি মুছবেন না দয়া করে! :-)
Sklivvz

উত্তর:


91

ম্যানেজমেন্ট স্টুডিওতে, আপনি ব্যাচের সেই সংখ্যার পুনরাবৃত্তি ঘটানোর জন্য কোনও জিও এন্ড-অফ-ব্যাচ চিহ্নিতকারী পরে একটি সংখ্যা রাখতে পারেন:

PRINT 'X'
GO 10

'এক্স' 10 বার মুদ্রণ করবে। এটি পুনরাবৃত্ত উপাদানগুলি করার সময় ক্লান্তিকর অনুলিপি / আটকানো থেকে আপনাকে বাঁচাতে পারে।


70

অনেকগুলি এসকিউএল সার্ভার বিকাশকারী এখনও অপসারণ শর্ত (এসকিউএল সার্ভার 2005 এবং আরও নতুন) মুছে ফেলুন, INSERT এবং আপডেটের বিবৃতি সম্পর্কে জানবেন বলে মনে হয় না ।

কোন সারিগুলি সন্নিবেশ করা হয়েছে, হালনাগাদ করা হয়েছে, বা মুছে ফেলা হয়েছে তা জানার জন্য এটি অত্যন্ত কার্যকর হতে পারে এবং OUTPUT ধারাটি এটি খুব সহজেই করতে দেয় - এটি "ভার্চুয়াল" টেবিলগুলিতে অ্যাক্সেসের অনুমতি দেয় insertedএবং deleted(ট্রিগারগুলির মতো):

DELETE FROM (table)
OUTPUT deleted.ID, deleted.Description
WHERE (condition)

যদি আপনি একটি টেবিলের মধ্যে মান সন্নিবেশ করানো হয় যার একটি INT পরিচয় প্রাথমিক কী ক্ষেত্র রয়েছে OUTPUT ধারা সহ, আপনি এখনই newোকানো নতুন আইডি পেতে পারেন:

INSERT INTO MyTable(Field1, Field2)
OUTPUT inserted.ID
VALUES (Value1, Value2)

এবং যদি আপনি আপডেট করছেন, তবে কী পরিবর্তন হয়েছে তা জানার জন্য এটি অত্যন্ত কার্যকর হতে পারে - insertedএক্ষেত্রে, নতুন মানগুলি উপস্থাপন করা হয় ( আপডেটের পরে), যখন আপডেটের deletedআগে পুরানো মানগুলি বোঝায়:

UPDATE (table)
SET field1 = value1, field2 = value2
OUTPUT inserted.ID, deleted.field1, inserted.field1
WHERE (condition)

যদি প্রচুর তথ্য ফিরে আসে তবে OUTPUT এর আউটপুটও অস্থায়ী টেবিল বা একটি টেবিল ভেরিয়েবল ( OUTPUT INTO @myInfoTable) এ পুনঃনির্দেশ করা যেতে পারে ।

অত্যন্ত দরকারী - এবং খুব অল্প পরিচিত!

আঙ্গুরের ছিরড়া


52

sp_msforeachtable: 'দিয়ে কমান্ড চালায়?' প্রতিটি টেবিলের নাম দিয়ে প্রতিস্থাপিত। যেমন

exec sp_msforeachtable "dbcc dbreindex('?')"

আপনি প্রতিটি টেবিলের জন্য 3 টি পর্যন্ত কমান্ড জারি করতে পারেন

exec sp_msforeachtable
    @Command1 = 'print ''reindexing table ?''',
    @Command2 = 'dbcc dbreindex(''?'')',
    @Command3 = 'select count (*) [?] from ?'

এছাড়াও, sp_MSforeachdb


2
আপনি প্রশ্ন চিহ্নের চারপাশে একক উদ্ধৃতি ব্যবহার করে সারণীর নামটি পেতে পারেন। sp_msforeachtable "নির্বাচন গণনা (*), '?' তেবনেম হিসাবে? "
জয়দি

51

সংযোগ স্ট্রিং অতিরিক্ত:

MultipleActiveResultSets = সত্য;

এটি ADO.Net 2.0 এবং উপরে একাধিক, কেবলমাত্র পঠনযোগ্য, কেবলমাত্র পঠনযোগ্য ফলাফলগুলি একক ডাটাবেস সংযোগে সেট করে, যা আপনি প্রচুর পড়াতে পারলে কর্মক্ষমতা উন্নত করতে পারে। আপনি কোয়েরি ধরণের মিশ্রণটি করছেন এমনকি আপনি এটি চালু করতে পারেন।

আবেদনের নাম = মাইপ্রগ্রামনাম

এখন যখন আপনি সিসপ্রসেসেস টেবিলটি জিজ্ঞাসা করে সক্রিয় সংযোগগুলির একটি তালিকা দেখতে চান, আপনার প্রোগ্রামের নাম "। নেট স্ক্লাইক্লায়েন্ট ডেটা সরবরাহকারী" এর পরিবর্তে প্রোগ্রাম_নাম কলামে উপস্থিত হবে "


7
আমি অ্যাপ্লিকেশন নামটি আমার সংস্থায় একটি প্রয়োজনীয়তা তৈরি করেছি। প্রতিটি নতুন অ্যাপের অবশ্যই একটি অনন্য নাম থাকতে হবে। কোন অ্যাপ্লিকেশনটিকে খুব সহজেই লক করা / ভেঙে দেওয়া হয়েছে তা ট্র্যাক করে।
নিল এন

2
প্রোফাইলে ফিল্টার হিসাবে অ্যাপ্লিকেশন নামও পাওয়া যায়। আপনি যদি কেবল আপনার অনুসন্ধানগুলি দেখতে চান তবে আপনার সহকর্মীদের অনুসন্ধানগুলি দেখতে না চাইলে এটি অনেক সাহায্য করে।
ম্যাথিয়াস এফ

33

TableDiff.exe

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

লিংক


31

এলোমেলো ক্রমে সারিগুলি ফিরিয়ে দেওয়ার জন্য একটি কম পরিচিত টিএসকিউএল কৌশল:

-- Return rows in a random order
SELECT 
    SomeColumn 
FROM 
    SomeTable
ORDER BY 
    CHECKSUM(NEWID())

6
ছোট ফলাফল সেট জন্য দুর্দান্ত। আপনি সময় দেওয়ার মতো সময় না পেলে আমি এটি 10000 সারি বেশি টেবিলে ব্যবহার করব না
জন শিহান

আমি এটি তার থেকে অনেক বড় টেবিলগুলিতে ব্যবহার করেছি এবং এটি খুব ধীর ছিল না।
মিচ গম 15

চেকসাম () এর উদ্দেশ্য কী? আপনি ঠিক NEWID () দিয়ে অর্ডার করতে পারেন।
জোনাস লিংকন

6
এমনকি আমি 100,000,000 (100 মিলি) সারি, ডাব্লু / ও চেকসুম () এ সজ্জিত ফলাফল দেখেছি। এছাড়াও, আমাকে আরও জিজ্ঞাসা করতে হবে, কেন কেবল নতুন আদেশের অর্ডার নয়?
ট্রয় ডিমনব্রুন

5
@ গেটকিলার: আমি আপনার সম্পাদনাটি ফিরিয়ে দিয়েছি, কারণ চেকসাম () কোনও ভুল নয়; এটি বাছাই কলামটির আকার হ্রাস করে।
মিচ গম

30

ম্যানেজমেন্ট স্টুডিওতে, আপনি দ্রুত কোনও টেবিলের জন্য কলামের সীমাবদ্ধ কলামগুলির তালিকা পেতে পারেন:

  1. অবজেক্ট এক্সপ্লোরারে কোনও প্রদত্ত টেবিলের নীচে নোডগুলি প্রসারিত করুন (যাতে আপনি কলাম, কী, সীমাবদ্ধতা, ট্রিগার ইত্যাদির ফোল্ডার দেখতে পাবেন)
  2. কলাম ফোল্ডারটি নির্দেশ করুন এবং একটি কোয়েরিতে টানুন।

আপনি যখন টেবিলের উপর ডান ক্লিক করে এবং স্ক্রিপ্ট টেবিল হিসাবে ... চয়ন করে ফিরে আসা জঘন্য বিন্যাসটি ব্যবহার করতে চান না তখন এটি কার্যকর হয়, তারপরে সন্নিবেশ করান ... এই কৌশলটি আপনাকে অন্য ফোল্ডারগুলির সাথে কাজ করবে যা এটি আপনাকে দেবে ফোল্ডারের মধ্যে থাকা নামের একটি কমা-বিস্মৃত তালিকা।


23

সারি নির্মাণকারী

আপনি একক সন্নিবেশ বিবৃতি দিয়ে একাধিক সারি ডেটা সন্নিবেশ করতে পারেন।

INSERT INTO Colors (id, Color)
VALUES (1, 'Red'),
       (2, 'Blue'),
       (3, 'Green'),
       (4, 'Yellow')

আমি এটিকে ভোট দিয়েছি, তবে তারপরে এটি এমএসএসকিউএল 2005 এ চেষ্টা করেছিলাম, এবং এটি কার্যকর হয় না। শুধু ২০০৮?
রিচার্ডাল্টলেন্ট

11
হ্যাঁ, এটা 2008 একটি নতুন বৈশিষ্ট্য এর
রব Boek

2
এটি একটি বৈশিষ্ট্য ছিল যা আমি মিস করেছিলাম যখন আমি ডিবি 2 থেকে এসকিউএল সার্ভারে আসি। ডিবি 2-তে, ব্যক্তিগত সন্নিবেশ বিবৃতিগুলির পরিবর্তে এটি ব্যবহার করার সময় একটি তাত্পর্যপূর্ণ গতি উন্নতি হয়েছিল
নাথান কোপ

22

আপনি যদি সারণির কাঠামো, সূচী এবং সীমাবদ্ধতাগুলি জানতে চান:

sp_help 'TableName'

এই টিপটিকে এর শর্টকাট কী দিয়ে একত্রিত করুন! প্রথমে একটি টেবিলের নামটি হাইলাইট করুন এবং তারপরে ALT + F1
মাইকেল জে স্বার্ট

22

এর ইনপুটটির MD2, MD4, MD5, SHA, বা SHA1 হ্যাশ ফিরিয়ে আনার জন্য হ্যাশবাইটস ()


সুন্দর! সঠিক লিঙ্ক msdn.microsoft.com/en-us/library/ms174415(SQL.90).aspx (2005 সংস্করণ)
Sklivvz

আপনি ঠিকই বলেছেন, এটি পৃষ্ঠাগুলি অনেকটা অভিন্ন হলেও ডক্সের ২০০৮ সংস্করণ ছিল। এখনই স্থির।
জোয়েল কোহোর্ন

20

সর্বাধিক জনপ্রিয় প্রশ্নগুলি খুঁজে বের করা

  • Sys.dm_exec_query_stats সহ, ​​আপনি একক কোয়েরিতে ক্যোয়ারী বিশ্লেষণের অনেকগুলি সংমিশ্রণ বের করতে পারেন।

কম্যান্ডের সাথে লিঙ্ক করুন

select * from sys.dm_exec_query_stats 
order by execution_count desc

17

7
আমি আমার প্রশ্নের ফলাফলগুলিতে যীশুকে দেখেছি!
পিডি বাবা

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

16

ছাড় এবং ইন্টারস্যাক্ট

বিস্তৃত যোগদান এবং উপসংশ্লিষ্ট লেখার পরিবর্তে, এই দুটি কীওয়ার্ড দুটি ক্যোয়ারী ফলাফলের সাথে তুলনা করার সময় আপনার কোয়েরির অভিপ্রায়টি প্রকাশ করার অনেক বেশি মার্জিত শর্টহ্যান্ড এবং পাঠযোগ্য able এসকিউএল সার্ভার ২০০৫-তে নতুন, তারা ইউএনআইএনকে দৃ complement়ভাবে পরিপূরক করে যা কয়েক বছর ধরে টিএসকিউএল ভাষায় ইতিমধ্যে বিদ্যমান রয়েছে।

এক্সেসপেট, ইন্টারস্যাক্ট এবং ইউনিয়ন ধারণাগুলি সেট তত্ত্বে মৌলিক যা সমস্ত আধুনিক আরডিবিএমএস দ্বারা ব্যবহৃত রিলেশনাল মডেলিংয়ের ভিত্তি এবং ভিত্তি হিসাবে কাজ করে। এখন ভেন ডায়াগ্রাম ধরণের ফলাফল টিএসকিউএল ব্যবহার করে আরও স্বজ্ঞাত এবং বেশ সহজেই তৈরি করা যেতে পারে।


16

আমি জানি এটি হুবহু লুকানো নয়, তবে অনেকগুলি পিভট কমান্ড সম্পর্কে জানেন না । আমি এমন একটি সঞ্চিত পদ্ধতি পরিবর্তন করতে সক্ষম হয়েছি যা কার্সার ব্যবহার করেছিল এবং একটি দ্রুত গতিতে 6 সেকেন্ডের কোডে চালাতে 2 মিনিট সময় নিয়েছিল যা লাইনগুলির সংখ্যার দশমাংশ ছিল!


16

পরীক্ষার উদ্দেশ্যে বা যা-ই হোক না কেন ডাটাবেস পুনরুদ্ধার করার সময় দরকারী। লগইন আইডির সঠিকভাবে পুনরায় মানচিত্র করুন:

EXEC sp_change_users_login 'Auto_Fix', 'Mary', NULL, 'B3r12-36'

আমার কাছে এই প্র্যাকটি আগে কাজ না করে চলেছিল এবং আমাকে বস্তুর মালিকানা কোনও অস্থায়ী ব্যবহারকারীর কাছে পরিবর্তন করতে হয়েছিল, মূল ব্যবহারকারীকে ফেলে দিতে হবে, মূলটিকে পুনরায় যুক্ত করতে হবে এবং মালিকানাটি আবার বরাদ্দ করতে হয়েছিল।
উঘ

15

ডাটাবেসে সমস্ত সংযোগ ফেলে দিন:

Use Master
Go

Declare @dbname sysname

Set @dbname = 'name of database you want to drop connections from'

Declare @spid int
Select @spid = min(spid) from master.dbo.sysprocesses
where dbid = db_id(@dbname)
While @spid Is Not Null
Begin
        Execute ('Kill ' + @spid)
        Select @spid = min(spid) from master.dbo.sysprocesses
        where dbid = db_id(@dbname) and spid > @spid
End

একটি লাইনার, বা একটি ড্রপ ডাটাবেস প্যারামিটার কি আমার জন্য এটি করে? আমি লক্ষ্য করেছি যে আপনি যদি ইউআইয়ের মাধ্যমে 'ডাটাবেস মুছতে' চেষ্টা করেন তবে 'ক্লোজড বিদ্যমান সংযোগগুলির' জন্য একটি চেকবক্স রয়েছে যা বোঝায় যে এটি বুলিয়ান প্যারামিটার।
ডেভিনিবি

1
আসলে, আমি সবেমাত্র একটি দুটি লাইন সমাধান পেয়েছি। ALTER ডেটাবেস [@ DATABASE_NAME @] সেট READ_ONLY সঙ্গে রোলব্যাক অবিলম্বে --this disconnects সকল ব্যবহারকারীর ALTER ডেটাবেস [@ DATABASE_NAME @] সেট READ_WRITE সঙ্গে রোলব্যাক অবিলম্বে ড্রপ ডেটাবেস [@ DATABASE_NAME @]
DevinB

1
ALTER DATABASE MyDB SET SINGLE_USER WITH ROLLBACK IMMEDIATEনতুন সংযোগগুলি ঘটতে বাধা দেবে।
এরিক

15

টেবিল চেকসাম

Select CheckSum_Agg(Binary_CheckSum(*)) From Table With (NOLOCK)

সারি চেকসাম

Select CheckSum_Agg(Binary_CheckSum(*)) From Table With (NOLOCK) Where Column = Value

2
এগুলি আপনাকে সারণীতে থাকা সমস্ত ডেটার জন্য একটি চেকসাম তৈরি করতে দেয়। দুটি সারি বা দুটি টেবিল একই কিনা তা যাচাই করা সহজ এবং দ্রুত উপায়।
গেটকিলার

15

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

উদাহরণ:

DECLARE @nvcConcatonated nvarchar(max)
SET @nvcConcatonated = ''

SELECT @nvcConcatonated = @nvcConcatonated + C.CompanyName + ', '
FROM tblCompany C
WHERE C.CompanyID IN (1,2,3)

SELECT @nvcConcatonated

ফলাফল:

Acme, Microsoft, Apple,

2
আপনি ভেরিয়েবল আরম্ভ করার প্রয়োজন ছাড়াই একই জিনিস করতে COALESCE () ব্যবহার করতে পারেন। @NvcConcatonated = COALESCE (@nvcConcatonated + ',', '') + CAST (C.CompanyName VARCHAR (255)) এর মধ্য থেকে নির্বাচন করুন ...
ক্রিস্টোফার ক্লেইন

এটি একটি আপডেট বিবৃতিতেও কাজ করে। কখনও কখনও আপডেট করা আইডির একটি তালিকা জড়িত করার মতো কাজগুলি করার জন্য দরকারী।
ইবার

14

আপনি যদি কোনও সঞ্চিত পদ্ধতির কোড চান তবে আপনি এটি করতে পারেন:

sp_helptext 'ProcedureName'

(এটি লুকানো বৈশিষ্ট্য কিনা তা নিশ্চিত নয়, তবে আমি এটি সর্বদা ব্যবহার করি)


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

আপনি কি বোঝাতে চাচ্ছেন তা আমি নিশ্চিত নই. আমার জন্য, এসপিএস কোডটি একই ফর্ম্যাট দিয়ে প্রকাশিত হয়েছে যেগুলিকে আমি মূল ফাইলে (সমস্ত সিআর ইত্যাদি দিয়ে) স্ক্রিপ্ট করেছি
এডুয়ার্ডো মোল্টেনি

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

13

সঞ্চিত প্রক্রিয়া কৌশলটি হ'ল আপনি কোনও INSERT বিবৃতি থেকে তাদের কল করতে পারেন। যখন আমি একটি এসকিউএল সার্ভার ডাটাবেসে কাজ করছিলাম তখন আমি এটি খুব দরকারী পেয়েছি।

CREATE TABLE #toto (v1 int, v2 int, v3 char(4), status char(6))
INSERT #toto (v1, v2, v3, status) EXEC dbo.sp_fulubulu(sp_param1)
SELECT * FROM #toto
DROP TABLE #toto

1
দুর্ভাগ্যক্রমে @ টেবিলটি পরিবর্তনশীল
ক্রিশ্চেন

এই খুব দরকারী প্রযুক্তির সাথে ব্যথা হ'ল বেশিরভাগ # টেবিলের বিপরীতে, আপনাকে সমস্ত কলামগুলি সম্পূর্ণরূপে সংজ্ঞায়িত করতে হবে। এটি করার অলস উপায়টি হ'ল শেষ দিকে আপনি যে প্রোকটি কল করছেন তার ভিতরে # টেবিল তৈরি করা, তারপরে টেম্পডিবিতে কপি করুন এবং পেস্ট করুন, প্রোক থেকে কোড অপসারণ করুন। সম্পন্ন
এডল্ফ রসুন

12

এসকিউএল সার্ভার 2005/2008 এ একটি নির্বাচনী ক্যোয়ারির ফলাফলটিতে সারি সংখ্যাগুলি দেখানোর জন্য:

SELECT ( ROW_NUMBER() OVER (ORDER BY OrderId) ) AS RowNumber,
        GrandTotal, CustomerId, PurchaseDate
FROM Orders

অর্ডার বাই একটি বাধ্যতামূলক ধারা। ওভার () ধারাটি এসকিউএল ইঞ্জিনকে নির্দিষ্ট কলামে (এই ক্ষেত্রে অর্ডারআইডি) ডেটা বাছাই করতে এবং সাজানোর ফলাফল অনুসারে সংখ্যা নির্ধারণ করতে বলে।


সহজ যদি তারা SQL ইঞ্জিনে অন্বিত চিনি ব্যবহৃত হিসাবে "RowNumberInTable" এটা সিনট্যাক্স শব্দ বিশ্লেষণ করতে হবে না
কেউ

1
উইন্ডো ফাংশন জন্য +1। আপনি ওভার (পার্টিশন বাই ...) ব্যবহার করে রেকর্ডের একটি উপসেটের বাইরেও জিনিসগুলি করতে পারেন MSdn.microsoft.com/en-us/library/ms189461%28v=SQL.100%29.aspx
ম্যাট স্টিফেনসন

10

সঞ্চিত প্রক্রিয়া যুক্তিগুলি পার্স করার জন্য দরকারী: xp_sscanf

প্রতিটি ফর্ম্যাট আর্গুমেন্ট দ্বারা নির্দিষ্ট আর্গুমেন্ট অবস্থানগুলিতে স্ট্রিং থেকে ডেটা পড়ে।

নিম্নলিখিত উদাহরণটি উত্স স্ট্রিংয়ের বিন্যাসে তাদের অবস্থানের ভিত্তিতে উত্সের স্ট্রিং থেকে দুটি মান বের করতে xp_sscanf ব্যবহার করে।

DECLARE @filename varchar (20), @message varchar (20)
EXEC xp_sscanf 'sync -b -fproducts10.tmp -rrandom', 'sync -b -f%s -r%s', 
  @filename OUTPUT, @message OUTPUT
SELECT @filename, @message

এখানে ফলাফল সেট করা হয়।

-------------------- -------------------- 
products10.tmp        random

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

9

কেবল ফেরতের তারিখ

Select Cast(Floor(Cast(Getdate() As Float))As Datetime)

অথবা

Select DateAdd(Day, 0, DateDiff(Day, 0, Getdate()))

সংক্ষিপ্ত সংস্করণ - নির্বাচন করুন কাস্টম (ফ্লোর (ক্যাসেট (ডেটটাইম হিসাবে ফ্লাট)) তারিখ হিসাবে)
মেফ

হ্যাঁ জাহান্নাম. CASTFLOORCAST বিধি।
স্টিংজি জ্যাক

এটির কোনও রেফারেন্স খুঁজে পাওয়া যায় না, তবে আমার মনে হয় যে পরীক্ষাগুলি সেলেক্ট ডেটএডড (দিন, 0, ডেটডিফ (দিন, 0, @ তারিখটাইম)) দ্রুত ছিল বলে মনে হয়েছিল। আলোকিত হতে পেরে আনন্দিত, যেভাবেই হোক!
ক্রাইস্টেন

এই sqlteam.com/forums/topic.asp?TOPIC_ID=35296#107617 পাওয়া গেছে তবে এতে CAST / FLOOR পদ্ধতিটি অন্তর্ভুক্ত হয়নি। একটি মাঝারি আকারের রেকর্ডসেটে একটি অনানুষ্ঠানিক পরীক্ষা থেকে জানা যায় যে DATEADD CAST / ফ্লোরের তুলনায় প্রায় 7% দ্রুত হতে পারে - বেশিরভাগ পরিস্থিতিতে চিন্তার জন্য যথেষ্ট নয়
ক্রিসটেন

আমি অন্য পদ্ধতি যুক্ত করেছি, তবে; আমার দ্রুত পরীক্ষাটি দেখায় যে কাস্ট ফ্লোর পদ্ধতিটি 800 ন্যানোসেকেন্ডগুলি দ্রুত er আসলে এটি কিছুই।
গেটকিলার

9

dm_db_index_usage_stats

এটি আপনাকে জানতে দেয় যে কোনও টেবিলে ডেটা আপডেট করা হয়েছে কিনা আপনার টেবিলে তারিখের আপডেট তারিখ না থাকলেও।

SELECT OBJECT_NAME(OBJECT_ID) AS DatabaseName, last_user_update,*
FROM sys.dm_db_index_usage_stats
WHERE database_id = DB_ID( 'MyDatabase')
AND OBJECT_ID=OBJECT_ID('MyTable')

কোড থেকে: http://blog.sqlauthority.com/2009/05/09/sql-server-find-last-date-time-updated- for-any-table/

তথ্য রেফারেন্স করা থেকে: এসকিউএল সার্ভার - একটি সারণির শেষ সন্নিবেশ করা সারির তারিখ / সময়টি কী?

এসকিউএল 2005 এবং পরে উপলব্ধ Available


7

এখানে কয়েকটি বৈশিষ্ট্য রয়েছে যা আমি দরকারী বলে মনে করি তবে অনেক লোকই এগুলি সম্পর্কে জানতে পারে বলে মনে হয় না:

sp_tables

বর্তমান পরিবেশে অনুসন্ধান করা যেতে পারে এমন বস্তুর একটি তালিকা ফেরত দেয়। এর অর্থ সমার্থক বস্তুগুলি ব্যতীত যে কোনও বস্তু যা কোনও FROM ধারাতে উপস্থিত হতে পারে।

লিংক

sp_stored_procedures

বর্তমান পরিবেশে সঞ্চিত পদ্ধতিগুলির একটি তালিকা ফেরত দেয়।

লিংক


7

কোন চলমান সপ্তাহের মধ্যে কোথাও পড়বে তা রেকর্ডগুলি সন্ধান করুন।

where dateadd( week, datediff( week, 0, TransDate ), 0 ) =
dateadd( week, datediff( week, 0, getdate() ), 0 )

গত সপ্তাহে কোন তারিখটি রেকর্ড হয়েছে তা সন্ধান করুন।

where dateadd( week, datediff( week, 0, TransDate ), 0 ) =
dateadd( week, datediff( week, 0, getdate() ) - 1, 0 )

চলতি সপ্তাহের শুরুতে তারিখ ফেরত দেয়।

select dateadd( week, datediff( week, 0, getdate() ), 0 )

গত সপ্তাহের শুরুতে তারিখটি ফেরত দেয়।

select dateadd( week, datediff( week, 0, getdate() ) - 1, 0 )

ট্রান্সডেটে সূক্ষ্ম তবে সূচক ব্যবহার করা হবে না। আমি বরং লিখব
ভাসো

যেখানে TransDate> = রূপান্তর (তারিখের সময়, মেঝে (রূপান্তর (ফ্লোট, ডেটড্ড (দিন, -সেট্পার্ট (সপ্তাহের দিন, @ তারিখ) +1, @ তারিখ)))) এবং ট্রান্সডেট> = রূপান্তর (তারিখের সময়, তল (রূপান্তর, তারিখ সংযুক্ত) (দিন, 7-তারিখ পার্ট (সপ্তাহের দিন, @ তারিখ) +1, @ তারিখ))))
ভাসো

সংশোধন: যেখানে ট্রান্সডিট> = রূপান্তর (ডেটটাইম, মেঝে (রূপান্তর (ফ্লোট, ডেটড্ড (দিন, -datepart (সপ্তাহের দিন, @ তারিখ) +1, @ তারিখ)))) এবং ট্রান্সডিট <রূপান্তর (তারিখের সময়, তল (রূপান্তর, ফ্লোট, তারিখড্যাড (দিন, 7-তারিখ পার্ট (সপ্তাহের দিন, @ তারিখ) +1, @ তারিখ))))
ভাসো

7

তেমন কোনও লুকানো বৈশিষ্ট্য নয় তবে সরঞ্জামসমূহ \ বিকল্পসমূহ \ কীবোর্ডের আওতায় ম্যানেজমেন্ট স্টুডিওতে কী ম্যাপিংস স্থাপন করা হচ্ছে: Alt + F1 sp_help "নির্বাচিত পাঠ্য" এ ডিফল্ট হয়েছে তবে আমি sp_helptext "নির্বাচিত পাঠ্য" জন্য Ctrl + F1 যুক্ত না করে বাঁচতে পারি না


আমি ইউএসই কমান্ডটি কনফিগার করতেও
ডিবির

7

চলতে থাকে-নির্ণিত-কলাম

  • গণিত কলামগুলি আপনাকে রানটাইম গণনা ব্যয়কে ডেটা সংশোধন পর্যায়ে স্থানান্তর করতে সহায়তা করতে পারে। গণিত কলামটি বাকী সারির সাথে সঞ্চিত থাকে এবং গণিত কলামগুলিতে এবং ক্যোয়ারির সাথে মিল মিললে স্বচ্ছভাবে ব্যবহার করা হয়। আপনি পিসিসি-তে ফিল্টারেশন এবং রেঞ্জ স্ক্যানের গতি প্রকাশের জন্য পিসিসিতে সূচকগুলিও তৈরি করতে পারেন।

লিংক


7

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

select row_number() over (order by (select 1)), * from dbo.Table as t

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