Xem chi tiết về các phiên cũ


7

Có cách nào để xem chi tiết về các phiên từ quá khứ không (tôi hoàn toàn mong đợi câu trả lời là "không"). Tôi đang cố gắng tìm hiểu máy chủ nào đang chạy ứng dụng nào, ứng dụng đó đang truy cập vào một cơ sở dữ liệu nhất định. Tôi biết ứng dụng chạy vào một số thời điểm vào tối thứ Sáu vì vậy tôi đã hy vọng rằng máy chủ SQL duy trì lịch sử phiên để tôi có thể tìm kiếm thông sp_whotin chi tiết giống như giờ cho câu hỏi.

Như tôi nói, tôi không mong đợi điều này là có thể nhưng ngay bây giờ tôi hoàn toàn nắm chặt ống hút.

Cảm ơn trước.

EDIT : Cuối cùng tôi đã tìm thấy máy chủ bị nghi ngờ; công việc đã thực thi một câu lệnh SQL để tạo một tệp mà sau đó FTPd đến một trang web khác - trang web đó có ghi nhật ký FTP có thể cho tôi tên và địa chỉ IP của máy chủ nguồn. Cảm ơn câu trả lời - Tôi chỉ ước mình có thể chấp nhận cả hai vì cả hai đều đưa ra những quan điểm rất hay và đưa ra những gợi ý rất tốt.

Câu trả lời:


8

Không, SQL Server không lưu giữ lịch sử hoạt động của phiên, hãy tưởng tượng tốc độ tăng trưởng nhanh như thế nào! Hy vọng duy nhất của bạn để lấy thông tin này từ quá khứ , như câu hỏi của bạn, tôi nghĩ, là:

  1. Ứng dụng thực hiện một cái gì đó được đăng nhập theo dõi mặc định (và những sự kiện đó chưa được xử lý);
  2. Các lỗi mà ứng dụng có thể đã tạo ra cho biết rõ máy chủ mà nó kết nối với đã kết thúc trong nhật ký sự kiện của máy ứng dụng; hoặc là,
  3. Các lỗi mà ứng dụng có thể đã tạo ra (như bế tắc, cảnh báo I / O hoặc đăng nhập thất bại) đã được ghi lại trong nhật ký lỗi SQL Server hoặc phiên system_health .

Bây giờ, như đã đề cập trong các bình luận, tất nhiên bạn có thể thiết lập một cái gì đó để nắm bắt hoạt động này trong tương lai, vì vậy bạn không phải ngồi chờ đợi để liên tục đập F5 khi ứng dụng đang chạy. Bạn có thể sử dụng nhiều thứ, hoặc thậm chí là kết hợp, tùy thuộc vào việc bạn chỉ quan tâm đến các kết nối, chỉ về hoạt động ghi, chỉ về quyền truy cập vào các bảng hoặc cơ sở dữ liệu cụ thể, v.v.:


Xin chào Aaron - Tôi sợ không có lỗi và không có sự kiện theo dõi; selectThật không may, đó là một kịch bản rất đơn giản . Tôi biết sâu bên dưới nó sẽ không thể, vì chính xác lý do bạn nêu, nhưng nó đáng để thử, tôi cho rằng. Tôi luôn có thể ngồi đây đến 20:30 tối thứ Sáu và chỉ chạy sp_whonhưng tôi nghi ngờ công việc chỉ mất vài giây. Tôi sẽ phải xem liệu những kẻ hạ tầng có thể đưa ra bất cứ điều gì phù hợp thông minh không. Cảm ơn vi đa trả lơi.
Spratty

Bạn có thể chạy Wireshark trong thời gian ứng dụng được cho là đang chạy. Sau đó tìm kiếm dấu vết Wireshark để xem máy chủ ứng dụng nào đang kết nối với máy chủ cơ sở dữ liệu của bạn tại thời điểm đó.
Doug Deden

@DougDeden Bạn cũng có thể chạy theo dõi phía máy chủ của riêng mình hoặc Sự kiện mở rộng hoặc kiểm toán. OP đang cố gắng xác định thông tin về các phiên chạy trong quá khứ, không phải các phiên có thể chạy trong tương lai.
Aaron Bertrand

1
@AaronBertrand Đồng ý. Tôi đã nhấn mạnh vào ý tưởng của OP về "Tôi luôn có thể ngồi đây đến 20:30 tối thứ Sáu ..." như một cách để bắt kịp hành động và đưa ra cho họ một lựa chọn khác. Nhưng vâng, giữ nó trong SQL có lẽ tốt hơn, giả sử OP có toàn quyền truy cập vào SQL, nhưng có lẽ chỉ có quyền truy cập hạn chế ở cấp độ HĐH.
Doug Deden

1
@DougDeden Ah, tôi hiểu rồi, tôi nghĩ bạn có nghĩa là một giải pháp cho câu hỏi ban đầu. Chúc mừng.
Aaron Bertrand

5

Bạn không thể trừ khi bạn có công cụ giám sát của bên thứ ba hoặc một số loại trình thu thập hoạt động khác được định cấu hình. Như đã đề cập trong câu trả lời này , bạn có thể tìm thấy một cái gì đó hữu ích trong plan cache:

SELECT t.[text], s.last_execution_time
FROM sys.dm_exec_cached_plans AS p
INNER JOIN sys.dm_exec_query_stats AS s
   ON p.plan_handle = s.plan_handle
CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) AS t
WHERE t.[text] LIKE N'%something unique about your query%'
ORDER BY s.last_execution_time DESC;

Nhưng có vẻ như bạn đang tìm kiếm thông tin khác.

Trong tương lai, bạn chắc chắn nên xem xét một số công cụ như SSMS Tools Pack(nó không miễn phí) hoặc xem bài đăng này của Brent Ozar - đó là một cách hoàn toàn miễn phí để đăng nhập hoạt động của máy chủ của bạn với thủ tục miễn phí của Adam Machanic sp_whoisactiveđể bạn có thể trả lời câu hỏi bạn vừa hỏi


Xin chào George - cảm ơn bạn vì điều đó; nó chắc chắn cho tôi một số lựa chọn để xem xét. Tôi không biết liệu tôi có thể khiến ông chủ hồi xuân cho phần mềm sử dụng một lần hay không nhưng nó có thể đáng để thử. sp_whoisactivetrông rất thú vị - Tôi chắc chắn tôi có thể tìm thấy một cách sử dụng cho điều đó :-)
Spratty

@Spratty tất cả các công cụ giám sát thích hợp cung cấp các thử nghiệm dài. Một thử nghiệm có thể giúp bạn xác định chính xác vấn đề này nhưng nó cũng có thể cho bạn cơ hội khám phá tất cả những điều khác có thể giúp bạn, giúp bạn tiết kiệm thời gian trong thời gian dài (và do đó biện minh cho việc mua hàng). Mọi người mua các công cụ giám sát vì chúng cung cấp lợi ích và giúp tự động hóa các nhiệm vụ tẻ nhạt và tốn thời gian, chứ không phải vì họ có rất nhiều tiền để đốt.
Aaron Bertrand
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.