Как производить Словарь Данных в SQL Server 2008

У меня есть следующая консультация, которую я это нашел из-за Интернета, но у меня есть проблемы, чтобы добавлять поле чужеземного ключа, который он покажет мне, если поле это. Также он хотел добавить поле в конце концов с именем dafault, который я показал себе в случае, был у одного, распределенного стандартную настройку, которая была бы загружена, если бы не наполнилось ничто во время выполнения insert.

В конце концов я хотел бы знать, из-за которого whereу него есть tamaña условие, а именно: Из-за которого он должен различаться от каких-то data_types?

SELECT  distinct
        b.name  TABLA,
        c.name  COLUMNA,
        isnull(a.value,'')  DESCRIPCIÓN,
        e.name  TIPO,
        case when c.colid = 1 then 'PRIMARY KEY' else '' end    [PRIMARY KEY],
        c.LENGTH    TAMAÑO,
        case when c.isnullable = 1 then 'SI' else 'NO' END  NULLEABLE

FROM    sysobjects b 
        inner join syscolumns c 
            on  b.id = c.id 
        join sys.systypes e 
            on  c.xtype = e.xtype 
        left join sys.extended_properties a 
            on  a.major_id = b.id and 
                a.minor_id = c.colid 

WHERE   b.type = 'U' and b.name ='I_ATENCION' and e.name<>'NOMBRES' AND        e.name<>'ENTERO' and  
        e.name<>'FECHA' AND  e.name<>'MES' AND  e.name<>'MONEDA' and e.name<>'NOMBRES' and 
        e.name<>'OBSERVACIONES' and e.name<>'RFC' and e.name<>'STATUS' and e.name<>'TITULOS' and 
        e.name<>'TRESCHAR' and e.name<>'CHAR2' and e.name<>'CLAVELARGA' and e.name<>'CURP' and 
        e.name<>'comentarios' and e.name<>'VARCHARN' and   e.name<>'ID_T' and   e.name<>'bit' and   e.name='ID_C'

ORDER BY b.name,e.name
2
задан 22.02.2017, 17:14
1 ответ
SELECT identity(int,1,1)AS 'ROW_INDEX',schema_name(T.schema_id)  'SchemaName' ,name,object_id
INTO #TMP_TABLAS
FROM sys.tables T
where name in (
'tu tabla'
,'tu tabla'
,'tu tabla'
,'tu tabla'
)
DECLARE @INDEX INT=1,@LENGTH INT=0,@OBJECT_ID INT,@TABLE_NAME VARCHAR(100),@SCHEMA_NAME VARCHAR(100)
SET @LENGTH=(SELECT COUNT(1) FROM #TMP_TABLAS)
WHILE @INDEX<=@LENGTH
BEGIN
    --1.
    SELECT @OBJECT_ID=object_id,@TABLE_NAME=name ,@SCHEMA_NAME=SchemaName
    FROM #TMP_TABLAS WHERE ROW_INDEX=@INDEX
    SELECT @SCHEMA_NAME+'.'+@TABLE_NAME AS 'TABLA'
    --2.
    SELECT
    --T.object_id,T.name,C.object_id,
    --(CASE WHEN I.object_id IS NOT NULL THEN 'PK'
    --       WHEN FK.constraint_object_id IS NOT NULL THEN 'FK'
    --      ELSE '' END) 'REF'
    (CASE WHEN PK.column_id IS NOT NULL THEN 'PK'
           WHEN FK.constraint_object_id IS NOT NULL THEN 'FK'
          ELSE '' END) 'REF'
    ,C.name 'COLUMNA'
    ,TD.name 'TIPO'

    ,(CASE WHEN UPPER(TD.name) in ('VARCHAR','NVARCHAR','CHAR','NCHAR','TEXT') THEN (CASE WHEN C.max_length<0 THEN 'MAX' ELSE '['+CONVERT(VARCHAR(10),C.max_length)+']' END)
           WHEN UPPER(TD.name) in ('DECIMAL') THEN '['+CONVERT(VARCHAR(10),C.precision)+','+CONVERT(VARCHAR(10),C.scale)+']'
           ELSE ''
      END
           )'TAMAÑO'
    ,(CASE WHEN C.is_nullable=1 THEN 'SI' ELSE 'NO' END) 'NULO'
    ,ISNULL(P.value,'') 'DESCRIPCION'

    from sys.tables T
    inner join sys.columns C on T.object_id=C.object_id
    INNER JOIN sys.types TD ON C.system_type_id=TD.system_type_id AND TD.name!='sysname'
    --LEFT JOIN sys.index_columns IC ON C.object_id=IC.object_id AND C.column_id=IC.column_id
    --LEFT JOIN sys.indexes I ON IC.object_id=I.object_id AND I.is_primary_key = 1
    LEFT JOIN (SELECT IC.OBJECT_ID,IC.column_id
        FROM sys.indexes AS I
        INNER JOIN sys.index_columns AS IC ON i.OBJECT_ID = ic.OBJECT_ID AND I.index_id = IC.index_id
        WHERE I.is_primary_key = 1
        AND IC.OBJECT_ID=@OBJECT_ID)PK ON C.column_id=PK.column_id

    --LEFT JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE PK ON C.name=PK.COLUMN_NAME AND PK.TABLE_NAME=T.name
    LEFT JOIN sys.foreign_key_columns as FK ON T.object_id=FK.parent_object_id AND FK.parent_column_id=C.column_id
    left join sys.extended_properties P on C.object_id=P.major_id and C.column_id=P.minor_id
    where T.object_id=@OBJECT_ID--T.name='paginaweb_elemento'
    ORDER BY C.column_id
    --3.
    SET @INDEX=@INDEX+1
END
DROP TABLE #TMP_TABLAS
0
ответ дан 24.11.2019, 10:56
  • 1
    тебе благодарен за intenció n помощи, но отвечать с только có я говорю, что считается низким качество, пожалуйста прочитай CГіmo отвечать , издай и объясни это –  26.03.2019, 17:11
  • 2
    Спасибо за ответ и помогание в сообщество, но для того, чтобы твой ответ считался хорошей качество, ты должен объяснять немного то, что ты выставляешь в твоем có я говорю для того, чтобы поняли хорошо – Adriana Hernández 26.03.2019, 17:16
  • 3
    Привет, хотя это верно код мог бы встречать solució n он лучше подробно описывать как твой ответ решает выдвинутую проблему, спасибо. – Diego Avila 26.03.2019, 19:47