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

梦幻lonly

梦幻lonly

2016-02-19 16:04

下面是个简单易学的在登录触发器错误情况下连接SQL Server教程,图老师小编详细图解介绍包你轻松学会,喜欢的朋友赶紧get起来吧!

  如果你创建了一个登录触发器,并且在这个触发器中有一些不好的代码,那么当你尝试着登录时,你将会得到一个类似于图一显示的错误:

图一

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

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

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

  没有一个数据库称为BadDB,这意味着在BadDB内也没有一张表叫SomeTable。因此,任何登录到该服务器的正常尝试都会失败,因为这个触发器涉及到一个不存在的对象。为了纠正这一问题,你也需要:

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

  使用一个现有的建立连接,该连接拥有合适的权限。

  使用专用管理员连接(DAC)连接SQL Server。

  如果你现有的一个连接可以删除触发器或者使触发器不可用,那么请使用现有的连接来纠正这个问题。但是可能在一些情况下,你的连接没有这种功能,那么你需要依赖专用管理员连接。

  默认情况下,这个专用管理员连接只能在本地服务器中使用。这就意味着,你需要通过登录到本地计算机或者使用另一种方式如远程桌面来连接。一旦你登录了,你就可以使用SQLCMD或者SSMS。

  如果你使用SQLCMD,你要通过该专用管理员连接指定一个-A开关来连接。如果你通过SSMS连接,那么要确定通过在服务器名前面指定ADMIN:来连接,如图二。

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

图二

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

  例如,一旦通过DAC连接,我就可以执行下面的命令来完全摆脱这个触发器:

  DROP TRIGGER BadLogonTrigger ON ALL SERVER;

  GO

展开更多 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刺客新符文搭配推荐

用VS2005制造WEB安装程序

用VS2005制造WEB安装程序

ajax 文件上传应用简单实现

ajax 文件上传应用简单实现
下拉加载更多内容 ↓