在登录触发器错误情况下连接SQL Server的方法

各自安好就OK

各自安好就OK

2016-02-19 09:52

下面图老师小编要向大家介绍下在登录触发器错误情况下连接SQL Server的方法,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

错误如图所示:


图一

如果不能很好地执行登录触发器,那么将会导致登录失败。

例如,如果创建了这个触发器,那么就可以设计下面的代码来达到失败的目的。
代码如下:

CREATE TRIGGER BadLogonTrigger ON ALL SERVER FOR LOGON
AS
BEGIN
INSERT INTO BadDB.dbo.SomeTable VALUES ('Test');
END;
GO

没有一个数据库称为BadDB,这意味着在BadDB内也没有一张表叫SomeTable。因此,任何登录到该服务器的正常尝试都会失败,因为这个触发器涉及到一个不存在的对象。为了纠正这一问题,你也需要:
使用一个现有的建立连接,该连接拥有合适的权限。
使用专用管理员连接(DAC)连接SQL Server。
如果你现有的一个连接可以删除触发器或者使触发器不可用,那么请使用现有的连接来纠正这个问题。但是可能在一些情况下,你的连接没有这种功能,那么你需要依赖专用管理员连接。
默认情况下,这个专用管理员连接只能在本地服务器中使用。这就意味着,你需要通过登录到本地计算机或者使用另一种方式如远程桌面来连接。一旦你登录了,你就可以使用SQLCMD或者SSMS。
如果你使用SQLCMD,你要通过该专用管理员连接指定一个-A开关来连接。如果你通过SSMS连接,那么要确定通过在服务器名前面指定ADMIN:来连接,如图二。

图二
产生这种现象的原因是SQL Server通过专用管理员连接把对连接的检查和资源减到最少。当一个或多个进程消耗一个SQL Server而造成登录不能正常进行时,这种方法就给数据库管理员一个“后门”。当通过DAC连接时,SQL Server不做的一件事是执行任何登录触发器。因此,你可以使用DAC,你不会被这个不好的触发器所阻碍。然后如果需要,你可以使这个触发器不可用或者删除这个触发器。
例如,一旦通过DAC连接,我就可以执行下面的命令来完全摆脱这个触发器:
代码如下:

DROP TRIGGER BadLogonTrigger ON ALL SERVER;
GO

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)
展开更多 50%)
分享

猜你喜欢

在登录触发器错误情况下连接SQL Server

编程语言 网络编程
在登录触发器错误情况下连接SQL Server

在登录触发器错误情况下连接SQL Server的方法

编程语言 网络编程
在登录触发器错误情况下连接SQL Server的方法

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

SQL Server 2008中的代码安全(二) DDL触发器与登录触发器

编程语言 网络编程
SQL Server 2008中的代码安全(二) DDL触发器与登录触发器

SQL SERVER使用嵌套触发器

SQLServer
SQL SERVER使用嵌套触发器

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

浅谈SQL Server触发器的使用

编程语言 网络编程
浅谈SQL Server触发器的使用

SQL SERVER的行式触发器

编程语言 网络编程
SQL SERVER的行式触发器

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Linux安装Nodejs的三大方法

Linux安装Nodejs的三大方法

基于Java回顾之多线程同步的使用详解

基于Java回顾之多线程同步的使用详解
下拉加载更多内容 ↓