web-dev-qa-db-fra.com

Connectez-vous à SQL Server 2008 avec TCP/IP

L'erreur suivante s'affiche lorsque j'essaie de me connecter à TCP/IP à partir de SQL Server Management Studio. J'ai besoin d'une description étape par étape pour résoudre mon problème. Quel est le problème ici?

Cannot connect to 
===================================

A network related or instance specific error when a connection to SQL Server...
(provider: Named pipe-provider, error: 40 -  SQL Server)
(.Net SqlClient Data Provider)

------------------------------
For help, click: http://go.Microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=53&LinkId=20476

------------------------------
Error Number: 53
Severity: 20
State: 0

------------------------------
Program Location:

   at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
   at System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
   at System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
   at System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String Host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
   at System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
   at System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
   at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
   at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
   at System.Data.SqlClient.SqlConnection.Open()
   at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ObjectExplorer.ValidateConnection(UIConnectionInfo ci, IServerType server)
   at Microsoft.SqlServer.Management.UI.ConnectionDlg.Connector.ConnectionThreadUser()
10
MCOL

Ce que j’oublie généralement, c’est que même si vous cochez tcp comme activé dans SQLServerNetwork-> Protocols for MSSQLServer, vous devez toujours activer les adresses IP potentiellement différentes pour votre serveur. Même un serveur avec un seul NIC aura plusieurs adresses IP. 

  1. Cliquez sur les protocoles pour MSSQLServer énumérés ci-dessus.
  2. Puis, dans le volet de droite, activez TCP/IP.
  3. Maintenant, double-cliquez sur TCP/IP pour ouvrir une boîte de dialogue.
  4. Si vous souhaitez écouter toutes les adresses IP du serveur, sélectionnez Oui dans la zone Écouter tout du premier onglet Protocole; autrement 
  5. Sélectionnez l'onglet Adresses IP et activez les adresses IP souhaitées en réglant Enabled Sur Oui.

enter image description here

17
Ed Ost

Que voyez-vous lorsque vous vérifiez la configuration du réseau SQL Server (Start Menu > Microsoft SQL Server > Configuration Tools > SQL Server Configuration Manager > SQL Server Network Configuration)?

alt text http://i50.tinypic.com/5lpcpk.png

Le protocole TCP/IP est-il vraiment activé sur votre serveur? Il est désactivé par défaut et le reste dans la plupart des cas (sauf si vous l'activez spécifiquement).

Le simple fait d'utiliser une adresse de serveur basée sur IP ne signifie pas que vous vous connectez à l'aide du protocole TCP/IP .... consultez http://www.connectionstrings.com/sql-server-2008 pour un exemple de connexion chaîne que will utilise TCP/IP:

Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;

La clé est le Network Library=DBMSSOCN; qui indique à votre code de vous connecter via TCP/IP.

13
marc_s

Il est également intéressant de vérifier que le service SQL Server Browser est en cours d’exécution, car les connexions TCP/IP utiliseront ce service.

8
IsolatedStorage

Consultez le site www.connectionstrings.com. Le message d'erreur semble indiquer que vous utilisez des canaux nommés et non pas TCP/IP. N'oubliez pas que vous devez activer explicitement TCP/IP sur les ordinateurs serveurs pour SQL Server.

4
Sascha

Il y a une bonne procédure pour configurer ceci, y compris

  • Activation du protocole TCP/IP pour le serveur de base de données
  • Activation des connexions distantes pour le serveur de base de données
  • Autoriser le trafic TCP à travers le pare-feu

à http://blogs.msdn.com/b/walzenbach/archive/2010/04/14/how-to-enable-remote-connections-in-sql-server-2008.aspx .

3
metamatt

Etes-vous sûr à 200% que votre serveur est configuré pour accepter les connexions via TCP/IP?

2
CResults

Suivez ceci:

Démarrer -> Programmes -> Microsoft SQL Server 2008 -> Outils de configuration -> Gestionnaire de configuration SQL Server

Configuration réseau SQL Server -> Protocoles pour [SQLInstanceName]

Clic droit sur TCP/IP -> Activer

0
cjk

Si TCP/IP est déjà activé, il semble que votre pare-feu bloque la connexion. Ouvrez les ports appropriés et cela devrait fonctionner.

Vous devriez vérifier le pare-feu aux deux extrémités de la connexion.

0
Cromulent