Xpoint
   [напомнить пароль]

Получение информации о полях/параметрах/столбцах всех объектах пользователя

Метки: [без меток]
2007-08-29 13:29:18 [обр] Top manager(0/2)[досье]

Хочу написать запрос для получения информации о полях/параметрах/столбцах всех объектах пользователя.

Я сделал один, работает. Но не пойму, как получить информацию о Default значениях полей, если таковые установлены.

SELECT TOP 100 PERCENT
   dbo.sysobjects.name AS [Object]
   ,dbo.sysobjects.xtype AS [xType]
   ,dbo.syscolumns.Id
   ,dbo.syscolumns.name AS [Column]
   ,dbo.systypes.name AS [Type]
   ,dbo.syscolumns.length AS [Length]
   ,CONVERT(BIT,CASE WHEN dbo.syscolumns.colstat=1 THEN 1 ELSE 0 END) IsIdentity
FROM dbo.syscolumns 
INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id
INNER JOIN dbo.systypes ON dbo.systypes.xtype = dbo.syscolumns.xtype AND dbo.systypes.status=0 AND dbo.systypes.uid=4
WHERE (
          (dbo.sysobjects.xtype = 'P')
           OR (dbo.sysobjects.xtype = 'U') 
           OR (dbo.sysobjects.xtype = 'TF') 
           OR (dbo.sysobjects.xtype = 'F') 
           OR (dbo.sysobjects.xtype = 'V') 
     )
спустя 1 минуту [обр] Top manager(0/2)[досье]
Может у кого будет походу замечания по корректности запроса и/или получаемых данных?! Давайте откорректируем... :)
спустя 48 минут [обр] Дмитрий Попов(0/509)[досье]
сообщение промодерировано
А о названии СУБД, по вашему, люди должны догадываться, только заглядывая внутрь темы?
спустя 2 минуты [обр] Top manager(0/2)[досье]
MSSQL 2000/2005
спустя 27 минут [обр] Дмитрий Попов(0/509)[досье]
Туда и уносим
спустя 12 секунд [обр] Дмитрий Попов(0/509)[досье]
М Перенесено из форума "Компьютеры::Базы данных (СУБД)::Язык SQL"
спустя 1 минуту [обр] Top manager(0/2)[досье]
точно, походу я просто не туда кликнул, когда выбирал форум... :)
спустя 20 часов [обр] Алексей Рюмин aka Dwarf(120/864)[досье]
select * from INFORMATION_SCHEMA.COLUMNS
- описания полей - в BOL.
PS. Для этих целей лучше все-таки пользоваться видами INFORMATION_SCHEMA.*, чем лезть напрямую в системные таблицы.
спустя 2 дня 18 часов [обр] Top manager(0/2)[досье]
Алексей Рюмин aka Dwarf[досье] спасибо :), это решило все вопросы :)
спустя 35 секунд [обр] Top manager(0/2)[досье]
Кстати, я думаю в BOL лезть не имеет смысла, т.к. название полей говорит само за себя.
спустя 10 минут [обр] Top manager(0/2)[досье]
Чё-то я не могу найти, как определить инкрементальное ли поле или нет...
спустя 1 час 4 минуты [обр] Top manager(0/2)[досье]
Также, чё-то видно тока Таблицы и представления, и ни каких процедур, функций, триггеров
спустя 10 минут [обр] Top manager(0/2)[досье]
Вот что получилось :), тока не хватает данных о ХР и триггерах
SELECT 
   I.TABLE_CATALOG AS [Database]
   ,I.TABLE_SCHEMA AS [Owner]
   ,I.TABLE_NAME AS [Object] 
   ,ISNULL(OBJECTPROPERTY(object_id(TABLE_NAME), 'IsProcedure'), 0) AS [IsProcedure] -- Процедура
   ,ISNULL(OBJECTPROPERTY(object_id(TABLE_NAME), 'IsTable'), 0) AS [IsTable] -- Таблица
   ,ISNULL(OBJECTPROPERTY(object_id(TABLE_NAME), 'IsTableFunction'), 0) AS IsTableFunction -- Табличная функция
   ,ISNULL(OBJECTPROPERTY(object_id(TABLE_NAME), 'IsTrigger'), 0) AS IsTrigger -- Триггер
   ,ISNULL(OBJECTPROPERTY(object_id(TABLE_NAME), 'IsView'), 0) AS IsView -- Представление

   ,I.ORDINAL_POSITION AS [Position]
   ,I.COLUMN_NAME AS [Column]
   ,I.DATA_TYPE AS [Type]
   ,COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'Precision') AS [Length] -- Длина для типа данных в столбце или для параметра
   ,I.COLUMN_DEFAULT AS [DefaultValue]
   ,I.IS_NULLABLE AS [IsNullable] -- Разрешение использовать NULL
   ,ISNULL(COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsIdentity'), 0) AS IsIdentity -- Столбец использует свойство IDENTITY
   ,ISNULL(COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsComputed '), 0) AS IsComputed -- Столбец является вычисляемым столбцом
   ,ISNULL(COLUMNPROPERTY(object_id(TABLE_NAME), COLUMN_NAME, 'IsOutParam '), 0) AS IsOutParam -- Параметр процедуры является выходным параметром
   --,I.* 
FROM INFORMATION_SCHEMA.COLUMNS AS I
WHERE I.TABLE_NAME<>'Sql'
спустя 1 день [обр] Top manager(0/2)[досье]
Как их получить-то?
спустя 3 месяца 8 дней [обр] Кирилл [Kirk] Королев(121/673)[досье]
Кого получить-то? Коды процедур-триггеров? sp_helptext 'object_name'
Powered by POEM™ Engine Copyright © 2002-2005