Допустим, есть некоторая программа, которая что то делает с базой. Пользователи могут запускать ее на разных машинах. Можно ли сделать так, что бы не смотря на то, что программы работают на разных машинах, что бы несмотря на это могла работать только 1 программа. Была мысль эксклюзивно блокировать таблицы, но может быть ещё решения? Запускаются программы от 1 учетки. Может быть программа, как то может идентифицировать своё соединение например названием программы, а другой экземпляр мог бы проверить не ют ли уже соединений?
Да, название программы можно передать через соединение
string connStr = ConfigurationManager.ConnectionStrings["AWConnection"].ToString();
SqlConnectionStringBuilder sb = new SqlConnectionStringBuilder(connStr);
sb.ApplicationName = "MySuperApp";
SqlConnection conn = new SqlConnection(sb.ToString());
//ну и далее...
А потом уже в SQL Server можно сделать запрос к sys.dm_exec_session
и в столбце program_name
обнаружить название нашей проги, а столбце login_time
время начала сессии.
Пусть программа каждые скажем 5 сек отправляет в базу какие нибудь данные с уникальным ключем, и при присутствии этих данных другие клиенты не смогут работать.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Как называется кнопка для работы с dataGridView те
Взялся за изучение NetCoreЗахотел проверить самописное WebApi на простых запросах используя JavaScript
Есть у меня UserControl под именем PinВнутри него есть несколько элементов Path