2009-05-14 26 views
8

Tôi có một ứng dụng được viết bằng C# sử dụng Linq2SQL để giao tiếp với Máy chủ SQL. Có một số truy vấn chạy một chút (rất) chậm, và tôi hình nó có thể cần một số chỉ mục để tăng tốc độ.Máy chủ SQL: Sự kiện không tham chiếu bất kỳ bảng nào (Cảnh báo cảnh báo điều chỉnh)

Nhưng tôi thực sự không biết làm thế nào để làm điều đó hoặc về những gì hoặc ở đâu hoặc những gì tôi nên hoặc không nên làm. Vì vậy, tôi đã nghĩ rằng tôi có thể yêu cầu ở đây, nhưng sau đó tôi phát hiện ra chương trình được gọi là Cơ sở dữ liệu điều chỉnh động cơ cố vấn mà tôi nghĩ rằng tôi có thể thử đầu tiên. Vấn đề là tôi không thể làm cho nó hoạt động được. Có lẽ tôi không biết làm thế nào, nhưng tôi thực sự không thể hiểu được điều này. Theo như tôi có thể thấy, tôi đã làm những gì tôi cho là theo các tập tin trợ giúp.

  1. Mở SQL Server Profiler.
  2. Bắt đầu một Dấu vết mới bằng cách sử dụng mẫu Điều chỉnh.
  3. Khởi động ứng dụng của tôi và thực hiện một số việc tạo truy vấn SQL.
  4. Đóng ứng dụng của tôi.
  5. Dừng theo dõi.
  6. Lưu dấu vết dưới dạng Tệp theo dõi.
  7. mở Database Engine Tuning Advisor
  8. Chọn file như Workload và chọn tập tin vết tôi đã lưu trước đó.
  9. Chọn cơ sở dữ liệu mà ứng dụng của tôi sử dụng theo Chọn cơ sở dữ liệu và bảng để điều chỉnh.
  10. Nhấp vào Phân tích bắt đầu.

Điều này đến nay tôi nghĩ mọi thứ sẽ ổn. Nhưng khi nó kết thúc sau một thời gian thời gian ngắn, tôi có được điều này:

Progress http://i39.tinypic.com/1235avd.jpg

Và một hoàn toàn empy Khuyến nghị trang. Sự kiện không tham chiếu bất kỳ bảng nào? Điều đó có nghĩa là gì (ngoài việc hiển nhiên tất nhiên: p)? Tôi đã hiểu nhầm điều gì đó về quá trình ở đây chưa? Chuyện gì vậy?

+0

Các lệnh trong cột 'sự kiện' có khớp với những gì bạn mong đợi không? Bạn có nhận ra những thứ trong đó khi đến từ ứng dụng của bạn không? – codeulike

+0

không phải tất cả trong số họ, nhưng nhiều người trong số họ. – Svish

Trả lời

7

Tôi nghĩ lý do bạn không nhận được đề xuất là vì bạn không có quyền 'SHOWPLAN' trên cơ sở dữ liệu của mình. Cấp cho người dùng bạn đang chạy trình phân tích truy cập và thử lại.

Ngoài ra, tôi cũng thấy một số lỗi "tên đối tượng không hợp lệ" - đảm bảo người dùng bạn đang chạy trình phân tích có quyền thích hợp cho tất cả các bảng có liên quan.

+0

Vâng, tôi cũng phát hiện ra điều đó. Mà tôi đã sửa ngay bây giờ. Nhưng tôi vẫn nhận được 'Sự kiện không tham chiếu bất kỳ bảng nào' theo sau là 'Thay thế sự kiện blah blah'. – Svish

+0

Hm ... Đã thử nó trên một số hoạt động nặng hơn khác trong ứng dụng của tôi và có vẻ như nó đang làm việc bây giờ, mặc dù tôi vẫn nhận được một loạt các tin nhắn ... * bối rối *. Oh well ... Tôi sẽ chấp nhận câu trả lời của bạn kể từ khi bạn bắt được những thứ SHOWPLAN đó. Hãy nghĩ rằng cộng với hoạt động nặng hơn có thể đã tạo ra sự khác biệt =) – Svish

+0

Làm việc cho tôi. Cảm ơn! – jeromeyers

7

Có một điều khác bạn có thể kiểm tra xem bạn có gặp lỗi này không. Nếu bạn giống như tôi, bạn có thể đã quên chọn cơ sở dữ liệu thích hợp từ trình đơn thả xuống "Cơ sở dữ liệu cho tải công việc" trên tab Chung

+1

Trường này không cần phải được đặt thành cơ sở dữ liệu chứa bảng mà bạn muốn tạo chỉ mục. Đó là db mà trình tư vấn điều chỉnh sẽ bắt đầu theo. Sau đó nó sẽ chuyển sang db đúng như được chỉ định trong tệp tải công việc của bạn. – Gilles

3

Tôi đã chạy trình phân tích như bản thân mình (dbo) chứa các truy vấn từ người dùng ứng dụng nhóm IIS không có quyền truy cập SHOWPATH.

Vì vậy, tôi đã cấp quyền truy cập SHOWPATH cho người dùng ứng dụng nhóm IIS đó và sau đó nó hoạt động tốt.

GRANT SHOWPLAN TO [COMPANYDOMIAN\IIS_APPUSER] 
Các vấn đề liên quan