2012-04-12 2 views
5

Я конвертирую MS Access 2000 в MS Access 2010. Проблема, с которой я сталкиваюсь, заключается в том, что MS Access 2010 очень медленный (даже зависает) после преобразования.Преобразование MS Access 2000 в 2010

Предыдущая Config: MS Access 2000 на XP с Link Tables для SQL Server 2000, сидя на ОС Windows 2000

Новая конфигурация: MS Access 2010 на Windows 7 с Link Tables на Sql сервере 2000 сидячем в Windows 2000

Access под Новый Config крайне медленно, а иногда зависает и вылетает Та же ситуация с Visual Studio Desktop Application, он работает крайне медленно на Win7, а я t отлично работает на XP.

вещей я пытался:

  1. Преобразования MS Access 2000 путем создания нового MS Access 2010 и импортировать все объекты от 2000 Версия
  2. Обновления связанных таблиц и т.д.
  3. Изменения в MS Office Max Размер буфера в реестре до 55000 (как указано в некоторых сайтах поддержки MS)

До сих пор мало что не улучшалось.

+1

Есть ли причина, по которой вы не обновили SQL Server 2000 до чего-то вроде SQL Server 2008 Express? – HK1

+2

Вы видели http://social.technet.microsoft.com/Forums/en/office2007deploymentcompatibility/thread/88542372-0fcb-4521-87ec-e2ab72e688dd? – Fionnuala

+0

Всегда лучше избегать связанных таблиц при использовании выделенного сервера db, использовать преимущества их вычислительной мощности и использовать стиль соединения ADO. Это будет иметь сервер, выполняющий всю работу, за исключением того, что невозможно сделать за пределами доступа. –

ответ

2

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

Сначала вы можете различить, если связь происходит медленно из-за компьютер, доступ или DB:

испытание: прямое соединение

Вы можете попробовать прямую связь с сервером SQL с использованием прямой связи вместо связанных таблиц. Для этого вы можете создать новый проект доступа, подключенный к вашему SQL Server. Проект Access - это тип базы данных Access, которая напрямую подключается к SQL Server, без связанной таблицы. Он использует собственный клиент. Вы можете напрямую просматривать таблицы базы данных SQL Server в Access, и вы можете редактировать их. Расширение проекта доступа не является MDB, а ADP. Проекты доступа скрыты в Access 2010, но хорошо поддерживаются.

Чтобы создать проект доступа: перейдите в меню Файл -> Создать, затем щелкните значок файла, а затем выберите «Сохранить как тип»: «Microsoft Access Project (* .adp)».

Когда ADP создан, он должен попросить вас ввести параметр для существующей базы данных SQL Server. Введите свои параметры.

Затем перейдите на панель стола и попробуйте просмотреть таблицу и проверить, медленно ли она или быстро.

Если это медленный =>, проблема может возникнуть с вашего ПК или подключения. Вы можете попробовать другое программное обеспечение для тестирования прямого подключения, которое вы можете подключить к SQL Server.

Если это быстро =>, то медлительность происходит от ACCDB или ODBC.

Также проверьте:

  • Ms Access является актуальной с последней версией и Ms Office заплаты
  • системы ODBC и «драйвер ODBC для SQL Server» в актуальном состоянии (принять к последнему версия MDAC)
  • ваших версий Windows 7 и MS Access и ODBC имеет в диапазон одинаковых бит (32-бит или 64-бита)
  • Вашего DSN строки для ODBC связи с SQL Server нормализуется
  • Если ваш DSN является системным DSN, затем воссоздайте новый как пользовательский DSN и попробуйте.
1

Во-первых, убедитесь, что у вас есть последний MDAC. Затем я бы рекомендовал создавать хранимые процедуры или табличные функции в SQL, а не запускать запросы из самого Access. Access проверит предварительный анализ запроса, чтобы убедиться, что он будет работать против SQL Server, и это может замедлить работу. Наконец, если Access выполняет обновления и удаляет, он будет использовать столбец TIMESTAM SQL Server, чтобы убедиться, что никто другой не изменил эту запись, пока вы открыли форму. Если SQL не имеет такого столбца, Access должен выполнить все отслеживание. Мы просто прошли через это сами - я попрошу разработчика дать какие-либо советы и опубликовать в комментариях, если у нее есть что-нибудь.

2

Вы пытались сохранить соединение открытым? Это может относиться только к связанным таблицам в другом accdb, но не обязательно.

Я имел этот вопрос некоторое время назад, так что я теперь держать соединение открытым до тех пор, как Access работает, вот урезанная версия моего суб для этого:

Public Sub updateTables(bClose As Boolean) 

Dim dbsCurrent As Database 
Dim tdfSingle As TableDef 
Dim tdfCollection As TableDefs 
Dim sBasePath As String, sPath As String 
Set dbsCurrent = CurrentDb 
Set tdfCollection = dbsCurrent.TableDefs 
Set dbsHold = dbsCurrent 

Static dbsOpen As DAO.Database 

If bClose Then 
    dbsOpen.Close 
Else 
    sBasePath = Left(CurrentDb.Name, InStrRev(CurrentDb.Name, "\")) & "SB-Support\" 
    sPath = GetUNC(sBasePath & "data.dat") 

    Set dbsOpen = OpenDatabase(sPath, False, False, "MS Access;") 
    For Each tdfSingle In tdfCollection 
     If tdfSingle.SourceTableName <> "" Then 
      If tdfSingle.Fields.Count = 0 Then 
       tdfSingle.Connect = ";DATABASE=" & sPath 
       tdfSingle.RefreshLink 
      End If 
     End If 
    Next 
End If 

Exit Sub 

End Sub

Я думаю, что первоначально получен отсюда: http://www.fmsinc.com/microsoftaccess/performance/linkeddatabase.html

Я не иметь требование SQL сервера, но быстро Google дал мне это для OpenDatabase для подключения SQL:

Dim cs As String 
Dim cn As DAO.Database 
Dim ws As DAO.Workspace 
Set ws = DBEngine.Workspaces(0) 
cs = "ODBC;DRIVER=SQL Server;SERVER=Main\SQLEXPRESS;DATABASE=Workwise;APP=Visual Basic"  'UID=Peter;PWD=" 
Set cn = ws.OpenDatabase("Workwise", dbDriverNoPrompt, True, cs) 

http://www.vbforums.com/archive/index.php/t-572723.html

2

Когда замерзает я хотел бы проверить, какие запросы на самом деле работает в SQL-сервере происходит в SQL-сервере. например. запустив что-то вроде этого:

select (SELECT text FROM ::fn_get_sql(s1.sql_handle)), * 
from sys.sysprocesses s1 

Я отлажена медленное приложение доступа один раз, когда запросы доступа были не очень хорошо переведены на SQL-сервере. Что-то простое в запросе на доступ вызывало множество неэффективных запросов sql-сервера для запуска. Мы повторно написали несколько из этих запросов в виде представлений sql-server и решили это для нас.

Смежные вопросы