巧用DAC解决SQL Server登录失败的问题

数据库 SQL Server
在服务器上连接SQL Server数据库时,使用Windows身份登录,提示错误“无法连接到机器名\实例名”,如果在另一台服务器上也无法连接成功,这时我们可以巧用DAC来操作,让客户端成功登录数据库服务器。本文详细说明了这一过程,请读者学习参考。

连接SQL Server数据库的时候,使用window身份登录,提示连接失败,我们这时候可以巧用DAC登录来解决,首先对登录失败过程进行了说明,以便于我们找出原因。

为了安全,我把sa用户设置为禁用,又因为我想在数据库服务器上控制,只允许固定IP地址连接访问,所以建立了一个触发器,如下:

  1. USE master    
  2.  
  3. GO    
  4.  
  5. CREATE TRIGGER tr_LoginCheck    
  6.  
  7. ON ALL SERVER    
  8.  
  9. FOR LOGON    
  10.  
  11. AS    
  12.  
  13. IF EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)') <> '192.168.1.1'    
  14.  
  15. ROLLBACK TRAN    
  16.  
  17. GO 

允许的IP地址是另一台服务器的IP地址,执行该触发器后,当我在服务器上使用Windows身份登录的时候,提示错误“无法连接到机器名\实例名”,其他信息:由于执行触发器,登录名“机器名\用户”的登录失败。已将数据库上下文更改为“master”。已将语言设置更改为简体中文(Microsoft SQL Server,错误:17892)。

而我在另一台服务器上登录时,因为登录帐号只能访问SQL 服务器某一个数据库,所以登录的时候也出现错误:

无法连接到服务器XXX.XXX.XXX.XXX。

服务器:消息4064,级别16,状态1。

[Microsoft][ODBC SQL Server Driver][SQL Server]无法打开用户默认数据库。登录失败。

各种提问,某大神告诉我用DAC登录,老实说,孤陋寡闻了,第一次知道这个,于是本机登录,命令行方式下执行sqlcmd -A -S sql服务器名,然后执行删除触发器的脚本:

  1. DROP TRIGGER  tr_LoginCheck ON ALL SERVER 

但是诡异的是有错误提示“消息 3701,级别 11,状态 5,服务器 XXX,第 1 行 无法对触发器'tr_LoginCheck' 执行删除,因为它不存在,或者您没有所需的权限。”

执行:

  1. select * from sys.server_triggers 

却又没有结果,尝试着用客户端登录,却又可以登录了。

以上就是用DAC实现登录的过程,如果你有更好的解决办法,欢迎您与我们分享,谢谢!

【编辑推荐】

  1. SQL Server如何动态生成分区脚本
  2. SQL Server 2008操作宝典之实例解析
  3. SQL经典:T-SQL中的透视和逆透视解析
  4. 如何将系统监视器数据记录到SQL Server
  5. 浅述SQL Server的Replication技术创建技巧
责任编辑:赵鹏 来源: 博客园
相关推荐

2010-11-10 10:09:40

2010-11-08 14:32:00

SQL Server登

2018-12-26 09:25:30

SQL ServerSQL语句数据库

2010-10-22 14:20:35

SQL SERVER连

2010-09-16 17:56:31

SQL server临

2021-01-05 08:12:42

SQL日期Spt

2010-11-10 13:42:32

SQL Server删

2010-09-03 11:05:59

SQL删除

2010-11-09 17:09:23

SQL Server中

2018-12-25 14:40:04

SQL ServerSQL语句数据库

2010-06-29 17:04:37

SQL Server警

2010-07-23 09:44:51

2011-08-02 15:39:30

SQL Server iSql

2009-06-10 16:43:52

Eclipse添加Tomcat Se

2010-06-30 14:15:08

SQL Server死

2011-08-04 18:55:53

SQL Server 用户sa登录失败

2010-10-19 13:05:31

Sql Server远

2010-08-03 09:41:14

GroupSQL Server

2021-03-10 07:20:42

Redis命令数据

2010-09-14 13:30:28

sql server备
点赞
收藏

51CTO技术栈公众号