0

次のクエリと.netでのタイムアウトがありますが、SQLサーバーで正常に実行すると、.netは一時テーブルなどとは異なりますか??? .net で実行するとタイムアウト エラーが発生し、何が起こっているのかまったくわかりません。

     SET DATEFORMAT dmy
        declare @AbsenceReasonRestrictions varchar(500)
      set @AbsenceReasonRestrictions ='1'
      create table #absence
    ( 
        record_id INT,
        emp_no int,    
        staff_no varchar(max),
        emp_name varchar(max),
        details text,
        leave_reason int,
        leave_reason_desc varchar(30),
        current_status int,
        date_added datetime,
        dept int,
        dept_desc varchar(100),
        location int,
        location_desc varchar(100),
        division int,
        division_desc varchar(100),
        emptype int,
        emptype_desc varchar(100),
        contype int,
        contype_desc varchar(100),
        conclass int,
        conclass_desc varchar(100),
        line_manager int,
        line_manager_name varchar(510)
    )

        INSERT INTO #absence (record_id, 
            emp_no,    
            staff_no,
            emp_name,
            details,
            leave_reason,
            leave_reason_desc,
            current_status,
            date_added,
            dept,
            dept_desc,
            location,
            location_desc,
            division,
            division_desc,
            emptype,
            emptype_desc,
            contype,
            contype_desc,
            conclass,
            conclass_desc,
            line_manager,
            line_manager_name)

        select ua.record_id,
                ua.emp_no,
                e.staff_no,
                rtrim(e.surname)+', '+rtrim(e.forename1),
                ua.details,
                ua.absence_reason,
                ar.desc_,
                ua.current_status,
                ua.date_added,
                c.dept,
                rtrim(dept.desc_),
                c.location,
                rtrim(loc.desc_),
                c.division,
                rtrim(div.desc_),
                c.emptype,
                rtrim(emptype.desc_),
                c.type,
                rtrim(contype.desc_),
                c.classification,
                rtrim(conclass.desc_),
                ua.manager_user_id,
                (select rtrim(e.surname) + ', ' + rtrim(e.forename1) as emp_name from employee e 
                inner join userlist_mss um on e.emp_no = um.pams_id 
                where um.record_id = ua.manager_user_id)

            from ess_absence_requests ua
                inner join employee e on e.emp_no=ua.emp_no
                inner join absreas ar on ar.code=ua.absence_reason
                inner join contract c on ua.emp_no = c.emp_no
                join dept on c.dept=dept.code
                join location loc on c.location=loc.code
                join division div on c.division=div.code
                join emptype on c.emptype=emptype.code
                join contype on c.type=contype.code
                join conclass on c.classification=conclass.code
                where e.emp_no like '%'
                AND c.main_contract=1
                AND ua.current_status in (1,2,3,4)      
                AND (dbo.fn_XmlElementDateValue(ua.details, 'start_date') >='1/10/2013')
                AND (dbo.fn_XmlElementDateValue(ua.details, 'end_date') <='31/10/2013')
                AND e.active_leaver like 'ACTIVE'
                AND e.emp_no like '%'
                and c.dept like '%'
                and c.location like '%'
                and c.division like '%'
                and c.emptype like '%'
                and c.classification like '%'
                and c.type like '%'
                and ua.emp_no in (select employee_id from userlist_mss_employee_access_rights where manager_id=2)

                order by (dbo.fn_XmlElementDateValue(ua.details, 'start_date'))

             if @AbsenceReasonRestrictions!=''
        begin
            set @AbsenceReasonRestrictions=','+@AbsenceReasonRestrictions+','
            delete #absence where charindex(','+cast(leave_reason as varchar(10))+',', @AbsenceReasonRestrictions) = 0
        end

    select record_id,
        emp_no,    
        staff_no,
        emp_name,
        details,
        leave_reason,
        leave_reason_desc,
        current_status,
        date_added,
        dept_desc,
        location_desc,
        division_desc,
        emptype_desc,
        contype_desc,
        conclass_desc,
        line_manager,
        line_manager_name from #absence

    drop table #absence

    select * from emp_anal
4

2 に答える 2

0

問題は、管理スタジオにはクエリのタイムアウト制限がないことだと思いますが、.net コード内で実行すると、接続タイムアウトが制限されます。接続文字列または接続初期化の場所でタイムアウトを直接変更してみてください。

より詳しい情報:

于 2013-11-04T14:01:29.460 に答える