2009-12-28 17 views
5

में तालिकाओं के लिए sp_helptext के समतुल्य जब हम संग्रहित प्रक्रियाओं उपयोग हम 'Sp_Helptext procedurename'एसक्यूएल सर्वर

कुछ इसी तरह तालिकाओं के लिए किया जा सकता है की क्वेरी की ज़रूरत है?

+0

@Biswo - मैं काफी लगता है कि आपके सवाल था, यह बहुत पढ़ने के लिए मुश्किल था। कृपया पुष्टि करें कि मैंने सही तरीके से व्याख्या की है। –

उत्तर

2

sp_helptext का प्रत्यक्ष समतुल्य प्रतीत नहीं होता है जो तालिकाओं के साथ काम करेगा।

दो विधियों है कि विभिन्न संदेश बोर्डों पर आम होने लगते हैं:

  1. उपयोग Information_Schema.Columns और बयान बनाने में परिणाम को श्रेणीबद्ध।
  2. उपयोग एसक्यूएल-DMO स्क्रिप्ट

दूसरी विधि पर एक लेख है here

+0

http://social.msdn.microsoft.com/Forums/en/transactsql/thread/28eeb603-1607-4b56-9461-3c0502cbec9c पर पहली विधि के कुछ उदाहरण देखे जा सकते हैं - यह कुछ सुंदर बालों वाली एसक्यूएल है हालांकि –

+0

@ डैन एफ लॉल - मुझे लगता है कि आपने Google में 'sp_helptext तालिका' के लिए पहले परिणाम की जांच की है :) –

+0

@ डेविड: हाहा, हाँ, मुझे एक स्याही थी यह एक आसान Google होगा :-) –

3

information_Schema.columns से followig का उपयोग करें क्वेरी

चयन * जहां TABLE_NAME = 'TableName'

6

Alt + F1 का उपयोग करें जबकि तालिका नाम एक तालिका विंडो में चयनित है।

0

इस एसपी के साथ प्रयास करें। इसमें प्राथमिक कुंजी और विदेशी कुंजी जैसी तालिका के लिए आवश्यक सभी नोटेशन नहीं हैं लेकिन शुरुआत है।

CREATE PROCEDURE [dbo].[GeneradorTablas] 
    @Tabla AS VARCHAR(100) 
AS 
BEGIN 
    DECLARE @Script AS VARCHAR(MAX) ='CREATE TABLE [dbo].[' + @Tabla + '](' + CHAR(13) 
    DECLARE @Columnas As TABLE(indice INT, Columna VARCHAR(1000)) 
    INSERT INTO @Columnas 
    SELECT 
     ROW_NUMBER()OVER(ORDER BY C.column_id), 
     ' [' + C.name + '] [' + TY.name + ']' + 
     CASE WHEN 
      TY.name='nvarchar' OR 
      TY.name='nchar' OR 
      TY.name='char' OR 
      TY.name='varbinary' OR 
      TY.name='varchar' OR 
      TY.name='text' THEN 
       '(' + CASE WHEN C.max_length>0 THEN CAST(C.max_length AS VARCHAR(10)) ELSE 'MAX' END + ')' ELSE '' 
     END + 
     CASE WHEN C.is_identity=1 THEN ' IDENTITY(1,1)' ELSE '' END + 
     ' ' + CASE WHEN C.is_nullable=1 THEN 'NULL' ELSE 'NOT NULL' END + ',' 
    FROM SYS.COLUMNS AS C 
     INNER JOIN SYS.TYPES AS TY ON C.system_type_id=TY.system_type_id 
     INNER JOIN SYS.TABLES AS T ON C.object_id=T.object_id 
    WHERE [email protected] 

    DECLARE @i AS INT 
    SELECT @i=MIN(indice) FROM @Columnas 
    WHILE @i IS NOT NULL 
    BEGIN 
     SELECT @Script+=Columna+CHAR(13) FROM @Columnas WHERE [email protected] 
     SELECT @i=MIN(indice) FROM @Columnas WHERE indice>@i 
    END 

    SET @Script=SUBSTRING(@Script,0,LEN(@Script)-1) + CHAR(13) + ')' 
    PRINT @Script 
END 
GO 
संबंधित मुद्दे