2009-09-01 15 views
17

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.Problemas de ODBC en SQL 2000 -> Actualización de 2005

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 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.

Un ejemplo de la cadena de conexión sin DSN se muestra a continuación:

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, se encontró que los usuarios no podían ejecutar las consultas de paso a través, y estaban recibiendo muestra el siguiente error:

ODBC - conexión a 'SQL Server ' no

inicialmente, esto parecía ser una problema de permiso, ya que elevar los privilegios de los inicios de sesión del servidor SQL a la función de servidor sysadmin alivió 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, encontramos que al conectarse a SQL Server a través de Management Studio, el inicio de sesión podrí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.

nos encontramos con un rastro en el servidor usando el Perfil, y esto se presentaron MS Access intenta ejecutar el siguiente comando antes de la ejecución procedimiento almacenado:

DBCC TRACEON(208) 

Apareció a fallar en este comando, antes de almacenado ejecución de procedimiento. 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 tienen 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 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, hemos rastreado el problema hasta el símbolo 'copyright' incluido en el componente APP:

APP=Microsoft® Access (Pass Through Query) 

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

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

+0

Excelente trabajo en la solución de problemas y tomarse el tiempo para publicarlo. Apuesto a que tienes menos pelo que cuando surgió este problema ... –

+0

Gracias por compartir esto. ¿Podrías separarlo en una pregunta y una respuesta? Serviría mejor al diseño SO. –

+0

¿Esto es respondido? Si es así, márcalo! – djangofan

Respuesta

1

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

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

+0

Sí, es posible que tenga razón cuando el símbolo sea una marca registrada, en lugar de un símbolo de copyright. Era uno o el otro, pero las marcas registradas encajan mejor, y ahora las he quitado de las conexiones, por lo que no puedo volver atrás y verificar. Aclamaciones – Jayden

Cuestiones relacionadas