该
错误如图所示。
图1
如果不能很好地
执行登录触发器,则会导致登录失败。
例如,如果
创建了此触发器,则可以设计以下代码以实现失败的
目标。
复制代码代码如下所示:
创建登录所有
服务器TRIGGER BadLogonTrigger
作为
开始
插入baddb.dbo.sometable值(测试);
结束;
去
没有数据库被称为baddb,这意味着没有一个表称为有在baddb。因此,任何正常的尝试登录到服务器会失败因为触发是一个不存在的对象。为了
解决这个问题,你还需要:
使用具有
正确权限的现有构建
连接。
使用专用
管理员连接(DAC)连接到SQL服务器。
如果您现有的连接中有一个可以
删除触发器或触发器不可用,则使用现有的连接来纠正此问题。但在某些
情况下,您的连接不具有此
功能,因此您需要依赖一个专用的管理员来连接。
默认情况下,专用管理员连接只能用于
本地服务器。这意味着你需要登录到本地
计算机或使用其他方式,如远程
桌面连接。一旦你登录,您可以使用sqlcmd或SSMS。
如果你使用sqlcmd,你想和一个开关通过专用管理员连接。如果连接的问题,一定要通过指定管理员连接:在服务器名称的前面,如图2。
图2
这是因为SQL Server减少
检查和资源连接的连接通过专用管理员连接。这种
方法给数据库管理员后门时,一个或多个
进程消耗了SQL Server,导致登录不正常。一个SQL Server不做时,SQL Server连接执行任何登录触发器。所以,你可以使用DAC,你不会被这个坏引发堵塞。然后,如果你需要,你可以让这个触发不使用或删除触发器。
例如,一旦连接到DAC,我就可以执行下面的
命令来完全消除这个触发器:
复制代码代码如下所示:
把TRIGGER BadLogonTrigger所有的服务器;
去