it-swarm.com.de

Die Anmeldung für die Anmeldung ist aufgrund der Triggerausführung fehlgeschlagen

Ich habe versucht, mich mit einem meiner sql server logins Anzumelden, erhalte jedoch die folgende Fehlermeldung:

Allgemeine Fehlermeldung

(enter image description here

Nachrichtentext kopieren

TITLE: Connect to Server
------------------------------

Cannot connect to MY_SERVER.

------------------------------
ADDITIONAL INFORMATION:

Logon failed for login 'cola' due to trigger execution.
Changed database context to 'master'.
Changed language setting to us_english. (Microsoft SQL Server, Error: 17892)

For help, click: http://go.Microsoft.com/fwlink?> ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=17892&LinkId=20476

------------------------------
BUTTONS:

OK
------------------------------

Erweiterte Informationen

(enter image description here

Ich bin mir der folgenden Frage bewusst, aber sie ist etwas anders und ich habe alles versucht, was dort gesagt wird, und es hat bei mir nicht funktioniert. Deshalb stelle ich diese Frage hier:

"Die Anmeldung für die Anmeldung 'sa' ist aufgrund der Ausführung des Auslösers fehlgeschlagen." Wenn Nein SA Anmeldeauslöser definiert

Diese Frage ist auch hier sehr ähnlich:

Anmeldung für Benutzer fehlgeschlagen - Fehler: 18456, Schweregrad: 14, Status: 38

Und von diesem habe ich folgende Infos bekommen:

Anmeldung für Benutzer fehlgeschlagen - Fehler 18456 - Schweregrad 14, Status 38

1      'Account is locked out'
2      'User id is not valid'
3-4    'Undocumented'
5      'User id is not valid'
6      'Undocumented'
7      'The login being used is disabled'
8      'Incorrect password'
9      'Invalid password'
10     'Related to a SQL login being bound to Windows domain password policy enforcement.
        See KB925744.'
11-12  'Login valid but server access failed'
16     'Login valid, but not permissioned to use the target database'
18     'Password expired'
27     'Initial database could not be found'
38     'Login valid but database unavailable (or login not permissioned)'

Nach den obigen Informationen habe ich das folgende Problem:

Anmeldung gültig, Serverzugriff jedoch fehlgeschlagen

Immer noch keine Freude.

Ich habe versucht, das Login zu löschen und neu zu erstellen, bin jedoch auf einen Login can not be dropped because it is in use Gestoßen.

Ich habe das folgende Skript verwendet, um where it is used, by whom, from where Herauszufinden:

USE master
go
SELECT 
        sdes.session_id 
       ,sdes.login_time 
       ,sdes.last_request_start_time
       ,sdes.last_request_end_time
       ,sdes.is_user_process
       ,sdes.Host_name
       ,sdes.program_name
       ,sdes.login_name
       ,sdes.status

       ,sdec.num_reads
       ,sdec.num_writes
       ,sdec.last_read
       ,sdec.last_write
       ,sdes.reads
       ,sdes.logical_reads
       ,sdes.writes

       ,sdest.DatabaseName 
       ,sdest.ObjName
    ,sdes.client_interface_name
    ,sdes.nt_domain
    ,sdes.nt_user_name
    ,sdec.client_net_address
    ,sdec.local_net_address
    ,sdest.Query
    ,KillCommand  = 'Kill '+ CAST(sdes.session_id  AS VARCHAR)
FROM sys.dm_exec_sessions AS sdes

INNER JOIN sys.dm_exec_connections AS sdec 
        ON sdec.session_id = sdes.session_id

CROSS APPLY (

                SELECT DB_NAME(dbid) AS DatabaseName
                    ,OBJECT_NAME(objectid) AS ObjName
                    ,COALESCE((
                            SELECT TEXT AS [processing-instruction(definition)]
                            FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle) 
                            FOR XML PATH('')
                                ,TYPE
                            ), '') AS Query

                FROM sys.dm_exec_sql_text(sdec.most_recent_sql_handle)

    ) sdest
WHERE sdes.session_id <> @@SPID 
--ORDER BY sdes.last_request_start_time DESC

Ich habe dann die 2 Sitzungen beendet, die Anmeldung neu erstellt, es erneut versucht, der gleiche Fehler.

Was vermisse ich?

2

Gemäß den Screenshots, die Sie gepostet haben, tritt ein Fehler 17892 auf, der ungefähr zu einem Anmeldeauslöserfehler führt.

Möglicherweise hatten Sie zuvor einen Anmeldetrigger, der ausgewertet hat, ob Sie sich beim SQL Server anmelden durften oder nicht. Dieser Auslöser wurde möglicherweise entfernt oder führt zu falschen Ergebnissen, sodass sich jetzt niemand mehr bei der SQL Server-Instanz anmelden kann.

Es gibt drei mögliche Problemumgehungen:

1. Öffnen Sie das verfügbare Abfragefenster

Suchen Sie nach dem Auslöser über:

SELECT * FROM sys.server_triggers;

Wenn Sie einen Trigger auf Serverebene sehen, der möglicherweise für die Anmeldeprobleme verantwortlich ist, können Sie ihn löschen mit:

DROP TRIGGER triggername ON ALL SERVER;

Anstatt den Auslöser fallen zu lassen, deaktivieren Sie ihn einfach mit:

DISABLE TRIGGER triggername ON ALL SERVER;

2. DAC erlaubt; Kein geöffnetes Abfragefenster verfügbar

Wenn Sie kein geöffnetes Abfragefenster haben, müssen Sie sich mit einer DAC-Verbindung (ADMIN) bei Ihrer SQL Server-Instanz anmelden:

sqlcmd –S 127.0.0.1,1434 

1434 ist der Standardport für die DAC-Verbindung

Anschließend können Sie die obigen Abfragen in Lösung 1 ausführen, um den Auslöser zu ermitteln und den Auslöser dann zu löschen oder zu deaktivieren.

3. Kein geöffnetes Abfragefenster; Kein DAC erlaubt

Wenn Sie kein geöffnetes Fenster haben und der DAC nicht aktiviert wurde, müssen Sie die Instanz stoppen und mit den folgenden Schritten erneut starten:

sqlserver.exe –c -m –f

Auf diese Weise können Sie die Instanz im Einzelbenutzermodus mit minimaler Konfiguration und kürzerer Startzeit starten.

Dann können Sie die Trigger gemäß Schritt 1 oben deaktivieren.

3