Проблема SQL Server 2008 R2(x64) и access2003

stek
Дата: 04.02.2013 11:56:23
Привет!
На новый сервак установили SQL Server 2008 R2(x64). Перенесли базы с SQL Server 2005 (x86). С базой работаем через Access 2003.
Но при открытии базы под любой учеткой, кроме sa,зависает Access 2003 примерно на 40 сек. Потом все нормально зарабатывает. Это происходит именно при открытии после того, как зашли под той или иной учеткой. Аутентификацию он проходит, но такое ощущение, что зависает на авторизации. При этом sqlserver загружает ЦП сервака до 50%. Раньше такого не было на SQL Server 2005 (x86). Все быстро 1-3 сек. Статистику обновил, переиндексировал, все находится там где должно быть, и запросы на SQL Server 2008 R2(x64) работают быстрее, чем на SQL Server 2005 (x86). Не понятно почему так происходит при открытии?
Критик
Дата: 04.02.2013 12:09:49
stek,

гуглите Profiler
Glory
Дата: 04.02.2013 12:12:42
stek
Аутентификацию он проходит, но такое ощущение, что зависает на авторизации. При этом sqlserver загружает ЦП сервака до 50%.

Аутентификация то какая ?
Ruuu
Дата: 04.02.2013 12:17:56
stek,

Нужно конечно глянуть логи сервера, но тут скорее всего проблемы драйвера ODBC (или что у вас используется). Если это так, то в ветке Access вам быстрее помогут.

Как вариант, при запуске приложения у вас выполняется какой-то запрос и выполняется долго, отловить его можно с помощью Profiler.
stek
Дата: 08.02.2013 18:02:11
Выяснили через Profiler, что долго выполняется системный запрос под разной учеткой:
select object_name(id), user_name(uid), type, ObjectProperty(id, N'IsMSShipped') from sysobjects where type in (N'U', N'S',N'v') and permissions(id) & 4096 <> 0 . То есть причина в этом, а конкретно в части ...permissions(id) & 4096 <> 0
Этот запрос в sql server 2005 выполняется за 0-1 сек. Непонятно как это исправить.
aleks2
Дата: 09.02.2013 07:15:14
1.
PERMISSIONS (Transact-SQL) 
Important This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use fn_my_permissions instead

Вряд ли это спасет.

2.
type char(2) 
нахера type in (N'U', N'S',N'v'). Типо "мы крутые"?
А сервер тупой. Возмет и конвертнет type к nvarchar... сдуру.

3. type in заменить на UNION ALL.
aleks2
Дата: 09.02.2013 07:31:01
Не, все вышесказанное - не суть.

declare @d datetime;
set @d=getdate();
select permissions(id), 
object_name(id), 
user_name(uid), 
type
, ObjectProperty(id, N'IsMSShipped') 
from sysobjects where type in (N'U', N'S',N'v')-- and permissions(id) & 4096 <> 0
select datediff(ms, @d, getdate());


set @d=getdate();
select --permissions(id), 
--object_name(id), 
uid, 
type
--, ObjectProperty(id, N'IsMSShipped') 
from sysobjects where type in (N'U', N'S',N'v')-- and permissions(id) & 4096 <> 0
select datediff(ms, @d, getdate());


SQL 2008
250мс
3мс

100 (сто) раз разницы. Вызов функции - дело затратное.

SQL 2005
20 мс
3 мс

10 (десять) раз разницы.
П-Л
Дата: 09.02.2013 08:41:53
aleks2
...3. type in заменить на UNION ALL.
Заменить ничего нельзя. Это все зашито в аксессе. Единственное что можно попробовать - менять виды аутентификации при подключении проекта (если у ТС адп, а не линкованные таблицы). Для линкованных таблиц способ подключения к серверу настраивается при подключении таблицы - придется переподключать.
stek
Дата: 11.02.2013 10:40:10
Если я все правильно понял, то ничего нельзя изменить(это системный запрос и он срабатывает автоматически. Возможно наверное отключить, но разрешение на таблицы и т.п. под разными учетками надо проверять). Проблема в самом sql server 2008 и 2012(там такая же проблема), а не в аксессе. Остаются только непонятной почему в sql server 2005 все нормально работает, отрабатывает быстро, а последующих версиях долго?