2010-09-17 2 views
6

मैं एक एसपी के अंदर एक क्रम क्वेरी बना दिया है का उपयोग करते हुए और कार्यकारी() का उपयोग कर एसपी के भीतर क्वेरी exceuting रहा हूँ, लेकिन जब एसपी बनाने मैं त्रुटिकी त्रुटि का सामना "डिफ़ॉल्ट स्कीमा मौजूद नहीं है।" जब एसपी के अंदर क्रम क्वेरी को क्रियान्वित करने कार्यकारी()

The default schema does not exist. 
हो रही है

सपा है:

CREATE PROCEDURE MySP 
    @tableName varchar(100) 

AS 
BEGIN 
    SET NOCOUNT ON; 

declare @selectQuery varchar(MAX) 

set @selectQuery = 'select * from ' + @tableName 

exec(@selectQuery) 

end 

कृपया मदद

उत्तर

14

उपयोग CREATE PROCEDURE dbo.MySP

उपयोगकर्ता आप लॉग इन हैं के रूप में एक गैर विद्यमान डिफ़ॉल्ट स्कीमा होना आवश्यक है।

DEFAULT_SCHEMA can be set to a schema that does not currently exist in the database.

इसके अलावा, आप quotename(@tableName) का उपयोग करना चाहिए और sysname बजाय varchar(100) की एक पैरामीटर प्रकार एसक्यूएल इंजेक्शन या सिर्फ गैर मानक वस्तु के नाम से त्रुटियों से बचने के।

+0

धन्यवाद ... इस समस्या थी। Dbo.spname समस्या का उपयोग करने के बाद हल किया गया था। :) – HotTester

+0

अच्छा बिंदु के बारे में एसक्यूएल इंजेक्शन। क्या सुरक्षा और गति के संदर्भ में गतिशील प्रश्नों का उपयोग करके किसी अन्य चीज को ध्यान में रखना चाहिए? – HotTester

+2

हां। देखें [गतिशील एसक्यूएल का अभिशाप और आशीर्वाद - गतिशील तालिका और कॉलम नामों से निपटना] (http://www.sommarskog.se/dynamic_sql.html#objectnames) –

2

यह शायद डिफ़ॉल्ट उपयोगकर्ता सपा नहीं रह गया है बनाने के साथ जुड़े स्कीमा मौजूद है या उपयोगकर्ता अब स्कीमा की पहुंच है क्योंकि है।

हालांकि, मैंने सोचा कि एसक्यूएल सर्वर dbo स्कीमा को चूक। शायद संग्रहीत प्रक्रिया के लिए स्कीमा अर्हता प्राप्त करने का प्रयास करें।

, उदा,

Create Procedure dbo.MySP

+0

सपा में ही बनाने के दौरान मैं त्रुटि हो रही है बनाएँ। – HotTester

+0

@HotTester - खेद अपने प्रश्न पढ़ने में भूलना। मैं ans के लिए मेरा उत्तर को नवीनीकृत किया है – codingbadger

+0

+1 ... धन्यवाद – HotTester

4

आप अपनी डिफ़ॉल्ट स्कीमा को बदल सकता है:

ALTER USER [YOURDOMAIN\HotTester] WITH DEFAULT_SCHEMA=[dbo] 
GO 

तो [dbo] शामिल करने की आवश्यकता से परहेज। में प्रक्रिया

+0

धन्यवाद। मुझे एज़ूर डेटाबेस के खिलाफ स्क्रिप्ट चलाने में समस्याएं थीं। मैं अज़ूर होस्टिंग प्लेटफ़ॉर्म पर "ब्लूम्बा सीएमएस" स्थापित कर रहा था, "डिफ़ॉल्ट स्कीमा मौजूद नहीं है" ... – Kieran

संबंधित मुद्दे