Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

вопрос о ODBC (новичек)

14K
18 февраля 2009 года
artem_kvadro
63 / / 30.07.2007
Глупый, конечно, вопрос, я в базах данных - полный ноль, но не могу найти ответа, потому что очень простой (вопрос), наверное. Есть MS SQL 2000, ведется история в файл, количество записей в котором ограничено до 500 тыс. Есть возможность вести историю либо в формате csv либо db. Когда файл заполняется, он копируется в архивную папку, а исходный очищается и заполняется дальше. Мне нужно в своем приложении по данным из архивов строить графики. Вот тут я не пойму: можно ли указать эту архивную папку как источник данных ODBC? Везде говорится только про один файл... Нужно, чтобы пользователь задал интервал времени, а приложение само сформировало sql-запрос, выбрало нужный файл и данные из него.
265
19 февраля 2009 года
Gauss
975 / / 20.02.2000
Это зачем вам понадобился в MSSQL2000 прямой доступ к файлам данных? Все совсем не так работает. Лезешь через ODBC, указываешь сервер, пользователя, пароль, базу. Пишешь запрос, получаешь данные итд. Если у тебя архив лежит в другом файле, как ты говоришь, то это, скорее всего, другая база, так вот к ней и надо коннектится.
315
19 февраля 2009 года
Nick_M
399 / / 29.05.2003
Я так понимаю какая-то программа пишет свои данные в SQL Server и сама-же архивирует потом в файл *.csv или *.db. Хотя может и процедура сервера. В любом случае получается выходной файл не формата SQL Server и нужен доступ не к файлам данных сиквела.
Теперь по поводу указания папки в ODBC. Вроде как именно папка и указывается, а обращение к конкретному файлу: "select * from 123", где 123 - файл 123.csv или 123.db
14K
19 февраля 2009 года
artem_kvadro
63 / / 30.07.2007
Цитата: Gauss
Если у тебя архив лежит в другом файле, как ты говоришь, то это, скорее всего, другая база, так вот к ней и надо коннектится.



База та же, в том смысле, что пользователь может задать такой интервал времени, что начало графика лежит в одном файле, а конец - в другом. Если, конечно, ты это имел ввиду.

[QUOTE=Nick_M]Вроде как именно папка и указывается, а обращение к конкретному файлу: "select * from 123", где 123 - файл 123.csv или 123.db[/QUOTE]

Насчет той сторонней программы, которая ведет историю (SIMATIC WinCC flexible, если о чем-то говорит:)), я сам выбираю процедуры при заполнении файла, т.е. копирование в другую папку - это моя процедура.

Значит, за один запрос я всех данных не получу. Если я правильно понял, то будет алгоритм типа: "select * from 123", если данных нет, то "select * from 124".

315
19 февраля 2009 года
Nick_M
399 / / 29.05.2003
Цитата: artem_kvadro
Значит, за один запрос я всех данных не получу. Если я правильно понял, то будет алгоритм типа: "select * from 123", если данных нет, то "select * from 124".



Да, как-то так

265
20 февраля 2009 года
Gauss
975 / / 20.02.2000
ни .csv ни .db никакого отношения к MSSQL не имеют, доступ к ним надо получать отдельными запросами через другие коннекты и уже в своей программе объединять полученные данные.
14K
20 февраля 2009 года
artem_kvadro
63 / / 30.07.2007
Цитата:
ни .csv ни .db никакого отношения к MSSQL не имеют



Да, ты прав. Оказывается, есть 2 варианта в этой программе для ведения истории: csv-файлы и с помощью SQL сервера. Я попробовал в ней настроить второй вариант, теперь в администрировании источников данных появился новый пользовательский dsn с драйвером sql. Только теперь не пойму, все равно остается ограничение на количество записей. Теперь понятно, что в случае с csv-файлами за это отвечала только сама программа (WinCC), т. е. сбрасывала в архив, очищала исходный. А что будет делать sql-сервер, когда файл заполнится? Или на него вообще не влияет это ограничение, тогда сколько можно сделать записей в его базу?:confused:

315
20 февраля 2009 года
Nick_M
399 / / 29.05.2003
Ограничения вводятся только на уровне программы. В SQL Server нету ограничений на кол-во записей
14K
20 февраля 2009 года
artem_kvadro
63 / / 30.07.2007
Значит, не получится обойти ограничение в 500тыс. Только что проверил: поставил на 5 записей, в базу 5 раз записало, а дальше тупо не пишет. И скопировать базу sql-сервера нельзя средствами WinCC, как с csv-файлами:mad: Все-таки придется делать историю в csv-файлах...
P.S. А в чем хранится база sql-сервера, в каких файлах?
315
21 февраля 2009 года
Nick_M
399 / / 29.05.2003
*.mdf - данные, *.ldf - лог транзакций. Только напрямую работать с этими файлами нельзя. Только через SQL Server. Доступ есть к нему?
14K
21 февраля 2009 года
artem_kvadro
63 / / 30.07.2007
Насколько я понимаю, есть, потому что скриптами из WinCC я могу создавать свою базу для каких-то иных целей, не только для ведения истории, и в скриптах обращаться к ней запросами sql.
315
24 февраля 2009 года
Nick_M
399 / / 29.05.2003
Тогда время от времени запускать запрос типа
 
Код:
SELECT * INTO archive_table_010509 FROM main_table

который будет скидывать записи из главной таблицы в архивную. main_table после этого можно очистить
14K
24 февраля 2009 года
artem_kvadro
63 / / 30.07.2007
А таблицы расположены в пределах одной базы, то есть после этого не нужно будет самому искать в какой таблице находятся нужные данные, а одним запросом вытащить что нужно?
315
24 февраля 2009 года
Nick_M
399 / / 29.05.2003
В общем случае - да. Однако возможны свои особенности, как например написание динамических запросов и т.п. Все зависит от того что нужно получить в итоге
14K
24 февраля 2009 года
artem_kvadro
63 / / 30.07.2007
По сути задача несложная, в итоге нужно получать 3 параметра: имя тега, значение и дата/время. После по этим точкам построить графики для каждого тега.
Раз уж можно обойти ограничение клиента по кол-ву записей с помощью самого sql-сервера, то это здорово. Плюс этого метода для меня заключается в одном запросе, но если будет много каких-то особенностей, то это уже минус. В ближайшее время мне это не осилить, нужно штудировать литературу по MS SQL и вообще по sql, потому что, например, про динамические запросы даже не слышал:(
А насчет csv-файлов - с ними плюс, что WinCC flexible работает и на операторских панелях, sql-сервера там нет, так что возможность ведения истории только в csv. Тогда мое приложение могло бы пригодиться и в этом случае, и в случае с РС.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог