Share 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 fjärransluta 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 windows- eller SQL Server-autentisering.

    Obs!

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

  • Både lokala anslutningar och fjärranslutningar med hjälp av protokollet Namngivna pipes samt lokala anslutningar med protokoll för delat minne fortsätter att fungera bra.

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

  • Vid SQL Server start:

    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 den 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

Obs!

Som förklaras i Books Online-avsnittet om sys.tcp_endpoints (Transact-SQL) innehåller den här vyn inte information om portar och protokoll som SQL Server instans för närvarande är konfigurerad att använda. Mer information finns i Konfigurationshanteraren för SQL Server.

Åtgärd

  • Metod 1: Släpp slutpunkten som orsakar problemet med 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.