SQL Server 2008 में SQL सर्वर डेटाबेस में कोई तालिका मौजूद है, तो मैं यह कैसे निर्धारित करूं?


13

SQL Server 2008 में SQL सर्वर डेटाबेस में कोई तालिका मौजूद है, तो मैं यह कैसे निर्धारित करूं?

जवाबों:


18

यदि आप sysobjects तालिका को क्वेरी करते हैं, जैसे क्वेरी के साथ

SELECT * FROM sysobjects WHERE xtype = 'U' AND name = 'yourTableName'

xtype = 'U' एक उपयोगकर्ता तालिका है

फिर आप इसे एक IF EXTSTS स्टेटमेंट लपेट सकते हैं

IF EXISTS (SELECT * FROM sysobjects ...)
BEGIN
    ' do your stuff here if it exists
END 

5
+1 यह ध्यान रखना महत्वपूर्ण है कि Microsoft SQL Server 2005 के बाद से डायनेमिक मैनेजमेंट व्यूज़ (DMVs) की तरह कार्यक्षमता बढ़ रहा है। यह तकनीकी रूप से काम करेगा, लेकिन Microsoft अब इसके लिए sys.tables DMV का उपयोग करने की अनुशंसा करता है। यदि EXISTS (SELECT * FROM sys.tables कहाँ टाइप करें = 'U' और name = 'yourTableName')। कार्यात्मक रूप से, आपका कथन और मेरा कथन ठीक यही काम करते हैं। बस डीएमवी का उल्लेख करना चाहता था। DMV के बारे में अधिक जानने के लिए, दस्तावेज की जांच करें msdn.microsoft.com/en-US/library/ms188754%28v=SQL.105%29.aspx
मैट एम

यह एक अच्छा कॉल मैट है। पुरानी आदतें कठिन मरती हैं :-) आपका बेहतर तरीका है।
माइल्स डी

1
मुझे यकीन नहीं है कि यह बहुत फर्क पड़ता है, लेकिन मैं एहसान (1 से sys.tables का चयन करें) का पक्ष लेंगे
डेविड हायस 20

@DavidHayes हां, मुझे लगता है कि यह समाधान तेज है क्योंकि यह स्तंभ नामों को खोजने के लिए क्वेरी नहीं करता है।
Xriuk

12

यहाँ इसे खोजने का एक और तरीका है

IF OBJECT_ID('tablename') IS NULL
PRINT 'Table Does not Exist'

अच्छा और सरल, जटिल सिस्टम तालिकाओं को क्वेरी करने की कोई आवश्यकता नहीं है। धन्यवाद!
शैडो विजार्ड कान आपके लिए

2
उदाहरण के लिए, समान नाम के विचारों का पता नहीं लगा सकते हैं? शायद संग्रहीत प्रक्रियाएं और जैसे कि?
मारियो डीएस

यदि आप स्कीमा वस्तु को योग्य नहीं बनाते हैं।
ग्रिट फ्रिट्ची

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.