Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/26: Рейтинг темы: голосов - 26, средняя оценка - 4.73
2 / 2 / 1
Регистрация: 05.09.2010
Сообщений: 118

Извлечение структуры базы данных MS SQL

01.11.2010, 22:12. Показов 4856. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброе время суток.
Будте добры, подскажите как можно с помощью С# вытащить хребет базы данных MS SQL. Я имею ввиду создать что-то наподобии дампа, но без содержимого ячеек. В этом дампе должны хранится свойства всех полей какждой таблицы и связи между ними.
Спасибо!
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.11.2010, 22:12
Ответы с готовыми решениями:

Как обновить dataset после изменения структуры базы данных сервере sql
Здравствуйте, пишу приложение на c#. Подключаюсь к базе данных через сервер ms sql. Допустим есть таблица rabochie с полями(Имя, Фамилия,...

Разработка структуры базы данных, объектно-ориентированный SQL
Имеется модель данных: Маршрут (код_маршрута, пункт_отправления, пункт_прибытия, время_отправления, время_прибытия, продолжительность) ...

Сохранение структуры базы данных Access в виде SQL-скрипта
Здравствуйте! Подскажите, как "вытащить" из БД Access SQL-скрипт структуры имеющихся в ней таблиц ("CREATE Table...")?

2
90 / 89 / 13
Регистрация: 28.09.2010
Сообщений: 262
02.11.2010, 18:25
Лучший ответ Сообщение было отмечено syegorius как решение

Решение

C#
1
2
3
4
5
6
using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        DataTable tables=connection.GetSchema("Tables");
        DataTable columns=connection.GetSchema("Columns");
}
Думаю, далее разобраться будет нетрудно.
2
2 / 2 / 1
Регистрация: 05.09.2010
Сообщений: 118
03.11.2010, 14:05  [ТС]
Цитата Сообщение от planar Посмотреть сообщение
C#
1
2
3
4
5
6
using (SqlConnection connection = new SqlConnection(connectionString))
    {
        connection.Open();
        DataTable tables=connection.GetSchema("Tables");
        DataTable columns=connection.GetSchema("Columns");
}
Думаю, далее разобраться будет нетрудно.
Спасибо, щас буду разбираться...

Добавлено через 39 минут
Вообщем только что заглянул че там внутри. Вещь полезная. Но не вся, но по крайней мере лучше чем я вчера выбирал отдельные значения из разных системных таблиц. Как бы такой вопрос, я посмотрел во внутрь таким образом:

foreach (DataColumn cols in columns.Columns)
{
Console.WriteLine(i + " " + cols);
i++;
}

Но в таблице нету поля указывающее на такие вещи: автоинкремент или нет, на сколько увеличивает автоинкремент и самое главное это индексы...

Не отрицаю тот факт, что я даже че-то недопонял, т. к. я в С-шарп не ас.

Добавлено через 26 минут
Еще вчера у меня получилось в моей программе добится вывода вот такой строки:

CREATE TABLE IF NOT EXISTS WA_ID_CustomerQuotations (`CustomerQuotationID` int(10) NOT NULL AUTO_INCREMENT, `CustomerInteriorName` varchar(100), `CustomerQuotationNumber` int(10), `CustomerIncomingQuotation` varchar(50), `QuotationExcelFileName` varchar(50), `DateOfCreation` datetime, `DateOfAddition` datetime, `WasAdded` bit)

Но в этой таблице есть ключевое поле. Узнать о том есть ли оно или нет у меня получается вот таким способом, точнее двумя:

exec sp_helpindex test и exec sp_helpconstraint test,

но exec sp_helpconstraint test ввыдает мне две таблицы, одна из которых мне очень сильно нужна (2-я таблица). Там 7 колонок, вот это:

PRIMARY KEY (clustered) PK_Test (n/a) (n/a) (n/a) (n/a) ID

Т. к. я не знаю как мне потом из переменной достать именно эту таблицу, а не первую я прибег к другому способу:


exec sp_helpindex test

Но и тут нашелся подводный камень. Таблица выглядит вот так:

IX_Test nonclustered, unique located on PRIMARY product_id, color_id, size_id
PK_Test clustered, unique, primary key located on PRIMARY ID

как бы человеку то понятно, что к чему, а как объяснить машине, что бы она читала так как мне надо. Я знаю что в пхп есть регулярные выражения для строк, по которым ищется то что необходимо среди огромного кол-ва текста, а есть ли такое в С шарпе?

Добавлено через 2 часа 18 минут
В общем я почти разобрался со всем этим г) Таблицы создает, достал и примари и индексы. Но есть одно "но". Если кто знает скажите. Тут совсем чуть-чуть осталось)

Вот так должна выглядеть запись, которую мне возвращает моя маленькая программка:

CREATE TABLE IF NOT EXISTS `TEST123` (
`FIRST` tinyint(3) unsigned NOT NULL,
`SECOND` int(11) DEFAULT NULL,
`THIRD` tinyint(4) DEFAULT NULL,
`FOURTH` varchar(79) CHARACTER SET utf8 DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;

а вот так мне выдает сейчас:

CREATE TABLE IF NOT EXISTS `TEST123` (
`FIRST` tinyint(3) NOT NULL,
`SECOND` int(10),
`THIRD` bit,
`FOURTH` varchar(79)
)

как вы успели заметить в моем варианте нет ENGINE=InnoDB DEFAULT CHARSET=cp1251; и CHARACTER SET utf8 (на unsigned не обращайте внимание, где его достать я знаю и то, что в моем варианте `THIRD` bit это тоже нормально!). Проблема в том, что я не знаю где в системных таблицах это указанно, если кто знает - подскажите пожалуйста!
(на unsigned не обращайте внимание, где его достать я знаю и то, что в моем варианте `THIRD` bit это тоже нормально!)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
03.11.2010, 14:05
Помогаю со студенческими работами здесь

Извлечение базы данных
Быть может покажется вопрос нубовским ну все же!! как час сижу и бьюсь об заклад: вопрос в след нужно вывести некую информацию из бд ...

Извлечение из базы данных
Всем доброго времени суток! Достаточно простой вопрос. Есть таблица в которой первый столбец это id. Каким должен быть SELECT, чтобы...

Извлечение данных из базы данных и работа с ними
Здравствуйте! я начинающий программист и нужна ваша помощь. мне нужно написать дипломный проект. он заключается в следующем. нужно создать...

Извлечение названий таблиц из базы данных
Как узнать название всех таблиц базы данных, и 'запихнуть' эти названия в ComboBox?

Извлечение информации из базы данных в Silverlight 4
Здаравствуйте уважаемые форумчане! У меня следующая проблема. Я создал проект Silverlight Business Application. В solution к нему...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru