2011-01-10 32 views
8

Tôi đang cố khắc phục sự cố xảy ra trên Máy chủ SQL mới của chúng tôi. Trong khi xem các quy trình đang chạy (sp_who2) Tôi không thể biết được thông số nào mà một proc được bắt đầu.Làm cách nào để xem các tham số của các trình chạy hiện đang chạy trong SQL Server 2008

Tôi có thể tìm thấy tên của proc sử dụng: DBCC INPUTBUFFER (spid)

tôi thậm chí có thể tìm thấy một số thông tin bổ sung, nhưng tôi không thể nhìn thấy một cách để hiển thị các thông số.

(http://sqlserverpedia.com/blog/sql-server-bloggers/sql-server-%E2%80%93-get-last-running-query-based-on-spid/)

Tôi biết tôi có thể nhìn thấy các thông số nếu tôi làm một dấu vết, nhưng điều đó không giúp đỡ trong trường hợp này.

+0

Bạn có quyền làm "sp_who2" và "dbcc" nhưng không chạy theo dõi? –

Trả lời

6

Bạn cần kiểm tra SP_WhoisActive của Adam Machanic, nó cung cấp cho bạn tất cả thông tin bạn cần và nó cung cấp cho bạn toàn bộ truy vấn trong xml để bạn có thể chỉ cần nhấp vào nó và xem những gì đang chạy.
http://sqlblog.com/files/folders/release/entry29675.aspx

+0

Tôi chỉ cố gắng 'tạo proC#foo @a int như waitfor delay '01: 00'' rồi' exeC#foo 1' Tôi không thể thấy giá trị của các tham số ở bất kỳ đâu trong đầu ra. –

+4

Đây là một công cụ tuyệt vời, tuy nhiên, tôi vẫn không thấy các tham số được sử dụng để gọi proc. Tôi gọi như thế này: 'exec sp_WhoIsActive @get_outer_command = 1'. Nó cho tôi hai cột - sql_text và sql_command. sql_command cho tôi một cái gì đó giống như "MyDB.dbo.MyProc; 1" trong đó 1 là số phiên bản của proc, không phải thông số được gửi trong. sql_text cho tôi câu lệnh trong proc đang thực thi. Có rất nhiều tùy chọn cho cuộc gọi này, tôi có thiếu tùy chọn hiển thị thông số không? – Pez

0

Chỉnh sửa: Tôi tìm thấy mã thú vị này: select dest.* from sys.dm_exec_requests as der cross apply sys.dm_exec_sql_text (der.sql_handle) as dest where session_id = @spid. Hãy thử nó.

http://msdn.microsoft.com/en-us/library/ms181929%28v=SQL.100%29.aspx

Có vẻ như bạn không thể làm điều đó nếu không theo dõi. Có thêm vài bài đăng có câu hỏi tương tự: Can parameterized queries be fully captured using DBCC INPUTBUFFER?

Bạn có thể sử dụng DBCC INPUTBUFFER (spid) nhưng chỉ khi sp được bắt đầu từ SSMS.

Nhìn vào điều này http://sqlblog.com/tags/Who+is+Active/default.aspx. Nếu bạn không thể thêm sp này vào hộp của bạn, sẽ có mã có thể hữu ích.

Chỉnh sửa: Nó sẽ chỉ hiển thị những gì tuyên bố của sp của bạn đang chạy và không hiển thị thông số.

+0

Chỉnh sửa gần đây nhất của bạn vẫn chỉ hiển thị định nghĩa 'create proc', không phải thông số được truyền. –

0

Bạn có thể thay đổi proc được lưu trữ để ghi nhật ký tham số không? Có lẽ chèn vào một bảng các tham số cho chẩn đoán?

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