Quiero programarnetically conexiones TCP en SQL Server. Creo que podemos lograr esto modificando las entradas de registro y reiniciando el servicio SQL Server. ¿Qué registro debo editar?¿Cuáles son las configuraciones de registro para habilitar TCP en SQL Server 2005 y 2008?
Respuesta
A menos que tenga un buen motivo para modificar el registro directamente, le sugiero que considere usar WMI
. WMI le proporcionará una implementación más independiente de la versión. Se puede acceder a WMI a través del espacio de nombre System.Management. Podrías tener un código que se parece a esto.
public void EnableSqlServerTcp(string serverName, string instanceName)
{
ManagementScope scope =
new ManagementScope(@"\\" + serverName +
@"\root\Microsoft\SqlServer\ComputerManagement");
ManagementClass sqlService =
new ManagementClass(scope,
new ManagementPath("SqlService"), null);
ManagementClass serverProtocol =
new ManagementClass(scope,
new ManagementPath("ServerNetworkProtocol"), null);
sqlService.Get();
serverProtocol.Get();
foreach (ManagementObject prot in serverProtocol.GetInstances())
{
prot.Get();
if ((string)prot.GetPropertyValue("ProtocolName") == "Tcp" &&
(string)prot.GetPropertyValue("InstanceName") == instanceName)
{
prot.InvokeMethod("SetEnable", null);
}
}
uint sqlServerService = 1;
uint sqlServiceStopped = 1;
foreach (ManagementObject instance in sqlService.GetInstances())
{
if ((uint)instance.GetPropertyValue("SqlServiceType") == sqlServerService &&
(string)instance.GetPropertyValue("ServiceName") == instanceName)
{
instance.Get();
if ((uint)instance.GetPropertyValue("State") != sqlServiceStopped)
{
instance.InvokeMethod("StopService", null);
}
instance.InvokeMethod("StartService", null);
}
}
}
Este código supone una referencia de proyecto a System.Management.dll
y la siguiente instrucción using:
using System.Management;
El blog tiene un Sql Protocolsarticle que entra en algunos detalles sobre lo que el código está haciendo.
Nota: Si un servidor de seguridad bloquea los puertos, aún no podrá acceder al servidor a través de TCP.
Eche un vistazo a HKLM\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQLServer\SuperSocketNetLib\Tcp
colmena. Hay claves como Enabled
, ListenOnAllIPs
y una lista de direcciones IP para escuchar.
- 1. ¿Cuáles son las razones imperiosas para elegir SQL Server 2008 en 2005?
- 2. SQL Server 2008 a SQL Server 2005
- 3. degradación de SQL Server 2008 a SQL Server 2005
- 4. Restaurar SQL Server 2008 DB * a * SQL Server 2005
- 5. MySQL vs SQL Server 2005/2008 rendimiento
- 6. Soporte de código SMO para sql 2005 y sql 2008
- 7. SQL Server 2008 compatibilidad con SQL Server 2005
- 8. Uso de SQL Server 2008 y SQL Server 2005 y fecha y hora
- 9. ¿Puedo usar SQL Server Management Studio 2005 para 2008 DB?
- 10. Isoweek en SQL Server 2005
- 11. Para encontrar el registro de SQL Server 2005 Management Studio
- 12. Duplicación vs. Registro de envío en SQL Server 2005
- 13. Cómo actualizar la resolución de conflictos al actualizar de SQL-Server 2005 a SQL-Server 2008
- 14. Visual Studio 2005 vs 2008 - ¿Cuáles son los beneficios?
- 15. Diferencias entre SQL Server 2008 y SQL Server 2008 R2 desde un POV de desarrollador
- 16. ¿Qué tener en cuenta al migrar paquetes SSIS de SQL Server 2005 a 2008?
- 17. Sql server 2008, son tablas temporales únicas
- 18. SQL Server 2005 replicación
- 19. ¿Cuáles son las diferencias entre T-SQL, SQL Server y SQL?
- 20. SQL Server 2008 y milisegundos
- 21. Intercalación de clientes y SQL Server 2005
- 22. ¿Las características de SQL Server 2008 Spatial Data son útiles para el mapeo de consultas?
- 23. Conéctese a SQL Server 2008 con TCP/IP
- 24. Visual Studio 2005 no es compatible con Sql Server 2008
- 25. ¿Alguna razón para tener SQL Server 2005 y 2008 instalados en la misma máquina?
- 26. Notificación de cambio con Sql Server 2008
- 27. SQL Server 2008 y HashBytes
- 28. SQL Server 2005 y 2008 en la misma máquina de desarrollador?
- 29. Caso y recuento en SQL Server 2008
- 30. ¿Cuántas columnas son demasiadas para una tabla de SQL Server 2005?
No usamos el código aunque utilizamos WMI – Rohit
@Rohit: Me alegro de haberlo ayudado. – VoidDweller