System.Data.SqlClient.SqlException:''不是公认的内置函数名称

时间:2015-09-17 13:09:40

标签: asp.net

以下是我遇到的错误:

Server Error in '/pi' Application.

'Dexsys' is not a recognized built-in function name.

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.Data.SqlClient.SqlException: 'Dexsys' is not a recognized built-in function name.

Source Error: 


Line 108:        Dim dsTop1 As New DataSet
Line 109:        Dim daTop1 As New SqlDataAdapter(strSQL3, cnIT3)
Line 110:        daTop1.Fill(dsTop1)
Line 111:        cnIT3.Close()
Line 112:

Source File: C:\inetpub\wwwroot\pi\admin\rptSummary.aspx.vb    Line: 110 
Stack Trace: 


[SqlException (0x80131904): 'Dexsys' is not a recognized built-in function name.]
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +1789294
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5340642
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +244
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +1691
System.Data.SqlClient.SqlDataReader.TryConsumeMetaData() +61
System.Data.SqlClient.SqlDataReader.get_MetaData() +90
System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +377
System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async, Int32 timeout, Task& task, Boolean asyncWrite, SqlDataReader ds) +1421
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean asyncWrite) +177
System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +53
System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +137
System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior) +41
System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +10
System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +140
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +316
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet) +88
admin_history.getTimes() in C:\inetpub\wwwroot\pi\admin\history.aspx.vb:109
admin_history.Page_Load(Object sender, EventArgs e) in C:\inetpub\wwwroot\pi\admin\history.aspx.vb:217
System.Web.UI.Control.OnLoad(EventArgs e) +92
System.Web.UI.Control.LoadRecursive() +54
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +772

Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.34212

以下是导致问题的函数:

Private Sub getTimes()
    Dim strSQL3 As String = "select datetimestamp, cast(datepart(yyyy, datetimestamp) as varchar(4))  + '-' + cast(datepart(mm, datetimestamp) as varchar(2)) + '-' + cast(datepart(dd, datetimestamp) as varchar(2))  as yyyyddmm, datepart(hh,datetimestamp) * 3600 + datepart(mm,datetimestamp) * 60 as protime, datepart(hh,datetimestamp) * 3600 + datepart(mm,datetimestamp)  + 18000 as protimeplus5 from dex_racklabels.dbo.inv_master where recid = " & Session("INVID")

    Dim cnIT3 As New SqlConnection
    cnIT3.ConnectionString = ConfigurationManager.ConnectionStrings("csracklabels").ConnectionString
    cnIT3.Open()

    Dim dsTop1 As New DataSet
    Dim daTop1 As New SqlDataAdapter(strSQL3, cnIT3)
    daTop1.Fill(dsTop1)
    cnIT3.Close()

    If dsTop1.Tables(0).Rows.Count > 0 Then
        Session("intTm1") = dsTop1.Tables(0).Rows(0).Item("protime")
        Session("inttm2") = dsTop1.Tables(0).Rows(0).Item("protimeplus5")
        Session("yyyyddmm") = dsTop1.Tables(0).Rows(0).Item("yyyyddmm")
        Session("datetimestamp") = dsTop1.Tables(0).Rows(0).Item("datetimestamp")
    End If
End Sub

所以我试图谷歌这个问题,似乎总是我们将一些愚蠢的东西传递给SQL而不被认为是一种功能....但我怎么得到' Dexsys&#39 ;当我在这个功能中没有这样的东西时?

此外,当我删除strSQL3并将其放入SQL并运行它...它运行正常...它可能是最后的位置?如何停止代码并在变量中显示值:Session(" INVID")...我习惯于只能做response.write(Session(" INVID&#34) ;))然后是response.end()......

我已经多次遇到这个问题,并且非常想了解如何纠正它以及它为什么会发生。谢谢。

2 个答案:

答案 0 :(得分:1)

想出来......

1)我可以使用response.write和response.end lol ...愚蠢的我没有真正尝试过......

2)Dexsys(2015-9-16)是Session Varaible中的内容......因此内置函数的错误!

答案 1 :(得分:0)

嗯,我猜你的问题是你的Session(" INVID")你可以使用调试模式来检查Visual Studio中的变量名称,或者在调试会话中显示它

Debug.Writeline(strSQL3)
'or
Console.WriteLine(strSQL3)

您还可以在Try Catch Exception中包装该函数,以便更好地检查正在发生的错误。您还可以获取特定版本的Exception以查找更多信息。

喜欢这个

    Try
        'your code goes here.
    Catch ex As SqlException
       throw
    End Try