Нельзя использовать имя переменной таблицы в выражении SQL на стороне сервера.Вам нужно будет получить имена таблиц из SQL Server, а затем использовать их для отправки новых запросов (по одному для каждой таблицы) обратно в SQL Server.Вы также можете написать хранимую процедуру на SQL Server для обработки этого с использованием динамического SQL (просто убедитесь, что вы знакомы с атаками внедрения, когда вы используете динамический SQL).
SQL Server хранит некоторую информацию о количестве строк вsysindexes
(не путать с sys.indexes
) в столбце rowcnt
. Эта информация не всегда на 100% точна, хотя .
Наконец, вы можете использовать недокументированную хранимую процедуру sp_MSForEachTable
примерно так:
EXEC sp_msForEachTable
'SELECT PARSENAME(''?'', 1),
COUNT(*) FROM ?'
Имейте в виду, что этоПоследний метод вернет несколько наборов результатов (по одному для каждой таблицы), поэтому вам нужно обработать его таким образом в Access или объединить их во временную таблицу, а затем вернуть их как один набор результатов.Вы можете сделать все это в хранимой процедуре.