这里使用的执行命令是什么

时间:2015-06-15 08:56:21

标签: sql sql-server sql-server-2008 tsql

protected void Page_Load(object sender, EventArgs e)
    {
        string sqlConnectionString = @"Data Source=phriz-webapp01;Initial Catalog=PFTracking;Integrated Security=True";
        string script = "if not exists(select * from sys.servers where name=N'CNCTC-WEB01')begin exec sp_addlinkedserver @server='CNCTC-WEB01'exec sp_addlinkedsrvlogin 'CNCTC-WEB01','false',null,'svc_Phils','Apple@6' end INSERT INTO [PFTracking].[dbo].[TempTable] SELECT c.[pf_id],a.[RequestDate],c.[pf_carrierUsed],b.[PiecePrice] * b.[PartQuantity] as [Amount] ,c.[pf_type],c.[pf_resSupplier] ,c.[pf_resCustomer],c.[pf_trailerNum] ,b.[PartDesc]  ,c.[pf_chargeBack]  ,c.[pf_chargetoPlant] FROM [CNCTC-WEB01].[NOP_PR].[dbo].[Requests] a JOIN [CNCTC-WEB01].[NOP_PR].[dbo].[Parts] b on a.[RequestID] = b.[RequestID] JOIN [PHRIZ-WEBAPP01].[PFTracking].[dbo].[Tbl_PFExcel] c on  b.[PartNumber] like '%'+c.pf_id+'%'where a.[EntityName] like '%PTA' AND a.[RequestDate] between '2015-04-20 00:00:00.000' AND GETDATE() ";
        SqlConnection conn = new SqlConnection(sqlConnectionString);
        conn.Open();
        SqlCommand comm = new SqlCommand(script, conn);
        comm.ExecuteNonQuery();
        conn.Close();
    }

我想对服务器执行此命令,以便每次访问页面时都会加载数据库。

comm.ExecuteNonQuery()

附加:

  

System.Data.dll中出现'System.Data.SqlClient.SqlException'类型的异常,但未在用户代码中处理

     

其他信息:超时已过期。在完成操作之前经过了超时时间,或者服务器没有超时   responding.`

Line 21:             conn.Open();
Line 22:             SqlCommand comm = new SqlCommand(script, conn);
Line 23:             **comm.ExecuteNonQuery();**
Line 24:             conn.Close();
Line 25:         }

这是它给出的错误..有什么帮助吗?

1 个答案:

答案 0 :(得分:2)

看看这个并告诉我这是否适合你 - 我已经添加了一个try catch来检查命令是否超时。

只有一些提示:

我总是会尝试使用try catch,因为它会准确地告诉您需要了解的内容以及您的代码无法正常工作的原因。

此外,我总是使用using语句,因为using语句只是确保处理非托管资源,它们无法处理异常。

另外,SqlCommand实现IDisposable,因此我建议将其放在使用块中。

protected void Page_Load(object sender, EventArgs e)
{
   using (SqlConnection conn = new SqlConnection("Data Source=phriz-webapp01;Initial Catalog=PFTracking;Integrated Security=True";))
   {
      conn.Open();
      string script = "if not exists(select * from sys.servers where name=N'CNCTC-WEB01')begin exec sp_addlinkedserver @server='CNCTC-WEB01'exec sp_addlinkedsrvlogin 'CNCTC-WEB01','false',null,'svc_Phils','Apple@6' end INSERT INTO [PFTracking].[dbo].[TempTable] SELECT c.[pf_id],a.[RequestDate],c.[pf_carrierUsed],b.[PiecePrice] * b.[PartQuantity] as [Amount] ,c.[pf_type],c.[pf_resSupplier] ,c.[pf_resCustomer],c.[pf_trailerNum] ,b.[PartDesc]  ,c.[pf_chargeBack]  ,c.[pf_chargetoPlant] FROM [CNCTC-WEB01].[NOP_PR].[dbo].[Requests] a JOIN [CNCTC-WEB01].[NOP_PR].[dbo].[Parts] b on a.[RequestID] = b.[RequestID] JOIN [PHRIZ-WEBAPP01].[PFTracking].[dbo].[Tbl_PFExcel] c on  b.[PartNumber] like '%'+c.pf_id+'%'where a.[EntityName] like '%PTA' AND a.[RequestDate] between '2015-04-20 00:00:00.000' AND GETDATE() ";

      using (var comm = new SqlCommand(script, conn))
      {
        // Setting command timeout to 2 minutes
        comm.CommandTimeout = 120;
        try 
        {
           command.ExecuteNonQuery();
        }
        catch (SqlException e) 
        {
           Console.WriteLine("Got expected SqlException due to command timeout ");
           Console.WriteLine(e);
        }
      }
      conn.Close();
   }
}