Pregunta

Estoy intentando descubrir cómo " probar la conectividad " a una base de datos de SQL Server desde DOS. Si la conexión falla, necesito detectar el fallo.

sqlcmd -Q "select 'a test'" -S .\SQLEXPRESS

Notarás que ese comando no devuelve un valor verdadero / falso. Además, si la instancia no existe, se agota el tiempo. Quiero algo como esto que no tenga un " tiempo de espera " problema que hace esperar al usuario:

if ( connectivity exists to local )  (
  setup DSN for local
) else (
  setup DSN for local\SQLEXPRESS
)

Extrañamente, osql.exe -L no funciona para mí aunque tengo una instancia de escucha.

¿Fue útil?

Solución

Tiempo de espera : no creo que pueda evitar un tiempo de espera, si realmente desea " comprobar la conectividad " ;. Pero vea a continuación una alternativa.

Respuesta booleana : es suficiente si el comando devuelve un nivel de error válido. Por ejemplo, el siguiente código debería funcionar:

osql -E -S SERVER\INSTANCE -Q ""
if ERRORLEVEL 1 (
  exit script
) else (
  setup DSN
)

Alternativa sin tiempo de espera : si el servidor SQL Server siempre se encuentra en la máquina local y solo desea comprobar si una instancia específica está instalada o no, intente buscar en el registro (usando el comando reg ). HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Microsoft SQL Server \ InstalledInstances es lo que está buscando.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top