2013-04-03 42 views
0

我正在使用vs 2012 Professional和SQL Server 2012 Express。SqlException未被用户代码处理。 (全文索引)

我试图运行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 

正如你可以看到,用户输入在搜索框一个用户名,以及用于包含从文本框中输入字的每个记录被添加作为在列表框的项。

回答

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的第一个版本,具有完整版本的所有功能,可能会解释为什么它变灰)。

实施例:

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

全文索引至少需要SQL Server Express的高级服务,标准的Express版本没有全文索引的能力。

然后你就可以创建你的全文目录和索引,请参见下面的链接了解更多信息:

Create and Manage Full-Text Indexes

相关问题