Вход на сайт
MS SQL 2005 - список полей
341
15.05.09 17:08
На сегодня вопросик такой - Как получить список полей в таблице MS SQL 2005?
Понятное дело, что нужен сервер и имя базы - это получил без особого труда.
Реально - получил больше - список доступных серверов и список баз на них.
Немного повозился и получил список таблиц в выбранных базах. Теперь пытаюсь
получить список полей в каждой таблице.
Есть куча вспомогательных системных вьюшек
INFORMATION_SCHEMA.COLUMNS
sys.all_columns
sys.columns
по информативности устраивает последняя, но... в ней нет никаких ссылок на
таблицы к которым они принадлежат.
Кто-нибудь делал такое? Какие будут идеи по получению связки таблицы->поля?
Смотрел SqlSMO. Там можно легко получить что надо, но SqlSMO не работает без
сетевого соединения.
Понятное дело, что нужен сервер и имя базы - это получил без особого труда.
Реально - получил больше - список доступных серверов и список баз на них.
Немного повозился и получил список таблиц в выбранных базах. Теперь пытаюсь
получить список полей в каждой таблице.
Есть куча вспомогательных системных вьюшек
INFORMATION_SCHEMA.COLUMNS
sys.all_columns
sys.columns
по информативности устраивает последняя, но... в ней нет никаких ссылок на
таблицы к которым они принадлежат.
Кто-нибудь делал такое? Какие будут идеи по получению связки таблицы->поля?
Смотрел SqlSMO. Там можно легко получить что надо, но SqlSMO не работает без
сетевого соединения.
NEW 15.05.09 23:07
а, подожди, я тебя неправильно понял. Столб id есть, но в нем нет нужного тебе значения? Тогда, скорее всего, проблема в том, что ты делаешь селект из sys.columns из-под логина, у которого нет прав на нужную тебе таблицу. Я при переходе на 2005 тоже напоролся на эти грабли. Если у пользователя нет прав на какой-то объект, то выполненные им селекты из системных таблиц не выдадут информацию об этом объекте. Это новая фича по сравнению с 2000.
NEW 16.05.09 00:44
в ответ digital.pilot 15.05.09 23:07
Столбца id - нет, есть - object_id.
Но при коннекте родными тулузами получалась глупость... хотя вроде админом залогинился и он же владелец всех схем.
Смешно, но тоже самое, выполненное из тулузы 2008 отработало на раз.
Ладушки - в понедельник буду мучать эту проблему - там еще схемы в наборе, а shema.table он вроде не понимает...
Но при коннекте родными тулузами получалась глупость... хотя вроде админом залогинился и он же владелец всех схем.
Смешно, но тоже самое, выполненное из тулузы 2008 отработало на раз.
Ладушки - в понедельник буду мучать эту проблему - там еще схемы в наборе, а shema.table он вроде не понимает...
NEW 17.05.09 23:57
Припозднился с ответом, но может еше пригодится :)
1. select [name] from dbo.syscolumns where id = object_id(N'[dbo].[myTable]') // работа с object_id
2. exec sp_help 'myTable' // MS SQL - зависит от версии
3.select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'myTable' //работает в MS SQL Server 2000/2005/2008 and MySql 5
....
хех, не читал ответы выше, в итоге ничего нового не открыл
1. select [name] from dbo.syscolumns where id = object_id(N'[dbo].[myTable]') // работа с object_id
2. exec sp_help 'myTable' // MS SQL - зависит от версии
3.select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'myTable' //работает в MS SQL Server 2000/2005/2008 and MySql 5
....
хех, не читал ответы выше, в итоге ничего нового не открыл
