2009-12-11 34 views
9

Tôi đang thực hiện tích hợp trên nền tảng cộng đồng có tên là Telligent. Tôi đang sử dụng tiện ích bổ sung của bên thứ ba có tên là BlogML để nhập các bài đăng trên blog từ một tệp XML (ở định dạng BlogML) vào trang web thông minh địa phương của tôi. Nền tảng thông minh có nhiều lớp trong SDK của họ để tôi có thể thêm nội dung theo chương trình, chẳng hạn như bài đăng trên blog. Ví dụ.Lỗi SQL: Chuỗi hoặc dữ liệu nhị phân sẽ bị cắt bớt

myWeblogService.AddPost(myNewPostObject); 

Ứng dụng BlogML tôi đang sử dụng chủ yếu phân tích cú pháp XML và tạo các đối tượng bài đăng blog sau đó thêm chúng vào trang web bằng cách sử dụng dòng mẫu ở trên. Sau khoảng 40 bài đăng nhập, tôi gặp lỗi SQL:

Exception Details: System.Data.SqlClient.SqlException: 
String or binary data would be truncated. 
The statement has been terminated. 

Tôi tin rằng lỗi này có nghĩa là tôi đang cố chèn quá nhiều dữ liệu vào trường db có giới hạn kích thước tối đa. Rất tiếc, tôi không thể cho biết trường nào là vấn đề. Tôi chạy SQL Server Profiler trong khi làm việc nhập khẩu nhưng tôi dường như không thể nhìn thấy những gì được lưu trữ thủ tục lỗi xảy ra trên. Có cách nào khác để sử dụng profiler hoặc một công cụ khác để xem chính xác những gì được lưu trữ thủ tục và thậm chí cả những lĩnh vực lỗi được gây ra bởi? Có mẹo nào khác để biết thêm thông tin về nơi cụ thể để xem không?

Oh những niềm vui của các công cụ của bên thứ 3 ...

+1

Khi lỗi xảy ra, có hoàn tác tất cả các bài đăng trên blog đã được nhập không? Nếu không, có thể bạn có thể cho biết bản ghi nào không thành công (bản tiếp theo sau bản ghi thành công cuối cùng) và xem ở đó. Nếu công cụ nhập có bất kỳ loại ghi nhật ký hoặc bộ đếm bản ghi nào được nhập thì đó sẽ là một nơi khác để xem xét. –

+0

@Tom H. Bài đăng thành công. Tôi đã làm những gì bạn nói về việc xem bài đăng sau bài đăng thành công cuối cùng. Tôi đã nghi ngờ rằng thân bài đăng quá lớn đối với ô db của nó nhưng trường nội dung là 'ntext' và tôi không thấy bất kỳ nút XML dài đáng ngờ nào khác dài hơn tôi mong đợi. Tôi sẽ xem xét lại lần nữa vì đây là phương pháp duy nhất được biết của tôi để gỡ lỗi vấn đề này. Cảm ơn bạn đã bình luận. –

Trả lời

18

Bạn đang đúng ở chỗ ngoại trừ là do cố gắng nhồi nhét quá nhiều dữ liệu vào một lĩnh vực dựa trên nhân vật/nhị phân. Chạy một dấu vết chắc chắn nên cho phép bạn xem những thủ tục/tuyên bố được ném ngoại lệ nếu bạn đang chụp các sự kiện đúng, những bạn muốn chụp sẽ bao gồm:

  1. SQL: BatchStarting
  2. SQL: BatchCompleted
  3. SQL: StmtStarting
  4. SQL: StmtCompleted
  5. RPC: Bắt đầu từ
  6. RPC: Hoàn
  7. SP: Bắt đầu từ
  8. SP: Hoàn
  9. SP: StmtStarting
  10. SP: StmtCompleted
  11. Exception

Nếu bạn biết chắc chắn nó là một thủ tục lưu trữ bao gồm các mã bị lỗi, bạn có thể loại bỏ chụp # 1 s. Hãy chắc chắn rằng bạn nắm bắt tất cả các cột liên quan trong dấu vết là tốt (nên là mặc định nếu bạn đang chạy một dấu vết bằng cách sử dụng công cụ Profiler). Lớp ngoại lệ sẽ bao gồm lỗi thực tế trong dấu vết của bạn, cho phép bạn xem câu lệnh trước ngay trong cùng một SPID đã ném ngoại lệ. Bạn phải bao gồm các sự kiện bắt đầu từ ngoài các sự kiện đã hoàn thành dưới dạng ngoại lệ xảy ra sẽ loại trừ các sự kiện được hoàn thành liên quan khỏi kích hoạt trong theo dõi.

Nếu bạn có thể lọc dấu vết của mình vào cơ sở dữ liệu, ứng dụng, tên máy chủ, v.v. chắc chắn sẽ dễ dàng gỡ lỗi hơn nếu bạn đang ở trên máy chủ bận, tuy nhiên nếu bạn đang ở trên máy chủ nhàn rỗi, bạn có thể không cần để làm phiền với việc lọc.

Giả sử bạn đang sử dụng Sql 2005+, dấu vết sẽ bao gồm cột được gọi là 'EventSequence', về cơ bản là giá trị gia tăng được sắp xếp theo thứ tự mà sự kiện cháy.Một khi bạn chạy theo dõi và nắm bắt đầu ra, hãy tìm sự kiện 'Ngoại lệ' được kích hoạt (nếu bạn đang sử dụng profiler, hàng của nó sẽ có màu Đỏ), thì bạn có thể chỉ cần tìm SP: StmtStarting mới nhất hoặc SQL: StmtStarting sự kiện cho cùng một SPID đã xảy ra trước khi ngoại lệ.

Đây là một ảnh chụp màn hình của một hồ sơ cá nhân tôi chụp tái tạo một sự kiện tương tự như của bạn:

alt text http://i47.tinypic.com/1zc01mo.jpg

Bạn có thể thấy dòng ngoại lệ trong Red, và dòng tô đậm là SP trước ngay lập tức: StmtStarting sự kiện được kích hoạt trước khi ngoại lệ cho cùng một SPID. Nếu bạn muốn tìm thủ tục lưu sẵn, câu lệnh này là một phần của, hãy tìm các giá trị trong các cột ObjectName và/hoặc ObjectId.

+3

Đáng kinh ngạc. Tôi đã dành khoảng 4 ngày để khắc phục sự cố này. Tôi đã thêm các sự kiện bổ sung như bạn đã nói và tìm thấy câu lệnh SP chính xác không thành công. Tôi thấy rằng các trường 'Chủ đề' và' Tác giả' quá ngắn và vừa nhập thành công hơn 700 bài đăng trên blog. Nếu tôi có thể, tôi sẽ cung cấp cho bạn tất cả các điểm đại diện của tôi. –

+0

Tuyệt vời, vui vì nó đã giúp! – chadhoc

+0

chad là của tôi heeerooooo – Jason

0

Bằng cách thực hiện một số lỗi ngớ ngẩn, bạn sẽ gặp phải lỗi này.

nếu bạn đang cố chèn chuỗi như thế.

String reqName="Food Non veg /n"; 

đây/n là thủ phạm.Remove/n từ chuỗi để thoát khỏi lỗi này.

Tôi hy vọng điều này sẽ giúp ích một số.

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