使用DAC登录数据库,执行操作命令

首先说明事件缘由,为了安全,我把sa用户设置为禁用,又因为我想在数据库服务器上控制,只允许固定IP地址连接访问,所以建立了一个触发器,如下:
USE master 
GO 
CREATE TRIGGER tr_LoginCheck 
ON ALL SERVER 
FOR LOGON 
AS 
IF EVENTDATA().value('(/EVENT_INSTANCE/ClientHost)[1]', 'varchar(15)') <> '192.168.1.1' 
ROLLBACK TRAN 
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 服务器名

然后执行删除触发器的脚本

DROP TRIGGER  tr_LoginCheck ON ALL SERVER

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

执行select * from sys.server_triggers,却又没有结果,尝试着用客户端登录,却又可以登录了


在处理此问题中,进过google,借鉴了如下3篇博文

http://www.cnblogs.com/Jasmin/archive/2007/12/29/1020233.html

 

http://www.xueit.com/html/2009-05/26_2051_00.html

 

http://www.bianceng.cn/database/SQLServer/200912/12764.htm

转载于:https://www.cnblogs.com/ffufeng/archive/2011/07/10/2102059.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值