Конференция "Базы" » SQL server compact [D7, MSSQL]
 
  • Антоха (20.04.11 12:29) [20]

    > Какая ОС

    WinXP SP3
  • Anatoly Podgoretsky © (20.04.11 16:20) [21]
    Тогда нигде, для SP3 отсутствует, а устанавливается и обновляется точко через автоматические обновления.
  • Кщд (21.04.11 12:17) [22]
    >OW ©   (19.04.11 14:59) [15]
    >вообще не понимаю, зачем этот недосервер нужен.
    возможно, для использования на мобильных платформах?
  • HuRN © (16.06.11 15:01) [23]
    Столкнулся с той же проблемой. Да и не я один: например "http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=88315&hl=microsoft+ole+db+provider+oracle" Только там обвиняют драйвер Оракла, а здесь даже сам движок БД SQL SC. У меня вообще Sybase IQ. А во всех случаях дело в ADO и эта мысль время от времени высказывается, но почему-то не получает продолжения. Впрочем мнение, что ADO — редкостное г-но очень распространено. Считается даже, что переписать с нуля двухнедельный труд — умеренная плата за такую роковую ошибку как использование ADO. В общем, есть большой запрос к БД. При отладке в Delphi работает без эксепшенов, но вываливается в CPU Window, после которого нормально завершается, возвращая результаты. При работе без отладчика — ошибка "Объект был открыт" и кирдык. Через JDBC проблем нет, но связка Delphi+JDBC — проект выходящий за рамки моей зарплаты. Путём плясок с бубном, включающих написание отдельного отладочного приложения, выяснено следующее: в возвращаемых значениях не должно быть NULL, и не только в конечном датасете, но и в процессе выполнения. Т.е. в том запросе группировались строки и в конечном результате NULL не присутствовал, но в исходных (несгруппированных) строках он встречался. Повсеместное использование ISNULL() решило проблему.
    Например было:
    SELECT SUM(A) AS Trololo
    а стало:
    SELECT SUM(ISNULL(A, 0)) AS Trololo

    Надеюсь кто-то съэкономит на моём совете те два рабочих дня, которые потратил я :)
  • Ega23 © (16.06.11 15:58) [24]

    > Например было:
    > SELECT SUM(A) AS Trololo
    > а стало:
    > SELECT SUM(ISNULL(A, 0)) AS Trololo
    >


    SUM (Transact-SQL)

    Возвращает сумму всех, либо только уникальных, значений в выражении. Функция SUM может быть использована только для числовых столбцов. Значения NULL пропускаются.

    http://msdn.microsoft.com/ru-ru/library/ms187810%28SQL.90%29.aspx

    Не там ошибку ищешь.
  • sniknik © (16.06.11 19:41) [25]
    > Не там ошибку ищешь.
    и не "тогда"... ссылка на ветку 04 года...
  • HuRN © (20.06.11 10:30) [26]
    sniknik, а у тебя есть что сказать по существу?

    Число "04" в заголовках первых постов — это не год, а месяц. Год — это число "11". Возможно, словосочетание "формат даты" для тебя звучит непривычно, но в базах данных оно часто используется, учти. Это раз.

    И ещё вопрос на засыпку: когда, как думаешь, последний раз обновлялся MDAC? В 2005. Скорее всего ты не знаешь, что это такое, так что поясню: ADO, который здесь обсуждается, входит именно в этот пакет. То что он устарел — это факт, но многое ПО его всё ещё использует. Это два.

    Что же по существу, то Ega23 прав — ошибка снова всплыла. Благое воздействие ISNULL оказалось совпадением (ошибка плавающая). Новая пляска с бубном. Запрос был пропущен через OPENQUERY MS SQL и тот уже смог выдать внятный текст ошибки: "The OLE DB provider "MSDASQL" for linked server "SPBENIQ1" supplied invalid metadata for column "No. of SDCCHs". The precision exceeded the allowable maximum." Поле "No. of SDCCHs" — это агрегат: AVG(CLSDCCH_CNUCHCNT).  Тип данных "CLSDCCH_CNUCHCNT" — NUMERIC(18, 8). А вот функция AVG, усредняя значения, возвращает нечто другого типа — я даже не стал выяснять что именно, просто сделал приведение результата и всё заработало как часы:
    CONVERT(NUMERIC(18, 8), AVG(CLSDCCH_CNUCHCNT)) AS 'No. of SDCCHs'

    Надеюсь, никого не успел ввести в заблуждение своим предыдущим постом, на этот раз инфа 100% :)
  • Ega23 © (20.06.11 10:54) [27]

    >  А вот функция AVG, усредняя значения, возвращает нечто
    > другого типа — я даже не стал выяснять что именно


    Всё строго как описано она возвращает.
    http://msdn.microsoft.com/ru-ru/library/ms177677%28SQL.90%29.aspx


    > И ещё вопрос на засыпку: когда, как думаешь, последний раз
    > обновлялся MDAC? В 2005. Скорее всего ты не знаешь, что
    > это такое, так что поясню: ADO, который здесь обсуждается,
    >  входит именно в этот пакет. То что он устарел — это факт,
    >  но многое ПО его всё ещё использует. Это два.


    Разве "ADO входит в MDAC"? ADO это технология доступа, MDAC - набор драйверов, не?

    Впрочем мнение, что ADO — редкостное г-но очень распространено. >Считается даже, что переписать с нуля двухнедельный труд — умеренная плата за такую роковую ошибку как использование ADO.


    Это ты с BDE спутал. А в целом у каждой СУБД есть своя уникальная технология доступа, используя которую ты получишь максимальный выигрыш. Для MSSQL - это ADO. Для какого-нибудь FierBird - это FIB+. Ну и т.д. Использовать ADO для Oracle - ну тоже можно, но будет, наверное, несколько экстравагантно. Хотя не иметь OLEDB драйвера под свою СУБД сейчас не модно. Даже под Postgres OLEDB драйвер есть.
  • sniknik © (20.06.11 11:18) [28]
    ? Число "04" в заголовках первых постов — это не год, а месяц. Год — это число "11".
    эээ... еще раз пошел по ссылке... смотрю дату

    Voland911  21 апр 04, 16:43    [641332]


    где число 11?

    дальше  
    Charly 23 апр 04, 10:43    [645358]
    17 дек 04, 10:07    [1187920]  
    17 дек 04, 10:27    [1188027]


    и т.д. нет числа 11.

    нашел только в последнем посте
    Charly 20 дек 04, 11:27    [1192664]


    вот оказывается где год пишут... ;)
  • sniknik © (20.06.11 11:26) [29]
    кстати попробовал поискать проблему, которая ну прям очень распространена и из-за которой "ADO г-но редкостное"...
    http://www.google.ru/search?hl=ru&newwindow=1&client=firefox&hs=OhZ&rls=org.mozilla%3Aru%3Aofficial&q=ADO+%22%D0%9E%D0%B1%D1%8A%D0%B5%D0%BA%D1%82+%D0%B1%D1%8B%D0%BB+%D0%BE%D1%82%D0%BA%D1%80%D1%8B%D1%82%22&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&aq=f&aqi=&aql=&oq=

    4 упоминания включая эту ветку... с 3мя не очень то связанными, с "не поняткой". да уж, очень "распространенная" в русском итернете проблема...
    т.е. то ли явный ввод в заблуждение (троллинг с попуткой развязывания "ADO war"), т.е. просто ламеризм (попытка свалить на внешние факторы собственные глюки/незнания).
  • sniknik © (20.06.11 11:29) [30]
    > Благое воздействие ISNULL оказалось совпадением (ошибка плавающая).
    > я даже не стал выяснять что именно, просто сделал приведение результата и всё заработало как часы:
    что, без выяснения причин может оказаться очередным совпадением... ламерский подход, не выяснять, а перебирать (точно пляски с бубном).
  • sniknik © (20.06.11 11:54) [31]
    > когда, как думаешь, последний раз обновлялся MDAC? В 2005.
    вообще не думал об этом... решил проверить. посмотреть, т.к. сказать "унутрь" - составные элементы MDAC/ADO
    http://saveimg.ru/show-image.php?id=6d49333cc680bc7b301d4287f8c71c67

    внимание на даты... 2005 даже не встречается, минимум 2007. что странно... раз он в 2005 "последний раз", может это ты чего то не знаешь? например того, что его просто перестали выделять в отдельный образ, но с системой он продолжает обновятся до сих пор (у меня XP поэтому не самые последние версии, на 7ке должны быть поновее)
  • Anatoly Podgoretsky © (20.06.11 12:21) [32]
    > sniknik  (20.06.2011 11:54:31)  [31]

    Обновление АДО через стендалоне прекратили начиная с ХР SP1 - сейчас только
    через обновления
  • HuRN © (20.06.11 12:37) [33]
    sniknik,  я вообще не знаю где ты нашёл юзеров Voland911 и Charly — их просто нет в этой ветке ("http://pda.delphimaster.net/?id=1302851097&n=1&p=2"). А дата стоит сразу после ника в скобках. Не буду даже теорезировать, как так получилось — думаю это неврологическое.

    Насчёт распространённости проблемы — это величина субъективная. Разумеется, по статистике самая распространённая проблема в SQL — отсутствие WHERE после UPDATE из-за чего базе пришёл кирдык и "О, Боже! Что же теперь делать!!!".

    Насчёт ADOWar — холивары, да дело такое, я не хотел на самом деле — беру свои слова обратно. Хотя троллинг на узких технарских сайтах конечно очень интересная идея — займись.

    Насчёт ламеризма даже пачкаться не буду, так как ничего вразумительного по теме от тебя не слышал, то мнение моё о тебе самое грустное. А "пляски с бубном", представь себе, вполне рабочий вариант когда имеешь дело с Майкрософт: в отладчике ошибок нет, в рантайм "Объект открыт", а на деле вообще проблема с точностью дробного числа. Представь, пожалуйста, своё чисто пацанское правильное решение проблемы и я извинюсь.

    Вот здесь "http://msdn.microsoft.com/ru-ru/data/aa937730(l=en-us)" лежит MDAC, его последния версия 2.8 SP1 от 5/10/2005. Вот здесь ("http://msdn.microsoft.com/en-us/library/ms676506(v=vs.85).aspx") Билл Г. пишет, что 2.8 - последняя версия MDAC, а потом в Висте резко появился новый пакет — Windows DAC и сразу аж 6-й версии. И да, в него включён новый ADO. Какая непростительная ошибка с моей стороны — спутать тёплое и мягкое.

    Резюмируя. Ветка была про ошибку "Объект был открыт". Я эту проблему решил, хоть и не сразу, каюсь. Решил-решил, будь уверен — я прогнал десяток тестов, на втором из которых скуксилось предыдущее "решение". Про решение отписался, что бы облегчить жизнь коллегам. Ega23 внёс своё мнение, ты внёс говна на лопате. Я думаю выводы очевидны.
  • Ega23 © (20.06.11 12:50) [34]

    > Насчёт ламеризма даже пачкаться не буду, так как ничего
    > вразумительного по теме от тебя не слышал, то мнение моё
    > о тебе самое грустное. А "пляски с бубном", представь себе,
    >  вполне рабочий вариант когда имеешь дело с Майкрософт:
    > в отладчике ошибок нет, в рантайм "Объект открыт", а на
    > деле вообще проблема с точностью дробного числа.


    Вот я почему-то никогда не сталкивался с такой ошибкой. Но ради прикола вбил "Объект был открыт" в Гугл. По первой же ссылке на первой же странице небезызвестный Dmitry Arefiev написал следующее:
    Данная ошибка является багом Oracle OLEDB провайдера. Варианты решения в порядке приоритетности:
    - отказаться от работы через ADO c Oracle и выбрать компоненты прямого доступа.
    - перейти к принципу один TADCommand/TADODataSet/и т.д. - один запрос, т.е. не менять запрос, а создавать дополнительные объекты.
    - сменить провайдер на микрософтовский, и поиметь проблемы с блобами и т.д.


    А что касается "плясок с бубном когда имеешь дело с Microsoft" - уже только эта фраза выдаёт задрота-красноглазика, который не умеет работать с MS, не хочет учится, не желает залезть на MSDN и т.д. по списку.

    Как-то так.
  • sniknik © (20.06.11 13:01) [35]
    > я вообще не знаю где ты нашёл юзеров Voland911 и Charly
    ну а кто дал ссылку, с претензией на "массовость"?
    > Столкнулся с той же проблемой. Да и не я один: например "http://www.sql.ru/forum/actualthread.aspx?bid=20&tid=88315&hl=microsoft+ole+db+provider+oracle"
  • HuRN © (20.06.11 13:19) [36]
    Ega23, да я читал этот пост. Речь там конкретно про Oracle, мнение Дмитрия вообще-то не обосновано, проблема не решена — в конце ветки автор просто перешёл на OCI, что вообще-то правильно, но подходит только для Oracle. И, кстати, именно в этой ветке ("http://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=353795&msg=3308077") высказано мнение, что "Переделывание двухнедельного кода - довольно скромная цена за такую глупость как использование ADO". Что касается Ваших оскорблений, думаю их стоит отнести к отсутствию аргументов. К тому же содержание оскорблений всегда обнажает собственные проблемы оскорбляющего. Я письками с Вами меряться не буду — завязал ещё в старшей группе детского сада, хотя насчёт "задрота-красноглазика" Вы СИЛЬНО промахнулись. Так же как и Никнику скажу Вам: код в студию. Что сделали Вы, кроме того что не дочитали первую же ссылку Гугла? Покажите мне как надо, раз я такой глупый, что никто кроме меня не то что не нашёл, даже не предложил решения. Ссылку дайте на MSDN, где всё объяснено. Там есть правда, одна статья про эту ошибку, но связанная с положением курсора на серверной стороне.  Опыт паказал, что рекомендуемый Майкрософтом перенос курсора на клиентскую сторону в данном случае не помог, не говоря уже о падении производительности. Так что MSDN я читал, не беспокойтесь. Насчёт "не хочет учиться" я вообще уссался — за что мне Политех зарплату платит по отдельному договору подряда — загадка. Жду Вашего аргументированного ответа. Слышали что-нибудь про аргументы? Свой лимит времени на срач я уже исчерпал, если у Вас будет МЫСЛЬ — поговорим.
  • HuRN © (20.06.11 13:23) [37]
    sniknik, прочитайте пожалуйста что я на САМОМ деле написал : "Столкнулся с той же проблемой. Да и не я один". Никто не утверждал, что проблема повальная, но она есть. Была в 2004 году и остаётся в 2011. У меня Windows 7, а воз и ныне там. До запятых моих ещё докопайтесь, если по теме сказать нечего.
  • Ega23 © (20.06.11 13:35) [38]

    > думаю их стоит отнести к отсутствию аргументов


    Отнюдь. Все (буквально - все), кто говорил, что "Майкрософт - г-но и пляски с бубном" - оказывались незнайками. Т.е. они это делать тупо не умели.
    Что мы и видим в Вашем случае: вместо того, чтобы прочитать, что за ошибка, вместо того, чтобы в except вывесли код ADOException и поискать, что MSDN говорит на этот счёт, вместо того, чтобы просто почитать (Ваша цитата, не моя):

    >  А вот функция AVG, усредняя значения, возвращает нечто
    > другого типа — я даже не стал выяснять что именно, просто
    > сделал приведение результата и всё заработало как часы

    мы фигачим какое-то решение, оно "пока работает, правда ХЗ как".
    Что и есть признак ламера.


    >  Покажите мне как надо, раз я такой глупый, что никто кроме
    > меня не то что не нашёл, даже не предложил решения. Ссылку
    > дайте на MSDN, где всё объяснено.


    Научись сначала задавать правильные вопросы. Опиши проблему, опиши версию СУБД, опиши версию Delphi, MDAC (раз уж на то пошло), приведи скрипт создания таблиц, из которых идёт выборка, приведи саму выборку и как потом ты это дёргаешь из Delphi.
    И вот тогда и только тогда кто-то возможно поможет тебе кодом. А до этого вопрос звучит так: "У меня машина не заводится, Опель - гавно".
  • Ega23 © (20.06.11 13:36) [39]

    > Насчёт "не хочет учиться" я вообще уссался — за что мне
    > Политех зарплату платит по отдельному договору подряда —
    > загадка.

    Ваистену. За что - пока не ясно.
 
Конференция "Базы" » SQL server compact [D7, MSSQL]
Есть новые Нет новых   [134431   +11][b:0][p:0.001]