MSSQL 由于执行触发器,登录名xxx的登录失败
由于编写了服务器级别的触发器,执行触发器时发生了错误导致。
刚才想实现一个服务器级别的登录触发器,结果由于触发器没写好,导致登录任何帐号都失败。
差点就需要重装服务器了!
解决办法:
以最小模式启动MS SQLSERVER,详细步骤如下:

找到它,打开后:
在高级-启动参数里加上 ";-f;-m"两个参数:

然后重新启动SQL SERVER实例。
此时,就需要您的运气了。如果你的错误的触发器里带了 with 'sa'这样的参数启动,这时候您必须要记得sa的密码,否则,我也不知道怎么办!因为当您用任何其它的管理员帐号登录,都会提示“用户xxx登录失败。原因:服务器处于单用户模式。目前只有一位管理员能够连接。”。
我一般只用我自己的帐户登录,sa密码早就不知道丢哪去了。。。。(幸运的是我在桌面上保存了)
然后,我就一直用我自己的帐户登录,都没法登录。
在我快要崩溃的时候,都要准备去重装数据库的时候,幸运的是,我在服务器桌面上竟然保存了我的sa密码,而且这个密码竟然是没有被我在某个时候改掉的!
但是,此时还没完,因为我也不知道是哪里设置不对,导致用sa登录时,还是提示错误,大概的意思是“sa已登录,但由于什么共享内存什么的。。。错误”,由于当时心情不好,也没截图,现在也不敢再试了,所以这里没图。
由于登录时还是出现错误,导致没法从服务器管理界面里找到触发器进行禁用。
此时,在不登录的情况下,直接点“新建查询”,会弹出来一个登录,此时幸运的话,可以弹出来一个已经登录了sa帐号的新建查询的窗口。

输入以下命令:
disable trigger all on all server;
运行,提示运行成功!
成功禁止了过后,再把服务器管理器里的 ;-f;-m 两个参数去掉,重启实例后,就可以成功登录了!
网上还有另外一种解决办法,不过我没试:
可以使用SQLSERVER的专用管理员连接(DAC)连接进服务器,并把触发器先删除掉
转载请注明 : 文章转载自不了阁-飞哥 blog.forbs.cn
本站文章除注明转载/出处外,均为本站原创或翻译。若要转载务必注明出处,尊重他人劳动成果共创和谐网络环境。





