2009-12-28 16 views
5

quando abbiamo bisogno della query di stored procedure che usiamo 'sp_helptext ProcedureName'equivalente di sp_helptext per le tabelle in SQL Server

Può qualcosa di simile essere fatto per le tabelle?

+0

@Biswo - ho praticamente dovuto indovinare che cosa la vostra domanda era, è stato molto difficile da leggere. Si prega di confermare che ho interpretato correttamente. –

risposta

2

Non sembra essere un equivalente diretto di sp_helptext che lavorerà con le tabelle.

I due metodi che sembrano essere comuni su varie bacheche sono:

  1. Utilizzare INFORMATION_SCHEMA.COLUMNS e concatenare i risultati nel comando create.
  2. Utilizzare SQL-DMO sceneggiatura

C'è un articolo sul secondo metodo here

+0

Un paio di esempi del primo metodo può essere visto a http://social.msdn.microsoft.com/Forums/en/transactsql/thread/28eeb603-1607-4b56-9461-3c0502cbec9c - E 'un po' di SQL piuttosto peloso però –

+0

@ Dan F lol - Credo che si controllato il primo risultato per 'tavolo sp_helptext' in google così :) –

+0

@ Davide: Haha, sì, ho avuto un sentore che sarebbe stato un google facile :-) –

3

Utilizzare followig interrogazione

select * from INFORMATION_SCHEMA.COLUMNS dove table_name = 'TableName'

6

Usa Alt + F1 mentre il nome tabella selezionata in una finestra di query.

0

prova con questo SP. Non ha tutte le notazioni richieste per una tabella come le chiavi primarie e le chiavi esterne, ma è un inizio.

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 
2

piuttosto semplice:

sp_help YourTable 
Problemi correlati