Bonjour à tous.
Je souhaitera savoir s'il existe une version sp_helptext pour les tables ?
Merci et bonne journée
Version imprimable
Bonjour à tous.
Je souhaitera savoir s'il existe une version sp_helptext pour les tables ?
Merci et bonne journée
salut,
si c'est pour voir les informations d'une table (colonnes,types,proprietaire ...)
c'est la procedure sp_help
exemple
Code:sp_help matable
Merci,
si tu fait un sp_helptext sur une vue, tu auras la commande qui t'a parmis de crée cette vue.
mais avec sp_help tu as juste les informations.
Tu veux connaitre le DDL de la table alors?
Oui, cela serai pour l'inclure dans du code, donc je n'utiliserai pas l'entreprise management.
Donc en claire, il me faudrait un commande, si cela existe qui ferait exactement la meme chose que sp_helptext pour les tables.
Merci
si tu veux recuperer le script de creation d'une table, tu peux utiliser cette procedure stockée.
pour l'appelerCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 Create Procedure [dbo].[scripter](@Tablename varchar(128)) AS Declare @Structure varchar(8000), @colstr varchar(8000) Set NOCOUNT on Select @colstr = '' If exists (select * from sysobjects where name = 'cols') Drop Table cols Create Table cols ( ColInfo varchar(500) null ) Insert Into Cols (ColInfo) Select '[' + RTRIM(C.name) + '] ' + Case When isComputed = 0 then LEFT(CASE WHEN (T.name IN ('char', 'varchar', 'nchar','nvarchar')) THEN T.name + '(' + LTRIM(RTRIM(STR(C.length))) + ')' When t.name in ('numeric','decimal') then t.name + '(' + Cast(c.prec as varchar) + ','+ cast(c.scale as varchar) + ')' else t.name END,30) else 'AS ' end + Case when isnullable = 1 and iscomputed = 0 then ' NULL' When isnullable = 0 and iscomputed = 0 then ' NOT NULL' When iscomputed =1 then '(calculated) ' end + Case When c.colid = (Select max(c.colid) maxid FROM sysobjects o left JOIN syscolumns c ON (o.id = c.id) left JOIN systypes t ON (c.xusertype = t.xusertype) WHERE o.name = @tablename ) then ')' else ',' end FROM sysobjects o inner JOIN syscolumns c ON (o.id = c.id) inner JOIN systypes t ON (c.xusertype = t.xusertype) WHERE o.name = @tablename --- Declare colcur Cursor READ_ONLY FOR Select Cast(Colinfo as varchar(500)) FROM cols OPEN ColCur FETCH colcur into @structure IF (@@FETCH_STATUS <> 0) BEGIN CLOSE TableCursor DEALLOCATE TableCursor END WHILE (@@FETCH_STATUS = 0) BEGIN Select @colstr = @colstr + ' ' + cast(@structure as varchar(500)) FETCH colcur INTO @structure END CLOSE colcur DEALLOCATE colcur If exists (select * from sysobjects where name = 'cols') Drop Table cols Print: 'Create Table ' + @TableName + '(' Print: @colstr
Par contre cette PS ne te donne pas les contraintesCode:exec scripter nom_table
Bonjour,
Merci, est ce possible de modifier cette procédure pour avoir aussi les contraintes et GRANT ?
Je sais, cela n'est pas évidant !
Bonjour, ce script ne fonctionne qu'a moitié,
il bug sur les grande table, et n'affiche pas les contraintes ou autre specificité.
help help:aie:
Il ne donne pas les contraintes, mais je peux l'adapter au besoin.
Par contre pour les bugs, as-tu des messages d'erreurs? donne t-il des resultats erronés?
Merci, c'est très gentil :):)
pour le bug, il semble ok now, je te tien au courant
sinon j'ai ajouté ceci, c'est pas grand chose mais c'est utile
Code:
1
2
3
4
5 select 'if exists (select * from dbo.sysobjects where id = object_id(N''[dbo].[' + @TableName + ']'') and OBJECTPROPERTY(id, N''IsUserTable'') = 1)' select 'drop table' + @TableName select 'Create Table ' + @TableName + '(' select @colstr