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

2016-02-19 16:04 4 1 收藏

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

【 tulaoshi.com - 编程语言 】

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

图一

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

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

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

   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:来连接,如图二。

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

图二

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

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

  DROP TRIGGER BadLogonTrigger ON ALL SERVER;

  GO

来源:https://www.tulaoshi.com/n/20160219/1611009.html

延伸阅读
触发器是数据库应用中的重用工具,它的应用很广泛。这几天写一个化学数据统计方面的软件,需要根据采样,自动计算方差,在这里,我使用了触发器。 下面我摘录了SQL Server官方教程中的一段关于触发器的文字,确实有用的一点文字描述。 可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。 当触发INSERT触发器时,新的...
标签: SQLServer
触发器是数据库应用中的重用工具,它的应用很广泛。这几天写一个化学数据统计方面的软件,需要根据采样,自动计算方差,在这里,我使用了触发器。可以定义一个无论何时用INSERT语句向表中插入数据时都会执行的触发器。当触发INSERT触发器时,新的数据行就会被插入到触发器表和inserted表中。inserted表是一个逻辑表,它包含了已经插入的数据行...
你可能了解以前的USERENV函数,它返回会话值,如用户会话ID、语言、以及用户是否拥有数据库管理员权限。虽然由于遗留原因,USERENV函数仍在使用,但在Oracle 8i中,它已被一个新的函数所替代——SYS_CONTEXT。 SYS_CONTEXT不仅能够返回USERENV数据——它还能返回应用程序定义的数据值。应用程序上下文包括一组可以被SYS_CONTEXT返回的名称...
在一些朋友安装完SQL Server 2008之后大多会遇到连接出错的问题。特别对于我们这样的新手而言简直郁闷的要死,好不容易装玩了又出现了问题。此篇文章意在解决安装步骤没有问题,但安装后无法登录的问题。 在解决问题之前请朋友们打开服务窗口,看“SQL Server”主服务是否打开,如下图。 若服务已经打开还是用“SQL Server 身份验证”和“...

经验教程

396

收藏

28
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部