2013-04-03 2 views
0

J'utilise vs 2012 Professional et SQL-Server 2012 Express.SqlException n'a pas été gérée par le code utilisateur. (Index du texte intégral)

J'essayais d'exécuter Admin.aspx, qui a une zone de texte pour rechercher des utilisateurs dans une base de données.

Cependant, chaque fois que j'essaie de rechercher un nom d'utilisateur Je reçois cette erreur

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

D'après ce que je recherche l'indexation en texte intégral doit être activé, pour qui dans mon cas, il est grisé dans SQL Server Management Studio et non disponible (???) dans l'édition Express.

Comment puis-je surmonter ce problème?

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 

Comme vous pouvez le voir, l'utilisateur saisit un nom d'utilisateur dans le champ de recherche, et pour chaque enregistrement qui contient les mots de l'entrée est ajouté comme zone de texte un élément dans la liste.

Répondre

1

Je ne suis pas convaincu que vous avez besoin de recherche en texte intégral pour vérifier l'égalité dans un nom d'utilisateur . Pensez-vous que vous pourriez utiliser ce qui suit au lieu de CONTAINS?

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

Si vous vous sentez absolument vous avez besoin de recherche en texte intégral, puis:

  1. Vous avez besoin Express Edition avec Advanced Services; Je ne pense pas que Visual Studio soit livré avec cette édition. Vous pouvez download that here (SQLEXPRADV_x64_ENU.exe).
  2. Vous devez utiliser DDL pour créer votre catalogue et index en texte intégral, as I point out in this answer, car il y a bugs in the UI that still seem to have gone unresolved. Si vous téléchargez (1) vous aurez une version de Management Studio Express que pourrait avoir avoir des correctifs mais sera certainement entièrement fonctionnel (la version SP1 était la première version de SSMS Express qui a toutes les fonctionnalités de la version complète, qui peut expliquer pourquoi il est grisé).

Exemple:

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

L'indexation de texte complet requiert au moins SQL Server Express avec services avancés, l'édition standard standard n'a pas la capacité d'indexation de texte intégral.

Ensuite, vous pouvez créer vos catalogues en texte intégral et index, consultez le lien suivant pour plus d'informations:

Create and Manage Full-Text Indexes

Questions connexes