--最好有DBA 来处理权限问题.因为DBA有足够的权限为不同用户处理权限和角色--怎样设置全文检索?它是一个配置过程,不是简单设置就可以了.或者用脚本可以实现全文检索的查询.

解决方案 »

  1.   

    --作好SQL的安全管理
    --作者:邹建
    --管好sql的用户,防止访问他不该访问的数据库(总控制,明细还可以控制他对于某个数据库的具体对象具有的权限)  
     
    --切换到你新增的用户要控制的数据库  
    use  你的库名  
    go  
     
    --新增用户  
    exec  sp_addlogin  'test'            --添加登录  
    exec  sp_grantdbaccess  N'test'            --使其成为当前数据库的合法用户  
    exec  sp_addrolemember  N'db_owner',  N'test'            --授予对自己数据库的所有权限  
     
    --这样创建的用户就只能访问自己的数据库,及数据库中包含了guest用户的公共表  
    go  
     
    --删除测试用户  
    exec  sp_revokedbaccess  N'test'            --移除对数据库的访问权限  
    exec  sp_droplogin  N'test'            --删除登录  
    如果在企业管理器中创建的话,就用:企业管理器--安全性--右键登录--新建登录常规项
    --名称中输入用户名
    --身份验证方式根据你的需要选择(如果是使用windows身份验证,则要先在操作系统的用户中新建用户)
    --默认设置中,选择你新建的用户要访问的数据库名服务器角色项
    这个里面不要选择任何东西数据库访问项
    勾选你创建的用户需要访问的数据库名
    数据库角色中允许,勾选"public","db_ownew"确定,这样建好的用户与上面语句建立的用户一样 ----------------------------------------------------------------为具体的用户设置具体的访问权限,这个可以参考下面的最简示例: 
     
    --添加只允许访问指定表的用户:  
    exec  sp_addlogin  '用户名','密码','默认数据库名'  
     
    --添加到数据库  
    exec  sp_grantdbaccess  '用户名'
     
    --分配整表权限  
    GRANT  SELECT ,  INSERT ,  UPDATE ,  DELETE  ON table1 TO [用户名]--分配权限到具体的列
    GRANT  SELECT ,  UPDATE  ON table1(id,AA) TO [用户名]
      

  2.   

    全文检索配置示例:
    (常见问题参考我的帖子: http://community.csdn.net/Expert/TopicView.asp?id=3295983)--建测试库
    create database test collate Latin1_General_CI_AS
    go--切换到测试库
    use test
    go--创设测试表
    create table tb (ID int identity not null,a nvarchar(10),b varchar(10),constraint PK_tb primary key(id))
    go--为全文索引启用数据库
    exec sp_fulltext_database 'enable'--创建一个叫My_FullDif的全文目录
    exec sp_fulltext_catalog 'My_FullDir', 'create' --为全文索引标记表
    exec sp_fulltext_table 'tb','create','My_FullDir','PK_tb'--创建全文索引
    exec sp_fulltext_column 'tb','a','add',0x0804
    exec sp_fulltext_column 'tb','b','add',0x0804
    go--插入数据(注意插入数据时,字段类型及N前导符对最终查询结果的影响)
    insert tb select  '中国营农场', '中国营农场'
    union all select N'中国营农场',N'中国营农场'
    union all select  '中国营农场',N'中国营农场'
    union all select N'中国营农场', '中国营农场'
    go
    --填充全文索引
    exec sp_fulltext_table 'tb','start_full'--填充全文索引后,有一定的延迟时间才会生效,所以要延时
    waitfor delay '00:00:10'
    go--查询
    select * from tb where contains(a,'"国营"')
    select * from tb where contains(b,'"国营"')
    select * from tb where contains(a,N'"国营"')
    select * from tb where contains(b,N'"国营"')select * from tb
    go--删除测试
    use master
    godrop database test
    /*--测试结果ID          a          b          
    ----------- ---------- ---------- 
    4           中国营农场      ?????
    2           中国营农场      ?????(所影响的行数为 2 行)ID          a          b          
    ----------- ---------- ---------- (所影响的行数为 0 行)ID          a          b          
    ----------- ---------- ---------- 
    4           中国营农场      ?????
    2           中国营农场      ?????(所影响的行数为 2 行)ID          a          b          
    ----------- ---------- ---------- (所影响的行数为 0 行)--*/
      

  3.   

    好详细啊 真的谢谢不过也惭愧里面有些地方看不懂 平时接触较多的是增修查删四种语句 !exec还看不懂是什么意思?
      

  4.   

    记起来了 exec是关于存储过程的 但一直不了解
      

  5.   

    exec  sp_revokedbaccess  N'test'            
    exec  sp_droplogin  N'test'  这两句话中'N'表示什么含义啊,sql帮助中没有提到啊