una solucion servidor que puedo puede nombre instancia especificado error encontró dbnetlib correcto connectionopen conexion conectarme conectar con compruebe abrir sql-server ms-access odbc connection-string dbcc

sql server - solucion - Problemas de ODBC en SQL 2000-> actualización de 2005



no se puede conectar a local sql server 2008 (1)

Esta publicación wiki describe tanto un problema como una solución. Quería publicar esto para otros que puedan estar teniendo problemas similares, ya que no pude encontrar nada específicamente para resolver este problema en otro lado.

Recientemente actualizamos nuestra base de datos SQL Server 2000 a SQL Server 2005. Una de las bases de datos en el servidor es un back-end para una base de datos de MS Access. La base de datos de MS Access utiliza consultas de paso a través de ODBC sin DSN para conectarse a SQL Server.

A continuación, se muestra un ejemplo de cadena de conexión sin DSN:

ODBC; DRIVER=SQL Server;SERVER=servername;APP=Microsoft® Access (Pass Through Query);DATABASE=databasename;Network=DBMSSOCN;ConnectionTimeout=20; Trusted_Connection=Yes

Después de la actualización, descubrimos que los usuarios no podían ejecutar las consultas de paso a través y mostraban el siguiente error:

ODBC: falló la conexión a ''SQL Server''

Inicialmente, esto parecía ser un problema de permiso, ya que aligerar los privilegios de los inicios de sesión del servidor SQL al servidor sysadmin aliviaba el problema (pero obviamente esta no es una gran solución).

Después de quitar los inicios de sesión de la función sysadmin, descubrimos que al conectarse a SQL Server a través de Management Studio, el inicio de sesión podía ejecutar los procedimientos almacenados. El mismo inicio de sesión no podría desde MS Access. Esto apuntaba a algo que MS Access estaba haciendo al intentar ejecutar los procedimientos almacenados, en lugar de un problema de permiso.

Ejecutamos un seguimiento en el servidor usando Profiler, y esto mostró MS Access tratando de ejecutar el siguiente comando antes de la ejecución de proc almacenada:

DBCC TRACEON(208)

Pareció fallar en este comando, antes de la ejecución del procedimiento almacenado. La investigación en la web mostró que DBCC TRACEON (208) es equivalente a usar el comando ''SET QUOTED IDENTIFIERS ON'', y que en SQL 2005 los privilegios de ejecutar este comando DBCC habían sido revocados.

Después de más investigaciones, encontramos referencias a MS Query que tiene un problema similar, y que el componente APP de la cadena de conexión debería cambiarse de ''MS Query'' a otra cosa.

En una corazonada, cambiamos nuestro componente de APP de la cadena de conexión ODBC, y MS Access ya no intentó ejecutar DBCC TRACEON (208) antes de la ejecución del procedimiento almacenado.

Después de más pruebas, rastreamos el problema hasta el símbolo ''copyright'' incluido en el componente de la aplicación:

APP=Microsoft® Access (Pass Through Query)

Al eliminar el símbolo de copyright, todo estaba bien con la conexión y la aplicación funcionaba como lo había hecho anteriormente en SQL 2000.

Espero que esto ayude a cualquier otra persona que tenga un problema similar.


¿No es ese el símbolo de la marca registrada?

Creo que tocaste en una de las defensas de sql server 2005 contra ataques basados ​​en odbc. Como no hay nada en Internet al respecto, es probable que algo MS se maneje internamente.