У меня есть хранимая процедура, которая обновляет несколько таблиц в моей базе данных отчетов из моей действующей производственной базы данных.
Я запускаю:
EXEC Reporting.dbo.RefreshTemps
Этот сохраненный pro c очень прост, все, что он делает, - это усекает несколько таблиц, а затем выполняет INSERT INTO для получения обновленного снимка данных. Для завершения требуется около 10 минут, поскольку это довольно короткие таблицы.
Однако многие люди, процессы или другие процедуры могут захотеть использовать эту процедуру в течение дня. Вполне вероятно, что пользователь A может запустить pro c, а затем пользователь B запустит тот же pro c до завершения запуска пользователя A.
Это будет означать, что когда пользователь A pro c завершится, пользователь B pro c будет в процессе усечения и обновления тех же таблиц. Что было бы плохо.
В идеале, SQL не будет запускать Pro пользователя B c, дождитесь завершения запуска пользователя A, и пользователь A и пользователь B будут одновременно доступны для обновленных таблиц время.
Есть ли способ обмануть SQL, заставив думать, что pro c пользователя B работает нормально, но на самом деле он ожидает завершения запуска пользователя A?