0

我正在使用 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 版中不可用 (???)。

我怎样才能克服这个问题?

管理员.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

如您所见,用户在搜索框中输入用户名,并且对于包含来自文本框输入的单词的每条记录,都将作为项目添加到列表框中。

4

2 回答 2

1

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

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

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

  1. 您需要具有高级服务的 Express Edition;我不认为 Visual Studio 附带该版本。您可以在此处下载( SQLEXPRADV_x64_ENU.exe)。
  2. 正如我在这个答案中指出的那样,您需要使用 DDL 来创建全文目录和索引,因为 UI中的错误似乎仍未解决。如果您下载 (1),您将拥有一个 Management Studio Express 版本,该版本可能有修复但肯定会完全正常运行(SP1 版本是 SSMS Express 的第一个版本,它具有完整版本的所有功能,这可能解释为什么它是灰色的)。

例子:

CREATE FULLTEXT CATALOG my_catalog;
GO
CREATE FULLTEXT INDEX 
  ON dbo.users(username LANGUAGE 1033) 
  KEY INDEX uq_un ON my_catalog;
于 2013-04-03T19:43:51.423 回答
0

全文索引至少需要 SQL Server Express With Advanced Services,标准 Express 版不具备全文索引功能。

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

创建和管理全文索引

于 2013-04-03T19:42:49.203 回答