Pregunta

Tengo un script basado en Nant cuales que corro en mi PC local que se conecta a SQL Server 2008 Express también se ejecuta en el PC local para eliminar y reconstruir las bases de datos usando archivos .sql -. Esto funciona bien, no hay problema aquí

El problema viene cuando he recreado la misma configuración en otro PC, me sale el error en mi guión de NAnt diciendo que:

System.InvalidOperationException: The 'SQLNCLI' provider is not registered on the local machine.
  at System.Data.OleDb.OleDbServicesWrapper.GetDataSource(OleDbConnectionString constr, DataSourceWrapper& datasrcWrapper)
  at System.Data.OleDb.OleDbConnectionInternal..ctor(OleDbConnectionString constr, OleDbConnection connection)
  at System.Data.OleDb.OleDbConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningObject)
  at System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup)
  at System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
  at System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
  at System.Data.OleDb.OleDbConnection.Open()
  at NAnt.Contrib.Util.SqlHelper..ctor(String connectionString, Boolean useTransaction)
  at NAnt.Contrib.Tasks.SqlTask.ExecuteTask()
  at NAnt.Core.Task.Execute()
  at NAnt.Core.Target.Execute()
  at NAnt.Core.Project.Execute(String targetName, Boolean forceDependencies)
  at NAnt.Core.Project.Execute()
  at NAnt.Core.Project.Run()

He buscado en línea y han encontrado que en un foro se sugirió que necesitaba para instalar el cliente nativo de Microsoft SQL Server y lo tiene desde esta dirección . (Es cierto, sólo he instalado el cliente nativo parte de este)

A pesar de esto está instalado en el segundo equipo, el guión todavía me da el mismo error. ¿Alguna sugerencia?

¿Fue útil?

Solución

El proveedor correcto para SQL Server 2008 es SQLNCLI10.1 .
Para SQL Server 2012, que sería SQLNCLI11 . (fuente)

Por desgracia, la migración a 2008 no recogió el cambio ...

Otros consejos

Podría ser un problema con x86 / x64? Si la estación de trabajo en cuestión es 64, y que ha instalado la versión de 64 bits del cliente, pero la aplicación que está tratando de ejecutar está en el espacio 86, es posible que tenga la versión x86 del cliente en esa estación de trabajo también. Una aplicación sólo x86 comprobará si hay una versión x86 del proveedor, y al ver que ninguno, dará un error como éste. La versión de 64 bits es probablemente lo suficientemente inteligente como para comprobar si cualquiera de las versiones, aunque tal vez tendría la misma situación.

Esto mismo sucede con ODBC - x86 y x64 de datos de fuentes que no están disponibles para el otro tipo de aplicación - si quieres que algo sea visible desde ambas construcciones de aplicaciones, que necesita para crear una fuente ODBC en cada herramienta de administración de versión.

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