Dela via


Användare kanske inte kan fjärransluta till SQL Server med TCP/IP-protokoll

Den här artikeln hjälper dig att lösa problemet där du inte kan ansluta via fjärranslutning till SQL Server med TCP/IP-protokoll.

Ursprunglig produktversion: SQL Server
Ursprungligt KB-nummer: 2018930

Symptom

När du använder Microsoft SQL Server kan du se ett eller flera av följande symtom:

  • Endast de användare som har behörigheten KONTROLLSERVER (till exempel medlemmar i den fasta serverrollen syadmin ) kan ansluta via TCP/IP. Användare som inte har den här behörigheten kan inte fjärransluta via TCP/IP-protokoll med antingen Windows- eller SQL Server-autentisering.

    Kommentar

    Du kommer att märka att de upphöjda användaranslutningarna endast visas i sys.dm_exec_sessions (Transact-SQL) Dynamisk hanteringsvy (DMV) men inte i sys.dm_exec_connections -vyn (Transact-SQL).

  • Både lokala och fjärranslutna anslutningar med hjälp av protokollet Namngivna pipes samt lokala anslutningar med hjälp av delat minnesprotokoll fortsätter att fungera bra.

Dessutom loggas följande meddelanden i SQL Server Errorlog-filen:

  • Vid start av SQL Server:

    Fel: 26023, Allvarlighetsgrad: 16, Tillstånd: 1.
    Serverns TCP-provider kunde inte lyssna på ['any'ipv6<> 1963]. Tcp-porten används redan.
    Fel: 9692, Allvarlighetsgrad: 16, Tillstånd: 1.
    Service Broker-protokolltransporten kan inte lyssna på port 1963 eftersom den används av en annan process.

  • För misslyckade inloggningar:

    SQL Server 2008 och senare versioner:

    Fel: 18456, Allvarlighetsgrad: 14, Tillstånd: 11.
    Inloggningen misslyckades för användaren "MyDomain\TestAcc". Orsak: Tokenbaserad serveråtkomstverifiering misslyckades med ett infrastrukturfel. Sök efter tidigare fel.

Orsak

Felet uppstår när du konfigurerar en TCP-slutpunkt för Service Broker med samma port som SQL Server-instansen är konfigurerad att använda. Du kan hämta listan över slutpunkter genom att köra följande fråga:

SELECT * FROM sys.tcp_endpoints

Kommentar

Som beskrivs i Books Online-avsnittet om sys.tcp_endpoints (Transact-SQL) innehåller den här vyn inte information om de portar och protokoll som SQL Server-instansen för närvarande är konfigurerad att använda. Information om hur du hittar den finns i Konfigurationshanteraren för SQL Server.

Åtgärd

  • Metod 1: Släpp slutpunkten som orsakar problemet med hjälp av kommandot DROP ENDPOINT (Transact-SQL).

    Om du till exempel vill släppa en slutpunkt med namnet TestEP kan du använda följande kommando:

    DROP ENDPOINT TestEP
    
  • Metod 2: Ändra slutpunkten så att den använder en annan port med kommandot ALTER ENDPOINT (Transact-SQL).

    Om du till exempel vill ändra en slutpunkt med namnet TestEP för att använda en annan port kan du använda följande kommando:

    ALTER ENDPOINT TestEP as tcp (listener_port=1980)
    

Mer information

Liknande problem kan också uppstå med andra TCP-slutpunkter som de som skapats för databasspegling, och felmeddelandena vid SQL Server-start ändras i enlighet med detta.