我收到消息"超时已过期..."从C#App连接到SQL数据库时

时间:2014-05-04 02:11:25

标签: c# sql-server ado.net sqlconnection

我写了一个销售管理软件。除了只有一个函数"生产计划"它几乎可以正常工作(它意味着连接字符串是正确的)。当我单击按钮执行此功能时,我收到一条错误消息"超时已过期。在操作完成之前经过了超时时间,或者服务器没有响应"。

在这个函数中,我调用了一个存储过程,并在SQL Management Studio中对其进行了测试,它运行良好且快速(0.2秒)。

请帮我找一个解决方案。提前致谢! 这是我的存储过程:

CREATE proc [dbo].[SPChiTietKeHoachGiao] (@makhg nvarchar(15))  
as  
begin  
declare @ngay datetime, @thang int, @nam int,  
  @ngay1 datetime, @thang1 int, @nam1 int,  
  @ngay2 datetime, @thang2 int, @nam2 int,  
  @ngay3 datetime, @thang3 int, @nam3 int,  
  @ngay4 datetime, @thang4 int, @nam4 int  
-- Lay tinh hinh tieu thu cua thang truoc  
select top 1 
           @ngay=dateadd(month, -1,Thang) 
from KeHoachGiao 
where MaKeHoachGiao = @makhg   
set @thang = month(@ngay)  
set @nam = year(@ngay)  
set @ngay1=dateadd(MONTH,-1,@ngay)  
set @ngay2=dateadd(MONTH,-1,@ngay1)  
set @ngay3=dateadd(MONTH,-1,@ngay2)  
set @ngay4=dateadd(MONTH,-1,@ngay3)  
set @thang1=month(@ngay1)  
set @nam1=year(@ngay1)  
set @thang2=month(@ngay2)  
set @nam2=year(@ngay2)  
set @thang3=month(@ngay3)  
set @nam3=year(@ngay3)  
set @thang4=month(@ngay4)  
set @nam4=year(@ngay4)  

select ct.MaSP, 
         TenSP,
         xuatkho4.TieuThuTrongThang4,
         xuatkho3.TieuThuTrongThang3,
         xuatkho2.TieuThuTrongThang2,
         xuatkho1.TieuThuTrongThang1,  
  (   
    ISNULL ( TieuThuTrongThang4, 0 )
   +ISNULL ( TieuThuTrongThang3, 0 )
   +ISNULL ( TieuThuTrongThang2, 0 )
   +ISNULL ( TieuThuTrongThang1, 0 ) ) / 4 TTBQ,  

        TonDauKy,
        NhapKhoTrongThang,
        xuatkho.TieuThuTrongThang,
        TonCuoiKy,  

   case KeHoachSanXuat 
        when 0 then null else KeHoachSanXuat end KeHoachSanXuat,  

        KeHoachSanXuat * DinhMuc / 1000000 SanLuong,  
    case SoLuongDaNhap 
         when 0 then null else SoLuongDaNhap end SoLuongDaNhap,  

    case isnull( KeHoachSanXuat, 0 ) 
         when 0 then null 
         else 100 * SoLuongDaNhap / isnull ( KeHoachSanXuat, 100) end TiLeHoanThanh  

from ( 
       select * from ChiTietKeHoachGiao where makehoachgiao = @makhg) ct 

       inner join  
       (
         select masp
              , tensp 
              , stt
              , MaLoai
              , DinhMuc 
         from SanPham
       ) sp 

       ON ct.MaSP = sp.MaSP  

       left join  
       (  
          select ctpx.MaSP
              , SUM( ctpx.SoLuong ) TieuThuTrongThang  
          from   
          (
             select * from PhieuXuatKho 
             where MONTH(NgayXuat)= @thang 
             and YEAR(NgayXuat) = @nam 
           ) pxk  

          inner join ChiTietXuatKho ctpx 
          on pxk.MaPhieuXuat = ctpx.MaPhieuXuat  
          group by ctpx.MaSP  
       ) xuatkho 
      on sp.MaSP = xuatkho.MaSP  


      left join  
      (  
        select ctpx.MaSP
             , sum(ctpx.SoLuong) TieuThuTrongThang1  
        from   
           ( select * from PhieuXuatKho 
             where MONTH(NgayXuat) = @thang1 
             and YEAR ( NgayXuat) = @nam1 

            ) pxk  

             inner join ChiTietXuatKho ctpx 
             on pxk.MaPhieuXuat = ctpx.MaPhieuXuat  
             group by ctpx.MaSP  

      ) xuatkho1 

      on sp.MaSP = xuatkho1.MaSP  

      left join  
      (  
         select ctpx.MaSP
              , sum ( ctpx.SoLuong ) TieuThuTrongThang2  
         from   
            (
              select * from PhieuXuatKho 
              where MONTH ( NgayXuat) = @thang2 
              and YEAR ( NgayXuat)= @nam2

             ) pxk

             inner join ChiTietXuatKho ctpx 
             on pxk.MaPhieuXuat = ctpx.MaPhieuXuat  
             group by ctpx.MaSP  

      ) xuatkho2 
      on sp.MaSP = xuatkho2.MaSP  

      left join  
      (  
        select ctpx.MaSP
             , sum ( ctpx.SoLuong ) TieuThuTrongThang3  
        from   
            (
               select * from PhieuXuatKho 
               where MONTH ( NgayXuat ) = @thang3 
               and YEAR ( NgayXuat ) = @nam3 

              ) pxk  

              inner join ChiTietXuatKho ctpx 
              on pxk.MaPhieuXuat = ctpx.MaPhieuXuat  
              group by ctpx.MaSP  

      ) xuatkho3 
      on sp.MaSP = xuatkho3.MaSP  

      left join  
      (  
        select ctpx.MaSP
             , sum(ctpx.SoLuong) TieuThuTrongThang4  
        from   
            (
              select * from PhieuXuatKho 
              where MONTH(NgayXuat) = @thang4 
              and YEAR(NgayXuat) = @nam4

              ) pxk  

              inner join ChiTietXuatKho ctpx 
              on pxk.MaPhieuXuat = ctpx.MaPhieuXuat  
              group by ctpx.MaSP  

       ) xuatkho4 
       on sp.MaSP = xuatkho4.MaSP  

      inner join 
               (
                 select maloai
                      , tenloai 
                 from loaisanpham

                 ) loai 

        on sp.maloai = loai.maloai  
        order by loai.tenloai
               , sp.STT  
end  

1 个答案:

答案 0 :(得分:0)

我曾经遇到过这样的问题,解决方法是重新编译SP。 您可以通过在参数声明和 AS 关键字之间添加 WITH RECOMPILE 或使用sp_recompile SP来执行此操作。希望这有帮助

http://msdn.microsoft.com/en-us/library/ms190439.aspx

相关问题