1:不让别人知道用户和密码
2:在登录时检测客户端电脑名或IP
  a: 电脑名 host_name()
  b: IP
http://expert.csdn.net/Expert/topic/2333/2333320.xml?temp=3.585452E-02
/************* IP  **************/
declare @ip varchar(20),@hst varchar(20),@sql varchar(100)
declare @str varchar(100)
set @str='PING '+Host_Name()
create table #tmp(aa varchar(200))
--insert #tmp exec master..xp_cmdshell 'ping tsql'
insert #tmp exec master..xp_cmdshell @str
select top 1 @ip = replace(left(aa,charindex(':',aa)-1),'Reply from ','') 
   from #tmp where aa like 'reply from %:%'
drop table #tmp
select @ip

解决方案 »

  1.   

    用sql server认证
    建立相应的登陆用户名和密码,并为他分配一定的权限即可
    其他人,根本就不可能让他知道密码
      

  2.   

    企业管理器-->右键你的实例(就是那个有绿色图标的)-->属性-->安全-->改为sql与window混合
      

  3.   

    1:不让别人知道用户和密码
    -----
    首先这点因为已经不能够修改了,牵涉到好多好多的系统连接文件,所以不能够修改。用sql server认证
    建立相应的登陆用户名和密码,并为他分配一定的权限即可
    其他人,根本就不可能让他知道密码
    -----
    这样做是可以,但是我的主要的目的是为了防止有人知道用户名密码以后登陆而不是我自己访问。
      

  4.   

    企业管理器-->右键你的实例(就是那个有绿色图标的)-->属性-->安全-->改为sql与window混合
    已经是这样的了当我在家里登陆服务器的时候,我要让服务器来得到我的电脑的主机名与ip地址,并且识别是不是可以登陆,如果不行就登陆不了。
    declare @ip varchar(20)
    declare @str varchar(100)
    --set @str='PING '+Host_Name()
    create table #tmp(aa varchar(200))
    insert #tmp exec master..xp_cmdshell 'ping tsql'
    --insert #tmp exec master..xp_cmdshell @str
    select top 1 @ip = replace(left(aa,charindex(':',aa)-1),'Reply from ','') 
       from #tmp where aa like 'reply from %:%'
    drop table #tmp
    select @ip
    这段代码可以让服务器ping tsq1,但是我家里的tsql是多少呢?而且是内网,怎么办啊?
      

  5.   

    这个已经不是SQL可以做到的事了建议转版吧.
      

  6.   

    你可以在防火墙上过滤不允许访问的IP 
    如果你还觉得不够安全,就用WIN2000的VPN加域验证