2012-04-12 45 views
5

Tôi đang chuyển đổi MS Access 2000 thành MS Access 2010. Vấn đề tôi đang gặp phải là MS Access 2010 rất chậm (thậm chí bị đóng băng) sau khi chuyển đổi.Chuyển đổi MS Access 2000 sang 2010

Trước Config: MS Access 2000 trên XP với Link Bàn to SQL server 2000 ngồi trên Windows 2000

New Config: MS Access 2010 trên Windows 7 với Link Bàn to SQL server 2000 ngồi trên Windows 2000

Truy cập trong Cấu hình mới chậm hoặc đôi khi treo và treo Tình huống tương tự với ứng dụng Visual Studio Desktop, Chạy chậm trên Win7, trong khi i t chạy tốt trên XP.

Những điều tôi đã cố gắng:

  1. Chuyển đổi MS Access 2000 bằng cách tạo ra một MS New Access 2010 và nhập khẩu tất cả các đối tượng từ năm 2000 Version
  2. Refreshing Bàn Linked vv
  3. Thay đổi MS Office Max Kích thước bộ đệm trong Sổ đăng ký 55000 (như được đề xuất trong một số trang web hỗ trợ MS) ​​

Ít để cải thiện cho đến nay.

+1

Có lý do nào bạn không nâng cấp SQL Server 2000 lên một cái gì đó như SQL Server 2008 Express không? – HK1

+2

Bạn có thấy http://social.technet.microsoft.com/Forums/en/office2007deploymentcompatibility/thread/88542372-0fcb-4521-87ec-e2ab72e688dd không? – Fionnuala

+0

Tốt nhất là tránh các bảng được liên kết khi máy chủ chuyên dụng của db đang sử dụng, tận dụng sức mạnh xử lý của chúng và chấp nhận kiểu kết nối ADO trong suốt. Điều này sẽ có máy chủ thực hiện tất cả các công việc ngoại trừ bất cứ điều gì mà không thể được thực hiện bên ngoài truy cập. –

Trả lời

2

Rất khó trả lời vì nguồn gốc của sự cố có thể là nhiều. Vì hai máy khách không có cùng cấu hình hệ điều hành, chúng tôi không thể loại trừ vấn đề xuất phát từ sự khác biệt về cấu hình giữa hai hệ điều hành.

Trước tiên, bạn có thể phân biệt nếu liên quan chậm vì máy tính, truy cập hoặc DB của bạn:

Kiểm tra: kết nối trực tiếp

Bạn có thể thử liên quan trực tiếp đến SQL server sử dụng một liên quan trực tiếp thay vì các bảng được nối kết. Đối với điều này, bạn có thể tạo một dự án truy cập mới được kết nối với máy chủ SQL của bạn. Một dự án truy cập là một loại cơ sở dữ liệu Access kết nối trực tiếp với máy chủ SQL mà không có bảng được nối kết. Nó sử dụng một khách hàng bản địa. Bạn có thể xem các bảng cơ sở dữ liệu SQL Server trực tiếp trong Access và bạn có thể chỉnh sửa chúng. Phần mở rộng của một dự án truy cập không phải là MDB mà là ADP. Các dự án truy cập bị ẩn trong Access 2010 nhưng được hỗ trợ tốt.

Để tạo dự án truy cập: chuyển đến menu Tệp -> Mới, sau đó nhấp vào biểu tượng tệp, sau đó chọn "Lưu dưới dạng": "Dự án truy cập Microsoft (* .adp)".

Khi ADP được tạo, nó sẽ yêu cầu bạn nhập tham số cho cơ sở dữ liệu SQL Server hiện có. Nhập thông số của bạn.

Sau đó chuyển đến bảng điều khiển bảng và thử duyệt qua một số bảng và kiểm tra xem bảng có chậm hay nhanh không.

Nếu nó chậm => thì sự cố có thể xuất phát từ PC hoặc kết nối của bạn. Bạn có thể thử với một phần mềm khác để kiểm tra kết nối trực tiếp của bạn có phần mềm có thể kết nối với SQL Server.

Nếu nó nhanh => thì tốc độ chậm đi đến từ liên kết ACCDB hoặc ODBC.

Ngoài ra kiểm tra:

  • Ms Access được cập nhật với phiên bản cuối cùng và Ms Office vá
  • hệ thống ODBC của bạn và "điều khiển ODBC SQL Server" được cập nhật (làm để kéo dài phiên bản của MDAC)
  • của bạn Windows 7 và Ms Access và ODBC phiên bản đã các bit cùng dao động (32-bit hoặc 64-bit)
  • chuỗi DSN của bạn cho các liên quan đến SQL server ODBC là bình thường
  • Nếu DSN của bạn là DSN hệ thống, hãy tạo lại DSN mới làm DSN của người dùng và thử.
1

Trước tiên, hãy đảm bảo bạn có MDAC mới nhất. Tiếp theo, tôi khuyên bạn nên tạo các thủ tục được lưu trữ hoặc các hàm có giá trị trong bảng trong SQL thay vì chạy các truy vấn từ chính Access. Access sẽ phân tích cú pháp truy vấn trước để đảm bảo truy vấn sẽ chạy với SQL Server và có thể làm chậm mọi thứ. Cuối cùng, nếu Access đang thực hiện cập nhật và xóa, nó sẽ sử dụng cột SQL Server TIMESTAMP để đảm bảo không ai khác đã thay đổi bản ghi đó trong khi bạn mở biểu mẫu. Nếu SQL không có cột như vậy, Access phải thực hiện tất cả theo dõi. Chúng tôi đã tự mình trải qua điều này - tôi sẽ hỏi nhà phát triển về bất kỳ mẹo nào và đăng các nhận xét nếu cô ấy có bất kỳ điều gì.

2

Bạn đã cố gắng giữ kết nối mở chưa? Điều này chỉ có thể áp dụng cho các bảng được liên kết trong một accdb khác, không chắc chắn.

Tôi có vấn đề này một khi trở lại vì vậy tôi bây giờ giữ kết nối mở miễn là truy cập đang chạy, đây là một phiên bản rút gọn của phụ tôi cho điều này:

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

tôi nghĩ rằng tôi ban đầu được lấy từ đây: http://www.fmsinc.com/microsoftaccess/performance/linkeddatabase.html

tôi không có một yêu cầu SQL server nhưng một google nhanh chóng đã cho tôi điều này cho OpenDatabase cho một kết nối 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

Khi nó được đóng băng tôi sẽ kiểm tra những truy vấn nào thực sự chạy trong sql-server đang xảy ra trong sql-server. ví dụ. bằng cách chạy một cái gì đó như thế này:

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

Tôi đã gỡ lỗi ứng dụng truy cập chậm khi truy vấn không được dịch tốt sang máy chủ sql. Một cái gì đó đơn giản trong truy vấn truy cập gây ra nhiều truy vấn sql-server không hiệu quả để chạy. Chúng tôi đã viết lại một vài trong số các truy vấn này dưới dạng xem sql-server và giải quyết nó cho chúng tôi.

Các vấn đề liên quan