He usado estos tres elementos al realizar conexiones programáticas locales a bases de datos. ¿Hay alguna diferencia real entre ellos?¿Hay alguna diferencia entre (local), '.' y localhost?
Respuesta
El resultado final es el mismo. La diferencia es:
- 'localhost' se resuelve en el nivel de TCP/IP y es equivalente a la dirección IP 127.0.0.1
- Dependiendo de la aplicación "(local)" podría ser sólo un alias de 'localhost '. En SQLServer, '(local)' y '.' significa que la conexión se realizará utilizando el protocolo llamado pipes (memoria compartida) dentro de la misma máquina (no es necesario pasar por la pila TCP/IP).
Esa es la teoría. En la práctica, no creo que haya una diferencia sustancial en el rendimiento o las características si usa cualquiera de ellos.
En general son sinónimos. Sin embargo, depende de la aplicación que está configurando. Siempre que la aplicación entienda lo que quiere decir, no debería provocar una pérdida de rendimiento. Al menos, no uno que tengas que eliminar de forma prematura, si entiendes.
Hasta donde sé el punto "." y "local" son Windows términos de aplicación, no es un término "estándar", localhost resuelve a 127.0.0.1 en el nivel de TCP/IP así que si usted quiere asegurarse de que usted son "compatibles" entre plataformas, debe usar localhost o 127.0.0.1
"localhost" no es una palabra mágica o reservada; su definición existe en/etc/hosts, o \ WINDOWS \ SYSTEM32 \ DRIVERS \ ETC \ HOSTS, o ... – tzot
@tzot ¿Cuándo dije que localhost es una palabra mágica o reservada? Por el contrario, dije que dot y local son más estándares de SQL Server/nombres de Windows y que localhost resuelve a 127.0.0.1 por el archivo de hosts, por lo general tanto en Unix como en Windows. ¿Te importa leer? –
Las diferencias descritas por Sergio pueden tener efectos notables debido a autorizaciones.
Es probable que el usuario de sql tenga acceso a la canalización con nombre, pero a menudo no puede acceder a localhost. Pronto lo notará cuando este es el caso :)
- 1. ¿Hay alguna diferencia entre CPython y Python
- 2. ¿Hay alguna diferencia entre `ListView.invalidateViews()` y 'Adapter.notifyDataSetChanged()'?
- 3. ¿Hay alguna diferencia entre DataTable.Clear y DataTable.Rows.Clear?
- 4. ¿Hay alguna diferencia entre System.Windows.Clipboard y System.Windows.Forms.Clipboard?
- 5. ¿Hay alguna diferencia entre MsgBox y MessageBox.Show?
- 6. ¿Hay alguna diferencia entre log4net.Config.BasicConfigurator.Configure() y log4net.Config.XmlConfigurator.Configure()?
- 7. ¿Hay alguna diferencia entre! == y! = En PHP?
- 8. ¿Hay alguna diferencia entre SSLv3 y TLS1.0?
- 9. ¿Hay alguna diferencia entre: window.localStorage y localStorage?
- 10. ¿Hay alguna diferencia entre .NET y ASP.NET
- 11. ¿Hay alguna diferencia entre is_int() y ctype_digit()?
- 12. ¿Hay alguna diferencia entre gluLookAt() y glFrustum()?
- 13. ¿Hay alguna diferencia entre readonly y {get; }
- 14. ¿Hay alguna diferencia entre UITableViewCellAccessoryDetailDisclosureButton y UITableViewCellAccessoryDisclosureIndicator
- 15. PHP MYSQL - Diferencia entre 127.0.0.1 y localhost
- 16. ¿Hay alguna diferencia entre RPC e IPC?
- 17. ¿Hay alguna diferencia entre un control y un widget?
- 18. ¿Hay alguna diferencia entre int & a y int & a?
- 19. ¿Hay alguna diferencia entre un GUID y un UUID?
- 20. ¿Hay alguna diferencia entre "margin: 0 auto;" y "margin: auto;"
- 21. ¿Hay alguna diferencia entre 'imprimir' y 'eco' en PHP?
- 22. ¿Hay alguna diferencia entre comillas simples y dobles en Java?
- 23. ¿Hay alguna diferencia entre "Objeto [] x" y "Objeto x []"?
- 24. ¿Hay alguna diferencia entre myNullableLong.HasValue y myNullableLong! = Null?
- 25. En Rails 3, ¿hay alguna diferencia entre = y assign_attributes?
- 26. ¿Hay alguna diferencia entre UTF8Encoding.UTF8.GetBytes y Encoding.UTF8.GetBytes?
- 27. .NET: ¿Hay alguna diferencia entre InvariantCulture y en-US?
- 28. ¿Hay alguna diferencia entre las funciones R ajustadas() y predecir()?
- 29. ¿hay alguna diferencia entre [Serializable] y [Serializable()] en C#?
- 30. ¿Hay alguna diferencia entre x ++ y ++ x en java?
En la práctica, hay una ligera diferencia en que debe verificar qué protocolo está habilitado. A veces, solo ciertos protocolos están habilitados por defecto, lo que se puede ver y cambiar más fácilmente en el Administrador de configuración de SQL Server. Eso marcaría una gran diferencia si se está conectando a través de TCP/IP, pero solo los conductos con nombre están habilitados, por ejemplo. – jamiebarrow
Hace poco noté que, en el contexto del servidor actual, puede consultar la instancia actual sin especificar el nombre. Creé un trabajo y el nombre del servidor no aceptaría un nombre de instancia junto con localhost (por ejemplo, localhost \ SQLEXPRESS) pero conoce (local) sin especificar el nombre de la instancia. Lo mismo es cierto para la fuente de datos de SSIS donde sabe que la instancia actual es (local) sin especificar el nombre de instancia real. – MichaelChan