Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Обновление полнотекстового индекса приводит к зависанию sql server

Здравствуйте, коллеги.

У меня очень небольшая база, в ней есть табличка Elements и для нее построен полнотекстовый индекс на два поля типа varchar.
Все прекрасно работало до недавнего времени.
Индекс обновлялся по таймеру каждые 5 минут командой
ALTER FULLTEXT INDEX ON [Elements] START INCREMENTAL POPULATION
Команда отрабатывала за долю секунды.
Это не удивительно потому что в этой таблице всего 390000 записей и добавляется ежедневно по 500-600.

Внезапно сайт стал зависать - стал разбираться и быстро нашел причину.
При запуске этой команды (ALTER FULLTEXT INDEX ON [Elements] START INCREMENTAL POPULATION) она выполняется очень долго - я прождал несколько минут и абортировал.
Но это пол-беды. Беда в том, что sql server перестает отвечать на любые другие запросы, а диспетчер задач показывает 0% загрузки. Сразу после аборта выполнения процедуры - работа сайта (а значит и sql server) восстанавливается и диспетчер задач сразу показывает нормальные проценты загрузки.

Ну ладно, подумал я, с кем не бывает, давайте поделаем шаманские действия.

Перегрузка сервера - помогает на 10-20 минут - ситуация воспроизводится. После этого можно сколько угодно раз повторять запуск команды вручную - стабильно вызывает зависание.

Пересоздание каталога и индекса помогло на пол-дня.

Опять пересоздал индекс и стал делать обновление не каждые 5 минут, а два раза в день вручную. Прошло 3 дня и вот опять здравствуйте.

Скрин-шот свойств полнотекстового индекса можно посмотреть по ссылке

Версия сервера: Microsoft SQL Server 2012 (SP1) - 11.0.3128.0 (X64)
Dec 28 2012 20:23:12
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)

Прошу сообщить какие разумные действия можно сделать в данной ситуации.
Ответ:
AlMal
Насколько я понимаю, установка автоматического обновления изменит только момент (во времени) обновления индекса.
Само же обновление будет происходить так же инкрементально.

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

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

Еще раз, я обращаю внимание благородных донов на то, что вследствие весьма стандартной и легальной команды сервер переходит в явно ненормальное состояние и пребывает в оном пока не будет абортирована эта команда. Никаких прерываний и сообщений об ошибках не выводится. Все действия по созданию каталога и индекса делались с помощью меню в SQL Management Studio. То есть вся ответственность лежит на MS.


как минимум индексы будут обновляться "на лету", а не откладываться и потом грузить.
Просто на таких объемах не вижу смысла в обновлении по расписанию, для сервера это ничто.

а далее: читайте логи сервера, логи системы
Вопрос: Разделенная база данных - общение между сервером и клиентом

Здравствуйте.
Есть задача создать БД для обработки заказов несколькими менеджерами (15+ одновременно работающих людей).
Для всего, что делал раньше, было достаточно просто разделенной базы в локальной сети.
Но тут есть задача реализовать обновление данных на всех подключенных интерфейсных базах, когда одна из них обновляет данные на сервере.
Конкретнее: когда один из менеджеров заходит в карточку некоего заказа, она должна исчезнуть из формы доступных заказов у остальных менеджеров (или стать заблокированной).

Можно, конечно, сделать на всех клиентах обновление формы по таймеру, но это не совсем то, чего хотелось бы. Задумывался еще о переносе данных на SQL-сервер и подключение к нему клиентами, например, через ODBC, но не знаю нужно ли?
Можно вообще как-то отслеживать в access сколько клиентов подключено к accdb-файлу БД с таблицами и каким-то образом после изменения данных запускать процедуры на всех подключенных клиентах?

Надеюсь, понятно изложил ситуацию
Заранее спасибо за ответы.
Ответ:
Сообщение от texnik-san
И да, я тоже против обновлений по таймеру. Незачем по сети зазря объемы гонять.
Но вообще-то Access сам по таймеру обновляет данные, по умолчанию 60 с. На картинке, что расположена сверху, частично видны настройки этих параметров (поле "Период обновления (с).")
Вопрос: Поможет ли обновление до 2016-й версии избегать ошибки 3414?

На 2008 R2 возникает ошибка 3414. Поможет ли обновление до последней версии повысить надежность и избежать в будущем появления 3414-й ошибки? Уже 2-й раз за год, бегаю и чиню остановившиеся SQL серверы.
Ответ: Удалил sql сервер, поставил с нуля 2014-й, проблема исчезла.
Дело было как-то связано с обновлением системных баз, заменил на системные базы с другого компа - сервера заработали, но Management Studio доступа не давал.


Cкопировал системные базы на случай нового возникновения ошибки 3414
Если кому-то надо.

Хотя их как-то можно обновить через инсталлятор, но только у меня что-то не получилось это сделать.
Вопрос: Контроль соединения с сервером в приложении VFP

Народ,
Кто посоветует как лучще организовать котроль соединения с сервером в приложениях VFP?
Имеется ввтду случае при нестабильном канале связи происходит обрыв срединения и при попытке вполнить операции вставки, чтения или обновления данных на сервере происходит ошибка. Хотелось бы иметь технику самовосстановления в случае таких ситуаций, так как это работает к примеру в Entreprise Manager-e.
Всем спасибо
Ответ:
Valerii
Народ,
Кто посоветует как лучще организовать котроль соединения с сервером в приложениях VFP?
Имеется ввтду случае при нестабильном канале связи происходит обрыв срединения и при попытке вполнить операции вставки, чтения или обновления данных на сервере происходит ошибка. Хотелось бы иметь технику самовосстановления в случае таких ситуаций, так как это работает к примеру в Entreprise Manager-e.
Всем спасибо


Поиск по SQLIDLEDISCONNECT()
Вопрос: появление ASYNC_NETWORK_IO на SQL2014 с linked сервер

Переместил БД с 2008R2 сервера на SQL2014(SP1-CU1)(назавем C1 сервер), через пару недель поменял compatibility level. Неделю был полет нормальный.
Затем отметил значительное увеличение OLEDB ожидание. Это связано с линк сервером на другой (скажем C2 сервер) 2008R2 сервер. На С2 также регистрировал ненормальное увеличение ASYNC_NETWORK_IO ожидание. Все это завязано на одну ХП на С1.
ХП на С1 джойнит местные таблицы и таблицу с С2 (используя линк сервер). На С2 просто идет полное сканирование нужного индекса и передача всех строк на С1.
Так работало всегда (сканирование и прочее), и до перемещение БД и первое время после, только без громадного сетевого трафика и ожиданий.
Сетевой трафик увеличивается, приблизительно со 150 до 5000 KBps на обоих серверах.

Обновление статистики таблицы на С2 не помогает, но помогает пересоздание индекса (по которому идет сканирование). Волшебным образом сетевой трафик и ожидания исчезают. Уточняю, что план выполнения остается такой же (сканирование по индексу).

Однако в определенный момент (через несколько часов) проблема возвращается. Пока удалось отловить, что когда PageLifeExpectancy падает по минимуму проблема появляется опять, т.е. что-то там с памятью.

Не знаю, куда и как дальше копать.

Похоже что что-то не так с линк сервером. Перестает забирать результат правильно, но это только домыслы.

Детали нового линк сервера на С1 (c windows authentication):
EXEC master.dbo.sp_addlinkedserver @server = N'linkName', @srvproduct=N'SQL_SERVER', @provider=N'SQLNCLI11', @datasrc=N'serverNameC2'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'linkName',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'rpc', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'rpc out', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'collation name', @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'remote proc transaction promotion', @optvalue=N'true'


старый линк сервер на С1 (до перехода на SQL2014)(authentication через sql login):
EXEC master.dbo.sp_addlinkedserver @server = N'linkName', @srvproduct=N'SQL_SERVER', @provider=N'SQLNCLI10', @datasrc=N'serverNameC2'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'linkName',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'linkName',@useself=N'False',@locallogin=N'loginName',@rmtuser=N'loginNameGeneral',@rmtpassword='########'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'collation compatible', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'data access', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'dist', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'pub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'rpc', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'rpc out', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'sub', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'connect timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'collation name', @optvalue=null
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'lazy schema validation', @optvalue=N'false'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'query timeout', @optvalue=N'0'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'use remote collation', @optvalue=N'true'
EXEC master.dbo.sp_serveroption @server=N'linkName', @optname=N'remote proc transaction promotion', @optvalue=N'true'


Может что забыл выставить на уровене операционки.

Короче, подскажите куда можно и нужно копать.
Ответ: самый простой вариант - это переписать слегка ХП, вытаскивая удаленную таблицу (с С1) во временную таблицу (на С2), а затем уже джойнить временную с локальными объектами.

Это позволяет решить вопрос с сетевым трафиком и ожиданиями.
Хотя план выполнения все равно не идеален, но вся возня уже происходит на локальном сервере. Это уже другая история.

Всем спасибо за советы и идеи.
Вопрос: Создание связанного сервера

Всем доброго времени суток,
У меня такой вопрос.
При создании в SQL Server 2012 связанного сервера вылазит ошибка -ЗАГОЛОВОК: Microsoft SQL Server Management Studio
------------------------------
Связанный сервер был создан, однако не прошел проверку соединения. Сохранить связанный сервер?
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ:

При выполнении инструкции или пакета Transact-SQL возникло исключение. (Microsoft.SqlServer.ConnectionInfo)

SQL Server Native Client 11.0 не поддерживает соединения с SQL Server 2000 или более ранними версиями.
Поставщик OLE DB "SQLNCLI11" для связанного сервера "192.168.35.230" вернул сообщение "Клиенту не удается установить связь". (Microsoft SQL Server, ошибка: 22)[/SIZE]

И в интернете я ничего не нашел полезного. Может кто знает что нужно сделать. До этого стоял 2008R2 сервер, параллельно ставил 2012, ну обновление сделал. НА том сервере стоит 2012 SQL. Заранее спасибо.
Ответ: получилось! спасибо. странно но на этом сервере есть база Notherwind. немного испугало такое)

Добавлено через 19 минут
но почему то таблицы пустые в базе. кажется что-то не так вышло(

Добавлено через 3 часа 51 минуту
в итоге таблиц нет, но сервер есть. это не есть гуд
Вопрос: Медленная работа клиента на Win7 с сервером MS SQL 2005 на WinXP

Добрый день.
Возникла недавно проблема, после последних обновлений Windiws 7 (ориентировочно после 1-го сервис пака) клиент при работе с сервером на XP стал работать в 5 раз медленнее. Программное обеспечение работает через Microsoft SQL Server 2005 Native Client.
Ответ: Откатите обновления, установленные после SP1, проверяйте...
Вопрос: После обновления оборудования хостером не запустился сервер MYSQL

Здравствуйте.
После того как хостер провёл какие то там свои работы мой MySQL сервер не запустился. Понял это я так. Хостер писал что сайт будет недоступен максимум 5-10 минут, смотри, а сайт лежит уже полтора часа.

Написал хостеру, тот ответил что сайты висят так как не запустился Mysql

Код ошибки приложил:

+

root@p483472:~# service mysqld start
Failed to start mysqld.service: Unit mysqld.service not found.
root@p483472:~# service mysql start
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
root@p483472:~# journalctl -xe
Oct 13 02:11:13 p483472.kvmvps kernel: audit: type=1400 audit(1539385873.299:780): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/lib/tmp_mysql/ibOeJ7If" pid=23104 comm="mysqld" requested_mask="c" denied_mask="
Oct 13 02:11:13 p483472.kvmvps mysqld[23104]: 2018-10-12T23:11:13.304390Z 0 [ERROR] Failed to initialize builtin plugins.
Oct 13 02:11:13 p483472.kvmvps mysqld[23104]: 2018-10-12T23:11:13.304599Z 0 [ERROR] Aborting
Oct 13 02:11:13 p483472.kvmvps mysqld[23104]: 2018-10-12T23:11:13.304793Z 0 [Note] Binlog end
Oct 13 02:11:13 p483472.kvmvps mysqld[23104]: 2018-10-12T23:11:13.305039Z 0 [Note] Shutting down plugin 'MyISAM'
Oct 13 02:11:13 p483472.kvmvps mysqld[23104]: 2018-10-12T23:11:13.305252Z 0 [Note] Shutting down plugin 'CSV'
Oct 13 02:11:13 p483472.kvmvps mysqld[23104]: 2018-10-12T23:11:13.305765Z 0 [Note] /usr/sbin/mysqld: Shutdown complete
Oct 13 02:11:13 p483472.kvmvps systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE
Oct 13 02:11:43 p483472.kvmvps systemd[1]: Failed to start MySQL Community Server.
-- Subject: Unit mysql.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysql.service has failed.
-- 
-- The result is failed.
Oct 13 02:11:43 p483472.kvmvps systemd[1]: mysql.service: Unit entered failed state.
Oct 13 02:11:43 p483472.kvmvps systemd[1]: mysql.service: Failed with result 'exit-code'.
Oct 13 02:11:43 p483472.kvmvps systemd[1]: mysql.service: Service hold-off time over, scheduling restart.
Oct 13 02:11:43 p483472.kvmvps systemd[1]: Stopped MySQL Community Server.
-- Subject: Unit mysql.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysql.service has finished shutting down.
Oct 13 02:11:43 p483472.kvmvps systemd[1]: Starting MySQL Community Server...
-- Subject: Unit mysql.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit mysql.service has begun starting up.
Oct 13 02:11:43 p483472.kvmvps audit[23196]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/23196/status" pid=23196 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112
Oct 13 02:11:43 p483472.kvmvps audit[23196]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=23196 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=0
Oct 13 02:11:43 p483472.kvmvps audit[23196]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/23196/status" pid=23196 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112
Oct 13 02:11:43 p483472.kvmvps kernel: audit: type=1400 audit(1539385903.603:781): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/23196/status" pid=23196 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=1
Oct 13 02:11:43 p483472.kvmvps kernel: audit: type=1400 audit(1539385903.603:782): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=23196 comm="mysqld" requested_mask="r" denied_mask="r" 
Oct 13 02:11:43 p483472.kvmvps kernel: audit: type=1400 audit(1539385903.603:783): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/23196/status" pid=23196 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=1
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.813694Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details).
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.816961Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.23-0ubuntu0.16.04.1) starting as process 23196 ...
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823014Z 0 [Note] InnoDB: PUNCH HOLE support available
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823045Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823050Z 0 [Note] InnoDB: Uses event mutexes
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823057Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823062Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.8
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823065Z 0 [Note] InnoDB: Using Linux native AIO
Oct 13 02:11:43 p483472.kvmvps kernel: audit: type=1400 audit(1539385903.819:784): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/lib/tmp_mysql/ibomhyh8" pid=23196 comm="mysqld" requested_mask="c" denied_mask="
Oct 13 02:11:43 p483472.kvmvps audit[23196]: AVC apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/lib/tmp_mysql/ibomhyh8" pid=23196 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=112 ouid=112
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823522Z 0 [Note] InnoDB: Number of pools: 1
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823741Z 0 [Note] InnoDB: Using CPU crc32 instructions
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: mysqld: Can't create/write to file '/var/lib/tmp_mysql/ibomhyh8' (Errcode: 13 - Permission denied)
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823836Z 0 [ERROR] InnoDB: Unable to create temporary file; errno: 13
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823847Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Generic error
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823852Z 0 [ERROR] Plugin 'InnoDB' init function returned error.
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823856Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823860Z 0 [ERROR] Failed to initialize builtin plugins.
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823862Z 0 [ERROR] Aborting
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823880Z 0 [Note] Binlog end
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823954Z 0 [Note] Shutting down plugin 'MyISAM'
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.823983Z 0 [Note] Shutting down plugin 'CSV'
Oct 13 02:11:43 p483472.kvmvps mysqld[23196]: 2018-10-12T23:11:43.824403Z 0 [Note] /usr/sbin/mysqld: Shutdown complete
Oct 13 02:11:43 p483472.kvmvps systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE



Поддержка решила проблему закомментировав строку

#tmpdir=/var/lib/tmp_mysql


в файле /etc/mysql/my.cnf.

После этого сервер mysql запустился.

Теперь уже сам пробую раскомментировать строку - ожидаемо, сервер не загружается.

Вопрос:
Получается, что когда эта настройка закомментирована, временные таблицы mysql не создаёт? Что мне надо сделать, чтобы решить источник проблемы? Как раскоментить эту настройку и при этому чтобы сервер запустился?

К сообщению приложен файл (mysql.txt - 6Kb)
Ответ:
matsa24
Получается, что когда эта настройка закомментирована, временные таблицы mysql не создаёт?
Вот если не полениться и почитать , то станет очевидно, что, во-первых, оно никак не соотносится с временными ТАБЛИЦАМИ, во-вторых, на сам факт создания временных объектов оно никак не виляет. оно влияет лишь на то, где именно будут создаваться временные файлы. Что, кстати, несложно посмотреть простейшим запросом
SELECT @@tmpdir;

matsa24
Теперь уже сам пробую раскомментировать строку - ожидаемо, сервер не загружается.
Судя по эффекту - либо этот каталог тупо не существует, либо столь же тупо учётка. от имени которой стартует сервис, не имеет там необходимых прав. Так что либо надо пофиксить проблему с существованием каталога и прав в нём (как вариант - создать другой каталог для этих целей), либо смириться с тем местом, куда временное барахло кидается сейчас.
Вопрос: Триггер на обновления счетчика (много операций)

Есть таблицы:

accounts
id
notifications (число не просмотренных уведомлений)

notifications
id
account_id
status (0-просмотрено, 1-не просмотрено)

1. при добавлении записи в notifications если status=1, обновляется счетчик accounts.notifications = + 1
2. при обновлении status в notifications с 1 на 0 обновляется счетчик accounts.notifications = - 1
3. при удалении notifications если status=1 в accounts.notifications = - 1

Это я сделал, для программы все работает, и вот теперь думаю чтобы не нарушалась целостность (accounts.notifications показывал правильное значение) если в БД записи добавлять вручную. Нужно сделать:

4. при добавлении записи в notifications если status=0, не обновляется счетчик accounts.notifications (у меня так и есть)
5. при обновлении status в notifications с 0 на 1 обновляется счетчик accounts.notifications = + 1

Как сделать 5 пункт 1 триггером? Все остальное сделал так:

CREATE OR REPLACE TRIGGER NOTIFICATIONS_COUNT_TRG
  AFTER INSERT OR UPDATE OR DELETE ON notifications
  FOR EACH ROW WHEN (NEW.status = 1 OR OLD.status = 1)
BEGIN
    IF INSERTING then

    UPDATE accounts
    SET    notifications = notifications + 1
    WHERE  accounts.id = :new.account_id;

    ELSIF UPDATING then

    UPDATE accounts
    SET    notifications = notifications - 1
    WHERE  accounts.id = :old.account_id;

  ELSE

    UPDATE accounts
    SET    notifications = notifications - 1
    WHERE  accounts.id = :old.account_id;

  END IF;

END NOTIFICATIONS_COUNT_TRG;
Ответ:
z3r9
eev,
автор
account - таблица, не смешивайте в кучу разные понятия, таблица доступна всем, кому определили доступ.

Использую spring security и через него можно получить пользователя.
автор
Есть таблицы:
accounts

z3r9
автор
ничего не экономишь, вычисляемое поле в запросе, (хибернейты ?), то вьюху, как слой представления данных.
а уж аджаксы и т.д. в фоне все это, и ни у кого голова не болит )

В этом примере согласен, можно вычисляемое поле сделать. Но когда нужно 100 000 записей отсортировать по вычисляемому полю то будет беда.

в основе утверждения лежит очередной миф?) т.е. будем показывать список пользователей с подсчетом непрочитаных сообщений, и по ним же (кол-ву) сортировать? как часто будет использоваться такой запрос? каждую минуту, час, для годовой отчетности 31-го декабря?
+ к этому что, сортировку может выполнить ап.сервер.)

успехов)
+ имхо, офтоп)
вобще примечательно, использовать сурбд как кучу плоских файлов, типа "наш фреймверк обепечит транзакционность, согласованность, а бд это так - плюшка с боку" не зная механики бд, ну-ну..)
Вопрос: Безопасная установка обновлений

Добрый день.

Есть 10-ки клиентов, у них стоит 2-е локальные базы с репликацией, активная всегда одна. Как можно с минимальными рисками накатывать изменения? Чтоб не получилось что скрипт изменений помер на середине и работа клиента остановилась.

Доступ к базам клиентов не имеем. То же еще нужно решить как лучше доставлять к ним обновления. Скриптами, но тогда придется на каждом клиенте проводить тренинг что и где устанавливать.

Поделитесь опытом.
Ответ:
mezzanine
Можно поставить ряд обновлений на базу, но при этом они не затрагивают текущую работу, после успешной установки происходит подмена текущих объектов на вновь установленные.

И как гарантируется то, что это не "помрет в момент подмены " ?


mezzanine
Может SQL Server тоже имеет подобные технологии.

Вы путаете целосность базы и целостность логики.
Для целостности базы у SQL Server есть журнал, по которому он может отследить все транзакции и отменить/повторить их.
Но сервер не будет решать, сколько должно быть транзакций и сколько команд в них должно попасть.