用户代码未处理SqlException。 (全文索引)

时间:2013-04-03 19:17:10

标签: asp.net vb.net sql-server-2012 ssms full-text-indexing

我正在使用vs 2012 Professional和SQL-Server 2012 Express。

我试图运行Admin.aspx,它有一个文本框来搜索数据库中的用户。

但是,每次我尝试搜索用户名时都会收到此错误

Cannot use a CONTAINS or FREETEXT predicate on table or indexed view 'users' because it is not full-text indexed.

从我搜索的全文索引需要启用,在我的情况下,它在SQL Server Management Studio中显示为灰色,在Express版本中不可用(???)。

我怎么能解决这个问题?

Admin.aspx

Imports System.Data.SqlClient

Partial Class Admin
    Inherits System.Web.UI.Page

    Protected Sub btnSearchUser_Click(sender As Object, e As EventArgs) Handles btnSearchUser.Click

        Dim conn As New SqlConnection("Data Source=BRIAN-PC\SQLEXPRESS;Initial Catalog=master_db;Integrated Security=True")
        Dim searchComm As String = "SELECT username FROM users WHERE CONTAINS (username, @username)"

        Dim searchSQL As New SqlCommand

        conn.Open()

        searchSQL = New SqlCommand(searchComm, conn)
        searchSQL.Parameters.AddWithValue("@username", txtUserSearch.Text)

        Dim datareader As SqlDataReader = searchSQL.ExecuteReader()

        While datareader.Read

            lstUsers.Items.Add(datareader.Item("username"))

        End While



        datareader.Close()
        conn.Close()

    End Sub
End Class

如您所见,用户在搜索框中输入用户名,并且对于包含文本框输入内容的每个记录,都会将其添加为列表框中的项目。

2 个答案:

答案 0 :(得分:1)

我不相信你需要全文搜索来检查用户名中的相等性。您认为可以使用以下代替CONTAINS吗?

SELECT username FROM dbo.users WHERE username = @username;

如果您绝对觉得需要全文搜索,那么:

  1. 您需要具有高级服务的Express Edition;我不认为Visual Studio附带该版本。您可以download that hereSQLEXPRADV_x64_ENU.exe)。
  2. 您需要使用DDL来创建全文目录和索引as I point out in this answer,因为bugs in the UI that still seem to have gone unresolved。如果你下载(1)你将拥有一个版本的Management Studio Express,可能有修复但肯定会完全正常运行(SP1版本是SSMS Express的第一个版本,具有所有功能完整版,这可以解释为什么它是灰色的。)
  3. 示例:

    CREATE FULLTEXT CATALOG my_catalog;
    GO
    CREATE FULLTEXT INDEX 
      ON dbo.users(username LANGUAGE 1033) 
      KEY INDEX uq_un ON my_catalog;
    

答案 1 :(得分:0)

全文索引至少需要SQL Server Express使用高级服务,标准Express版本不具备全文索引功能。

然后您可以创建全文目录和索引,有关详细信息,请参阅以下链接:

Create and Manage Full-Text Indexes