Bạn hiện đang ngoại tuyến, hãy chờ internet để kết nối lại

Làm thế nào để sử dụng công cụ Findstr để quét tập tin ghi lỗi SQL hoặc DBCC đầu ra tập tin cho việc phân tích lỗi

Extended support for SQL Server 2005 ends on April 12, 2016

If you are still running SQL Server 2005 after April 12, 2016, you will no longer receive security updates and technical support. We recommend upgrading to SQL Server 2014 and Azure SQL Database to achieve breakthrough performance, maintain security and compliance, and optimize your data platform infrastructure. Learn more about the options for upgrading from SQL Server 2005 to a supported version here.

QUAN TRỌNG: Bài viết này được dịch bằng phần mềm dịch máy của Microsoft chứ không phải do con người dịch. Microsoft cung cấp các bài viết do con người dịch và cả các bài viết do máy dịch để bạn có thể truy cập vào tất cả các bài viết trong Cơ sở Kiến thức của chúng tôi bằng ngôn ngữ của bạn. Tuy nhiên, bài viết do máy dịch không phải lúc nào cũng hoàn hảo. Loại bài viết này có thể chứa các sai sót về từ vựng, cú pháp hoặc ngữ pháp, giống như một người nước ngoài có thể mắc sai sót khi nói ngôn ngữ của bạn. Microsoft không chịu trách nhiệm về bất kỳ sự thiếu chính xác, sai sót hoặc thiệt hại nào do việc dịch sai nội dung hoặc do hoạt động sử dụng của khách hàng gây ra. Microsoft cũng thường xuyên cập nhật phần mềm dịch máy này.

Nhấp chuột vào đây để xem bản tiếng Anh của bài viết này:115519
TÓM TẮT
Nó là cần thiết để thường xuyên kiểm tra DBCC đầu ra và các bản ghi lỗi SQL Server đểkiểm tra các vấn đề. Điều này có thể là một quá trình dễ bị lỗi và siêng năng,đặc biệt là nếu bạn phải làm điều này trên một số máy chủ, mỗi trong số đó có thểnhiều cơ sở dữ liệu. Windows NT tàu với một mạnh mẽ mẫu tìm kiếm utility được gọi làFINDSTR.exe có thể được sử dụng để phần lớn tự động hoá công việc này. Bạn cũng có thể sử dụng tiện ích này có điều kiện thực hiện một đợt tập tin dựa trên cho dù một số dây lỗi được tìm thấy. Bài viết này mô tả cách sử dụng này Findstr.
THÔNG TIN THÊM
FINDSTR là một hiệu suất cao mẫu tìm kiếm utility có sử dụng Win32không đồng bộ và tập tin ánh xạ I/O cho thông lượng tốt nhất. Nó cho phép việc sử dụngbiểu thức thông thường, đệ quy tìm kiếm xuống một cây thư mục, và cáckhả năng để loại trừ các mẫu, do đó việc đạt được một chức năng không. Xem Windows của bạnNT tài liệu hướng dẫn cho thêm thông tin.

Có hai phương pháp tiếp cận cơ bản để tìm kiếm các bản ghi lỗi SQL Server hay DBCC đầu ralỗi bằng cách sử dụng Findstr.exe:
  • Nhà nước một cách rõ ràng những gì chuỗi để tìm.
  • Nhà nước những gì chuỗi bạn không muốn tìm (mà sẽ hiển thị tất cả, nhưng chúng).
Trong phương pháp tiếp cận đầu tiên, bạn xây dựng một danh sách các chuỗi xác định lỗi bạnmuốn Findstr để phù hợp với. Đây là danh sách chuỗi có thể được cung cấp như một đầu vàotập tin để Findstr.

Ví dụ, nói rằng bạn muốn tìm tất cả các lần xuất hiện của các xâu "bảngtham nhũng"(mà đi kèm với nhiều dữ liệu nghiêm trọng lỗi) và"msg 605"(màlà một loại hình cụ thể của lỗi). Đặt các dây vào một tập tin như vậy cácnội dung chỉ đơn giản là trông như thế này:
table corruptmsg 605				
Chạy Findstr.exe trên các tập tin đầu ra DBCC bằng cách sử dụng cú pháp này:
findstr /i /g:search.txt dbcc.* > findstr.out				
trong trường hợp search.txt là tập tin có chứa chuỗi tìm kiếm, dbcc.*phù hợp với một nhóm các DBCC đầu ra tập tin để tìm kiếm, và findstr.out là nơikết quả tìm kiếm đặt.

Thách thức với cách tiếp cận này là biết trước những gì lỗidây để tìm kiếm. Thật không may, đó là không có danh sách toàn diện của SQL Serverlỗi dây mà bao gồm tất cả các thể DBCC, máy chủ, và hạt nhânlỗi. Đối với các phiên bản trước khi đến 7,0, chỉ đơn thuần là tìm kiếm các dây có thể cung cấp bảo hiểm khá tốt như là một điểm khởi đầu: "bảng tham nhũng", "cấp 16"-"cấp 21", và "mức độ nghiêm trọng: 16"-"mức độ nghiêm trọng: 21."

Bằng cách sử dụng thử nghiệm một chút, đó là thường có thể tiếp tục cải tiếnĐiều này và nhận được khá đáng tin cậy checking tin (chắc chắn hơn cậy hơn làmVì vậy bằng mắt).

Phương pháp tiếp cận khác liên quan đến việc sử dụng khả năng "đảo ngược trận" của Findstrđể loại trừ các danh sách tìm kiếm chuỗi. Cách tiếp cận này dễ dàng áp dụngđể DBCC ra hơn để lỗi đăng nhập đầu ra bởi vì có rất ít khác biệtchuỗi đó có yêu cầu loại trừ. Trong một số cách đây tiếp cận, nếu áp dụng,là an toàn hơn bởi vì bạn chỉ rõ ràng nêu rõ những gì không để phù hợp, và bất kỳmới hoặc unanticipated lỗi sẽ được hiển thị theo mặc định.

Vì của kinh nghiệm hiện đang hạn chế với tần số thông báo lỗi cho phiên bản 7.0, cách tiếp cận "đảo ngược trận đấu" có lẽ là phương pháp tốt nhất cho phiên bản này.

Ví dụ, nói rằng bạn muốn loại trừ các xâu "Tổng số", "Bảng có", và "Kiểm tra" trong một loạt các DBCC đầu ra tệp. Điều này sẽ loại trừ nhiều thông điệp trạng thái DBCC không cần thiết và sẽ không gây ra thiệt hại của bất kỳ lỗi nào. Đối với các phiên bản trước khi 7,0, nơi các dây vào một tập tin trông như thế này:
The total numberTable hasChecking				
Chạy Findstr trên các tập tin đầu ra DBCC bằng cách sử dụng cú pháp này:
findstr /v /i /g:search.txt dbcc.* > findstr.out				
trong trường hợp search.txt là tập tin có chứa chuỗi tìm kiếm, dbcc.*phù hợp với một nhóm các DBCC đầu ra tập tin để tìm kiếm, và findstr.out là điểm đến cho các kết quả tìm kiếm. Các tham số /v chỉ ra "trận đấu đảo ngược, mà có hiệu quả phù hợp với tất cả các dây ngoại trừ những người trong danh sách.

Cho 7,0, làm điều tương tự nhưng sử dụng các dây:
pages for objectDBCC resultsDBCC execution completed				
Sau đây là danh sách loại trừ mẫu cho các bản ghi lỗi sẽ lọc ra không-thông điệp rất cần thiết và tìm thấy lỗi quan trọng nhất. Điều này không phải là toàn diện và được xem như một mẫu chỉ. Sửa đổi nó cho phù hợp với nhu cầu của bạn.
CopyrightAll rights reservedLogging SQL Serverinitconfig: numberSQL Server is startinitializing virtualOpening Master DataLoading SQL ServerRecovering DatabaseRecovery dbidtransactions rollActivating diskinitializing virtualserver name isClearingUsing 'SQLEVENT.DLLUsing 'OPENDSNT.DLLUsing 'NTWDBLIB.DLLUsing 'SSNMPNTW.DLLrolled forwarddefault sortnocasedefault characterrecovery completeterminating duewindows nt(id =killed by hostname1782417825160817832OS error : 109OS error : 232unable to write torestrictionscontractsserver is unnamedno_logworking threadSybasenetwork errorunited statesunable to read loginduplicationsubdivisionclausenumber of buffersusing asynchronous diskpipe name isnumber of proc buffersnetwork informationfile descriptorstransactions before ckptshutdown by request				
Trong một số trường hợp, kết hợp các phương pháp tiếp cận hai pha trộn tốt nhấtđặc điểm của cả hai, hoặc tại ít nhất là cho phép làm việc xung quanh khó khănvấn đề phát sinh từ việc sử dụng chỉ là một trong.

Ví dụ, nói rằng bạn đang tìm kiếm các bản ghi lỗi của bạn cho các dây"Mức độ nghiêm trọng: 16" thông qua "mức độ nghiêm trọng: 21", mà nên phù hợp với hầu hếtlỗi nghiêm trọng. Nhưng bạn nhận thấy trong sản lượng tìm kiếm của bạn một số thông tin liên lạc-liên quan đến lỗi như 1608 và 17832, mà thường không chỉ của mộtvấn đề nghiêm trọng. Bạn có thể giữ điều kiện tìm kiếm ban đầu của bạn và loại trừchỉ các cụ thể lỗi không mong muốn từ tìm kiếm ra bởi piping một trongFINDSTR lệnh thành khác:
findstr /i /g:search.txt errorlog*.* | findstr/v /i /g:exclude.txt > f.out				
trong trường hợp search.txt là tập tin có chứa các chuỗi tìm kiếm, errorlog *. *là lỗi SQL Server đăng nhập các tập tin để tìm kiếm, exclude.txt là filecó chứa chuỗi tìm kiếm để loại trừ, và f.out là nơi tìm kiếmkết quả được đặt. Cách tiếp cận này có thể cascaded nhiều tầng lớp sâu,không tính liên tục thêm tại mỗi cấp độ.

Có thể viết một tập tin thực thi có điều kiện sẽ hành động dựa trênngày cho dù Findstr phát hiện một chuỗi lỗi nhất định. Kỹ thuật này sử dụng cácWindows NT có điều kiện xử lý lệnh đó là "&&" và "||". Lệnh thực hiện một đợt tập tin batch1.bat nếu bất kỳ của các máy chủ SQLlỗi chuỗi trong tập tin search.txt được tìm thấy:
findstr /i /g:search.txt errorlog*.* && batch1				
Batch1.bat có thể gọi một chương trình hoặc thậm chí chạy một công việc ISQL sử dụng cácxp_sendmail khả năng của SQL Server để gửi một thư thông báomột nhà điều hành của một vấn đề.

Các kỹ thuật mô tả ở trên có thể được kết hợp để thực hiện một loạt các nhiệm vụ. ChoVí dụ, tập tin thực thi sau liên tục sẽ chạy một lệnh Findstrmà có điều kiện thực hiện batch1.bat nếu bất kỳ lỗi SQL strings trongsearch.txt tập tin được tìm thấy, không bao gồm dây trong exclude.txt.
echo off:startfindstr /i /g:search.txt errorlog*.* | findstr/v /i /g:exclude.txt && (echo WARNING & batch1)goto start				
Với thử nghiệm một chút, bạn sẽ tìm thấy các kỹ thuật này có thể rấthữu ích trong việc giảm lao động tham gia trong việc tìm kiếm lỗi SQL Server đăng nhập và DBCCđầu ra tệp. Các kỹ thuật tương tự cũng có thể được sử dụng cho bất kỳ văn bản chung-tìm kiếm công việc, không chỉ những người có liên quan đến máy chủ SQL.

Theo một số điều kiện, Findstr có thể gặp phải giới hạn nội bộ và không thể hoàn tất tìm kiếm một. Khi điều này xảy ra, bạn sẽ thấy thông báo này trong đầu ra:
FINDSTR: Viết lỗi.
Nếu điều này xảy ra, làm giảm số lượng phù hợp với dây bạn sử dụng, hãy thử một kết hợp tích cực thay vì của trận đấu đảo ngược hoặc sử dụng một công cụ tìm kiếm khác nhau, chẳng hạn như Perl (thêm chi tiết về điều này dưới đây).

Một chủ đề liên quan là sử dụng công cụ dòng lệnh Windows NT. Bắt đầu với Windows NT 4.0, không có phần mở rộng nâng cao lệnh có sẵn. Làm cmd /x /? để xem danh sách. Việc tăng cường cho lệnh là một ví dụ. Làm /? để xem cú pháp. Đây là một ví dụ cho thấy làm thế nào để sử dụng FOR chạy isql 5 lần trong một hàng, tiết kiệm mỗi đầu ra vào một tập tin được đặt tên theo một cách khác nhau:
FOR /L %f IN (1, 1, 5) do isql /Usa /P /itest.sql /otest%f.out				
Dưới đây là một ví dụ về làm thế nào để di chuyển tất cả các tập tin có chứa một chuỗi lỗi nhất định đến một thư mục chung. Điều này có thể hữu ích trong tiêu huỷ ra có chứa lỗi errorlogs từ một nhóm lớn các lỗi cái để họ có thể được gửi đến một người nào đó để nghiên cứu thêm. Điều này minh hoạ làm thế nào để thực hiện một chương trình cho mỗi tên tập tin trong một tập tin có chứa một danh sách các tên.
findstr /s /i /c:"error.*605" errorlog*.* >  srch.outFOR /F %f IN (srch.out) do copy %f c:\results				
Thêm vào lệnh tiện ích mở rộng, một phiên bản của Perl tàu với Windows NT Resource Kit. Perl là một ngôn ngữ như c diễn giải cao tối ưu hóa cho tệp và xử lý chuỗi. Dễ dàng để làm phù hợp với mô hình phức tạp và chỉnh sửa/thay thế các hoạt động với Perl. Nó có thể được sử dụng cùng với dòng lệnh Windows NT để cung cấp các tính năng rất mạnh mẽ. Có rất nhiều sách và web thông tin nguồn về Perl.
errorlogs Windows NT

Warning: This article has been translated automatically

Thuộc tính

ID Bài viết: 115519 - Xem lại Lần cuối: 08/17/2011 12:30:00 - Bản sửa đổi: 2.0

Microsoft SQL Server 7.0 Standard Edition, Microsoft SQL Server 4.21a Standard Edition, Microsoft SQL Server 6.0 Standard Edition, Microsoft SQL Server 6.5 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbinfo kbusage kbmt KB115519 KbMtvi
Phản hồi