Hiển thị kết quả từ 1 đến 8 / 8
  1. #1
    Tham gia
    02-05-2005
    Location
    Hà nội
    Bài viết
    176
    Like
    1
    Thanked 11 Times in 10 Posts

    Vấn đề với SQL Server Express

    Chào các bác!

    Bí bách và ức chế quá mới lên đây xin thỉnh giáo các bác cao thủ giúp em vụ này. Chả là em làm web có bộ CMS viết trên CSDL SQL Server 2005.

    Bình thường những lần trước thuê các host có hỗ trợ SQL Server 2005 thì vẫn chạy được. Xong khi thuê host bên mắt bão, thì bên đó restore dùm cho database, chạy được 1 lúc rất nhanh, rồi 2 tiếng sau không chạy được với các chức năng có truy gọi Stored Procedure có truy vấn nhiều một chút (Các host trước thì không sao)

    Kiểm tra thì thấy mắt bão sử dụng sql server express, và các chức năng có sử dụng truy vấn nhiều 1 là bị lỗi Timeout Expred. Dưới đây là 1 trong những Stored Procedure bị lỗi Timeout, các báo chỉ dùm với (kêu hỗ trợ mắt bão chưa thấy hồi âm)

    <code>
    IF @order = 1
    BEGIN
    -- display photo file
    IF @tid = 2 And @starred=1
    BEGIN
    SELECT dbo.Advertises.*, dbo.Directories.CreationTime, dbo.Directories.CreationByName, dbo.Directories.ParentID
    FROM dbo.Advertises INNER JOIN dbo.Directories ON dbo.Advertises.DirectoryID = dbo.Directories.DirectoryID
    WHERE (CAST(dbo.Advertises.CategoryID AS varchar(4)) LIKE @sCategory) AND
    dbo.Directories.ToFrontPage = @starred AND
    dbo.Directories.IsTrash = 0 AND
    dbo.Directories.IsLocked = 0 AND
    dbo.Directories.IsCheckOut = 1
    ORDER BY dbo.Directories.CreationTime DESC
    END
    IF @tid = 2 And @starred=0
    BEGIN
    SELECT dbo.Advertises.*, dbo.Directories.CreationTime, dbo.Directories.CreationByName, dbo.Directories.ParentID
    FROM dbo.Advertises INNER JOIN dbo.Directories ON dbo.Advertises.DirectoryID = dbo.Directories.DirectoryID
    WHERE (CAST(dbo.Advertises.CategoryID AS varchar(4)) LIKE @sCategory) AND
    dbo.Directories.IsTrash = 0 AND
    dbo.Directories.IsLocked = 0 AND
    dbo.Directories.IsCheckOut = 1
    ORDER BY dbo.Directories.CreationTime DESC
    END
    -- display news file
    IF @tid = 3 And @starred=1
    BEGIN
    SELECT dbo.News.*, dbo.Directories.CreationTime, dbo.Directories.CreationByName, dbo.Directories.ParentID
    FROM dbo.News INNER JOIN dbo.Directories ON dbo.News.DirectoryID = dbo.Directories.DirectoryID
    WHERE (CAST(dbo.News.CategoryID AS varchar(4)) LIKE @sCategory) AND
    dbo.Directories.ToFrontPage = @starred AND
    dbo.Directories.IsTrash = 0 AND
    dbo.Directories.IsLocked = 0 AND
    dbo.Directories.IsCheckOut = 1
    ORDER BY dbo.Directories.CreationTime DESC
    END
    IF @tid = 3 And @starred=0
    BEGIN
    SELECT dbo.News.*, dbo.Directories.CreationTime, dbo.Directories.CreationByName, dbo.Directories.ParentID
    FROM dbo.News INNER JOIN dbo.Directories ON dbo.News.DirectoryID = dbo.Directories.DirectoryID
    WHERE (CAST(dbo.News.CategoryID AS varchar(4)) LIKE @sCategory) AND
    dbo.Directories.IsTrash = 0 AND
    dbo.Directories.IsLocked = 0 AND
    dbo.Directories.IsCheckOut = 1
    ORDER BY dbo.Directories.CreationTime DESC
    END

    -- display link file
    IF @tid = 4 And @starred=1
    BEGIN
    SELECT dbo.Links.*, dbo.Directories.CreationTime, dbo.Directories.CreationByName, dbo.Directories.ParentID
    FROM dbo.Links INNER JOIN dbo.Directories ON dbo.Links.DirectoryID = dbo.Directories.DirectoryID
    WHERE (CAST(dbo.Links.CategoryID AS varchar(4)) LIKE @sCategory) AND
    dbo.Directories.ToFrontPage = @starred AND
    dbo.Directories.IsTrash = 0 AND
    dbo.Directories.IsLocked = 0 AND
    dbo.Directories.IsCheckOut = 1
    ORDER BY dbo.Directories.CreationTime DESC
    END
    IF @tid = 4 And @starred=0
    BEGIN
    SELECT dbo.Links.*, dbo.Directories.CreationTime, dbo.Directories.CreationByName, dbo.Directories.ParentID
    FROM dbo.Links INNER JOIN dbo.Directories ON dbo.Links.DirectoryID = dbo.Directories.DirectoryID
    WHERE (CAST(dbo.Links.CategoryID AS varchar(4)) LIKE @sCategory) AND
    dbo.Directories.IsTrash = 0 AND
    dbo.Directories.IsLocked = 0 AND
    dbo.Directories.IsCheckOut = 1
    ORDER BY dbo.Directories.CreationTime DESC
    END
    END
    </code>


    Các bác cao thủ lên tiếng giúp em với, hix.

    [=========> Bổ sung bài viết <=========]

    À dạng procedure này cũng bị:

    DECLARE @sFrontPage varchar(3)
    DECLARE @sCheckOut varchar(3)
    DECLARE @sPublish varchar(3)
    DECLARE @sCategory varchar(3)
    DECLARE @sSection varchar(3)

    IF @fp = 2
    SET @sFrontPage = '%'
    ELSE
    SET @sFrontPage = CAST(@fp As varchar(3))

    IF @check = 2
    SET @sCheckOut = '%'
    ELSE
    SET @sCheckOut = CAST(@check As varchar(3))

    IF @pub = 2
    SET @sPublish = '%'
    ELSE
    SET @sPublish = CAST(@pub As varchar(3))

    IF @cat = -1
    SET @sCategory = '%'
    ELSE
    SET @sCategory = CAST(@cat As varchar(4))

    IF @sec = -1
    SET @sSection = '%'
    ELSE
    SET @sSection = CAST(@sec As varchar(4))

    IF @order = 0
    BEGIN
    SELECT TOP 100 PERCENT dbo.Directories.*, dbo.FileTypes.Name AS FileType, dbo.FileTypes.IconURL, dbo.FileTypes.IsBrowser, dbo.Modules.LinkURL AS EditFileURL, dbo.Directories.ParentID,
    dbo.News.PictureURL, dbo.News.Excerpt, dbo.News.Hits, dbo.News.Authors,
    dbo.mosCategories.CategoryID As CategoryID, dbo.mosCategories.Name As CategoryName,
    dbo.mosSections.SectionID As SectionID, dbo.mosSections.Name As SectionName
    FROM dbo.Directories INNER JOIN
    dbo.FileTypes ON dbo.Directories.FileTypeID = dbo.FileTypes.FileTypeID INNER JOIN
    dbo.Modules ON dbo.FileTypes.ModuleID = dbo.Modules.ModuleID INNER JOIN
    dbo.News ON dbo.Directories.DirectoryID = dbo.News.DirectoryID INNER JOIN
    dbo.mosCategories ON dbo.News.CategoryID = dbo.mosCategories.CategoryID INNER JOIN
    dbo.mosSections ON dbo.mosCategories.SectionID = dbo.mosSections.SectionID
    WHERE (CAST(dbo.Directories.ToFrontPage AS varchar(3)) LIKE @sFrontPage) AND
    (CAST(dbo.Directories.IsCheckOut AS varchar(3)) LIKE @sCheckOut) AND
    (CAST(dbo.Directories.Visible AS varchar(3)) LIKE @sPublish) AND
    (CAST(dbo.mosCategories.CategoryID AS varchar(4)) LIKE @sCategory) AND
    (CAST(dbo.mosSections.SectionID AS varchar(4)) LIKE @sSection) AND
    (dbo.Directories.IsTrash = 0) AND
    (dbo.Directories.FileTypeID = 3) AND
    (dbo.Directories.Name LIKE '%'+@name+'%') AND
    (dbo.Directories.CreationByName LIKE '%'+@author+'%')
    ORDER BY dbo.Directories.VisibleOrder
    END
    Được sửa bởi alone_hero lúc 10:30 ngày 09-06-2010 Reason: Bổ sung bài viết
    IQWEB[.]VN - Xây dựng Website Chuyên Nghiệp.
    Quote Quote

  2. #2
    Tham gia
    23-06-2006
    Bài viết
    204
    Like
    0
    Thanked 3 Times in 2 Posts
    Biết nói gì nhỉ. Câu trả lời thì chắc bạn cũng biết rồi. Đó là thuê host khác hỗ trợ SQL Server xịn. Nếu muốn dùng tạm thì yêu cầu mắt bão tăng connection timeout lên.

  3. #3
    Tham gia
    02-05-2005
    Location
    Hà nội
    Bài viết
    176
    Like
    1
    Thanked 11 Times in 10 Posts
    Cám ơn bạn, mình vẫn đang chờ phản hồi bên phía đó. Và mình phát hiện ra rằng lỗi phát sinh từ bảng dữ liệu dbo.News (hiện bảng này mới có khoảng hơn 20 row dữ liệu)

    Vậy mà đăng nhập theo đường SQL Server Management Studio (tại máy mình), rồi open table hoặc truy vấn bằng chính phần mềm của sql server mà cũng bị báo lỗi không truy vấn nổi thông tin.

    Không biết có phải do SQL Server của host có vấn đề.
    IQWEB[.]VN - Xây dựng Website Chuyên Nghiệp.

  4. #4
    Tham gia
    17-03-2010
    Location
    Mê Linh - Hà Nội
    Bài viết
    517
    Like
    0
    Thanked 5 Times in 4 Posts
    Quote Được gửi bởi alone_hero View Post
    Cám ơn bạn, mình vẫn đang chờ phản hồi bên phía đó. Và mình phát hiện ra rằng lỗi phát sinh từ bảng dữ liệu dbo.News (hiện bảng này mới có khoảng hơn 20 row dữ liệu)

    Vậy mà đăng nhập theo đường SQL Server Management Studio (tại máy mình), rồi open table hoặc truy vấn bằng chính phần mềm của sql server mà cũng bị báo lỗi không truy vấn nổi thông tin.

    Không biết có phải do SQL Server của host có vấn đề.
    Bạn kiểm tra xem bạn lấy ra bao nhiêu record. Nếu bạn lấy ra hơn 20 row. Thì lỗi là phải rồi
    Cho mình hỏi Data của bạn bao nhiêu GB. SQL Server Express được max có 2 GB thôi. Mà cty bán host ai lại cài bản express nhỉ

  5. #5
    Tham gia
    23-06-2006
    Bài viết
    204
    Like
    0
    Thanked 3 Times in 2 Posts
    Quote Được gửi bởi vzic View Post
    Bạn kiểm tra xem bạn lấy ra bao nhiêu record. Nếu bạn lấy ra hơn 20 row. Thì lỗi là phải rồi
    Lấy hơn 20 row thì sao? Tại sao lại nói lỗi là phải rồi? Bản Express ko cho lấy ra hơn 20 row à?

    Theo tôi thì do cái host này cùi bắp quá hoặc bị những thằng to hơn đè bẹp nên không chịu nổi. Giải pháp chắc là nâng cấp gói hosting hoặc chuyển qua thằng khác.

    Bạn show ra đoạn mã trên thì mọi người cũng chỉ là thầy bói xem voi thôi. Chả giúp được gì nhiều. Nâng cấp gói hosting xem ra rẻ hơn và khả thi hơn việc lôi hệ thống CMS ra mổ xẻ xem nó sai/kém ở chỗ nào.

  6. #6
    Tham gia
    17-03-2010
    Location
    Mê Linh - Hà Nội
    Bài viết
    517
    Like
    0
    Thanked 5 Times in 4 Posts
    Quote Được gửi bởi vqt View Post
    Lấy hơn 20 row thì sao? Tại sao lại nói lỗi là phải rồi? Bản Express ko cho lấy ra hơn 20 row à?

    Theo tôi thì do cái host này cùi bắp quá hoặc bị những thằng to hơn đè bẹp nên không chịu nổi. Giải pháp chắc là nâng cấp gói hosting hoặc chuyển qua thằng khác.

    Bạn show ra đoạn mã trên thì mọi người cũng chỉ là thầy bói xem voi thôi. Chả giúp được gì nhiều. Nâng cấp gói hosting xem ra rẻ hơn và khả thi hơn việc lôi hệ thống CMS ra mổ xẻ xem nó sai/kém ở chỗ nào.
    À SR e nhầm e tưởng 20 tr row nếu chủ topic khi dùng tool đó open table nó trả về 20 tr row thì sao chịu nổi.
    Mấy cả 1 cty dùng bản express cho khách hàng thì cùi rồi
    Nói trung dùng SQL Server mà không có server riêng thì ức chế lắm. Bất tiện trong backup/ restore!. Chủ topic dùng VPS đi!

  7. #7
    Tham gia
    02-05-2005
    Location
    Hà nội
    Bài viết
    176
    Like
    1
    Thanked 11 Times in 10 Posts

    Buồn quá đi !

    Quote Được gửi bởi vzic View Post
    À SR e nhầm e tưởng 20 tr row nếu chủ topic khi dùng tool đó open table nó trả về 20 tr row thì sao chịu nổi.
    Mấy cả 1 cty dùng bản express cho khách hàng thì cùi rồi
    Nói trung dùng SQL Server mà không có server riêng thì ức chế lắm. Bất tiện trong backup/ restore!. Chủ topic dùng VPS đi!
    Hôm qua vừa tìm ra chỗ bị lỗi, đó là table News không thể truy vấn nổi nên dẫn đến tắt nghẽn toàn bộ các thủ tục. Table News đó lỗi đến nỗi không thể sửa, edit hay delete nổi 1 dòng nào của nó.
    Kêu gào bên host kiểm tra lại file data có lỗi gì không, học làm gì đó restore lại rồi open đc table, xóa sửa đc. Xong

    Nhưng ra ngoài web, bấm bấm vài phát (phát thứ 3 bấm vô 1 tin - bung ra 1 cửa sổ kiểu đăng nhập ftp nào đó (của địa chỉ web khác), chứ không có nội dung tin mình. Ái chà, có lẽ chiến sĩ nào post tin, copy luôn cả nội dung của một site nào đó (trong nội dung có script tồi hoặc hack chăng).

    Y như rằng, vô Open table (không làm gì đc luôn - lại tình trạng cũ). Đành kêu gào nhà cung cấp host restore lại, rồi mình xóa béng mấy tin đó đi, không có vấn đề gì nữa thì phải.

    Ai giải thích dùm hiện tượng, có phải là nội dung tin có chứa script hack website, và kiểu gì mà lại bị vậy.
    IQWEB[.]VN - Xây dựng Website Chuyên Nghiệp.

  8. #8
    Tham gia
    17-03-2010
    Location
    Mê Linh - Hà Nội
    Bài viết
    517
    Like
    0
    Thanked 5 Times in 4 Posts
    Quote Được gửi bởi alone_hero View Post
    Hôm qua vừa tìm ra chỗ bị lỗi, đó là table News không thể truy vấn nổi nên dẫn đến tắt nghẽn toàn bộ các thủ tục. Table News đó lỗi đến nỗi không thể sửa, edit hay delete nổi 1 dòng nào của nó.
    Kêu gào bên host kiểm tra lại file data có lỗi gì không, học làm gì đó restore lại rồi open đc table, xóa sửa đc. Xong

    Nhưng ra ngoài web, bấm bấm vài phát (phát thứ 3 bấm vô 1 tin - bung ra 1 cửa sổ kiểu đăng nhập ftp nào đó (của địa chỉ web khác), chứ không có nội dung tin mình. Ái chà, có lẽ chiến sĩ nào post tin, copy luôn cả nội dung của một site nào đó (trong nội dung có script tồi hoặc hack chăng).

    Y như rằng, vô Open table (không làm gì đc luôn - lại tình trạng cũ). Đành kêu gào nhà cung cấp host restore lại, rồi mình xóa béng mấy tin đó đi, không có vấn đề gì nữa thì phải.

    Ai giải thích dùm hiện tượng, có phải là nội dung tin có chứa script hack website, và kiểu gì mà lại bị vậy.
    E chưa gặp trường hợp này bao giờ. Nhưng ông a thử kiểm soát nội dung đưa vào kiểm tra và xử lý các đoạn mã đó xem ổn hơn ko

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •