Nhận đầu ra chi tiết của công việc SQL Agent


15

Chúng tôi có một công việc SQL Server Agent chạy một kế hoạch bảo trì để giới thiệu lại tất cả các cơ sở dữ liệu trên máy chủ. Gần đây điều này đã thất bại nhưng lịch sử công việc không cung cấp đủ thông tin để chẩn đoán vấn đề.

Trong lịch sử công việc, nó nói Công việc thất bại. Công việc được gọi bởi người dùng foo \ bar. Bước cuối cùng để chạy là bước 1 (Rebuild Index).

Trong cửa sổ chi tiết có nhiều tin nhắn theo mẫu sau:

Executing query "ALTER INDEX [something] ON [a...".: 0% complete  End Progress  Progress: 2015-03-15 22:51:23.67     Source: Rebuild Index Task

Câu lệnh SQL đang chạy bị cắt ngắn và tôi cho rằng đầu ra của câu lệnh cũng bị cắt ngắn, ngăn tôi có thể xác định câu lệnh cụ thể nào đã thất bại và tại sao. Có cách nào để trích xuất toàn bộ văn bản của những tin nhắn này không?


1
Tôi nghĩ rằng @kin làm tốt công việc trả lời câu hỏi ban đầu của bạn, nhưng theo tôi đây là vấn đề gỡ lỗi nhiều hơn. Nếu bạn biết chỉ số đó không thành công, thì tôi sẽ cố gắng xác định tại sao chỉ mục cụ thể đó lại thất bại. Bạn có thể thấy mã sql được sử dụng? Có phải trong một Proc lưu trữ? Bạn có thể làm một số điều để thu hẹp nó. Tạo một công việc chỉ với chỉ số đó. Chạy dấu vết sql trong khi công việc đó đang chạy. Nắm bắt sql được sử dụng sau đó cố gắng tái tạo vấn đề.
Ngài Swears-a-lot

Câu trả lời:


18

Có cách nào để trích xuất toàn bộ văn bản của những tin nhắn này không?

Bạn có thể đạt được nó theo 2 cách - Thực hiện bước công việc và chọn tab Nâng cao:

a. Xuất ra một tệp (<== Phương thức ưa thích của tôi)

nhập mô tả hình ảnh ở đây

b. "Đăng nhập vào bảng" và "Bao gồm đầu ra bước trong lịch sử" (<== Bạn cần cắt xén msdb..sysjobhistorytrong thời gian dài vì các tin nhắn được lưu trữ nvarchar(max)thay vì nvarchar(1024))

nhập mô tả hình ảnh ở đây

Để xem thông tin đăng nhập bổ sung, bạn cần sử dụng quy trình được lưu trữ này sp_help_jobsteplog hoặc bạn có thể truy vấn msdb.dbo.sysjobstepslogsbảng trực tiếp.

Thêm thông tin ở đây


Chúc mừng, tôi sẽ cho đi. chỉ để cho bạn biết, tên chính xác của bảng đó là msdb.dbo.sysjobstepslogs ('log' chứ không phải 'log'). Tôi đã cố chỉnh sửa câu trả lời nhưng không được phép chỉnh sửa một ký tự.
toryan

1
@toryan np. Tôi đã chỉnh sửa câu trả lời của tôi. Nếu bạn cảm thấy rằng tôi đã trả lời câu hỏi của bạn thì hãy bỏ phiếu / đánh dấu làm câu trả lời.
Kin Shah

1
Tôi đã chạy lại công việc và nó chỉ tạo ra một lỗi lần này, nó được ghi lại trong bảng như mô tả. Thật không may, văn bản của truy vấn vẫn bị cắt ngắn - có cách nào để có thêm thông tin không?
toryan

Tôi nghi ngờ điều đó. Bạn có thể thử với phương thức tệp đầu ra 1 như được mô tả trong câu trả lời của tôi không.
Kin Shah

1
@toryan Tôi gặp vấn đề tương tự - việc ghi nhật ký vẫn bị cắt ngắn, ngay cả khi xuất ra một bảng (phương thức (b) ở trên) và đọc sysjobstepslogs. Đây là khuyến nghị của hầu hết các cuộc thảo luận trực tuyến về vấn đề này. Nhưng phương thức (a), xuất ra một tệp, KHÔNG gặp vấn đề này: các tệp văn bản đang hiển thị cho tôi tất cả các bước ghi nhật ký công việc, cuối cùng không bị cắt ngắn! (Trong trường hợp của tôi, các bước công việc của tôi là DTEXECcác lệnh, chạy các gói SSIS.) Chỉ có nhược điểm: chỉ có lần chạy cuối cùng được nhìn thấy, trừ khi gắn vào tệp. Thay vì nối thêm, tôi chọn sống với sự cắt ngắn trên các lần chạy trước.
Doug_Ivison

2

Bạn có thể nhận được toàn văn:

  1. Đi làm
  2. Click chuột phải select properties
  3. Đi bước công việc
  4. Chọn stepvà nhấp vào editnút
  5. Chọn advanced. Ở đây bạn có thể thấy đường dẫn đăng nhập.

Bây giờ đơn giản của nó đi theo con đường.

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.