
Hola, estoy usando dos máquinas: Windows XP y Windows Server 2003, en ambas instalé el cliente Oracle 10g, y cuando intento usar ODBC para la opción de servidor vinculado en SQL Server, simplemente funciona en mi XP pero en el servidor no puedo obtener Funciona, incluso con la misma configuración.
Nota:
Windows XP - Desarrollador SQL Server 2008 Windows Server 2003 - SQL Server 2000 Estándar
¿Será la versión SQL?
Gracias.
en ambas máquinas obtengo el mismo archivo tnsnames.ora:
# tnsnames.ora Network Configuration File: C:\oradata\client\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
MEDICAL =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = SERVERCONTABLE.RESOCENTRO.COM)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = medical)
)
)
pero con un directorio de instalación diferente.
Pila de errores de SSMS:
===================================
Failed to retrieve data for this request. (Microsoft.SqlServer.Management.Sdk.Sfc)
------------------------------
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&LinkId=20476
------------------------------
Program Location:
at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)
at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.BuildDynamicItemWithQuery(IList`1 nodes, INodeInformation source, INavigableItem sourceItem, String urnQuery, Boolean registerBuilder, Boolean registerBuiltItems)
at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.BuildDynamicItem(IList`1 nodes, INodeInformation source, INavigableItem sourceItem, IFilterProvider filter)
at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItemBuilder.Build(IList`1 nodes, INodeInformation source, INavigableItem sourceItem, IFilterProvider filter)
at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.NavigableItem.GetChildren(IGetChildrenRequest request)
at Microsoft.SqlServer.Management.UI.VSIntegration.ObjectExplorer.ExplorerHierarchyNode.BuildChildren(WaitHandle quitEvent)
===================================
An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo)
------------------------------
Program Location:
at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteReader(String sqlCommand)
at Microsoft.SqlServer.Management.Smo.ExecuteSql.GetDataReader(String query)
at Microsoft.SqlServer.Management.Smo.DataProvider.SetConnectionAndQuery(ExecuteSql execSql, String query)
at Microsoft.SqlServer.Management.Smo.ExecuteSql.GetDataProvider(StringCollection query, Object con, StatementBuilder sb, RetriveMode rm)
at Microsoft.SqlServer.Management.Smo.SqlObjectBase.FillData(ResultType resultType, StringCollection sql, Object connectionInfo, StatementBuilder sb)
at Microsoft.SqlServer.Management.Smo.SqlObjectBase.FillDataWithUseFailure(SqlEnumResult sqlresult, ResultType resultType)
at Microsoft.SqlServer.Management.Smo.SqlObjectBase.BuildResult(EnumResult result)
at Microsoft.SqlServer.Management.Smo.SqlObjectBase.GetData(EnumResult erParent)
at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData()
at Microsoft.SqlServer.Management.Sdk.Sfc.Environment.GetData(Request req, Object ci)
at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.GetData(Object connectionInfo, Request request)
at Microsoft.SqlServer.Management.Sdk.Sfc.Enumerator.Process(Object connectionInfo, Request request)
===================================
El proveedor OLE DB 'OraOLEDB.Oracle' informa de un error. El proveedor no proporcionó información acerca del error. (.Net SqlClient Data Provider)
------------------------------
For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=08.00.2039&EvtSrc=MSSQLServer&EvtID=7399&LinkId=20476
------------------------------
Server Name: 192.168.0.3
Error Number: 7399
Severity: 16
State: 1
Procedure: sp_tables_ex
Line Number: 13
------------------------------
Program Location:
at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()
at System.Data.SqlClient.SqlDataReader.get_MetaData()
at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)
at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)
at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
at System.Data.SqlClient.SqlCommand.ExecuteReader()
at Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteReader(String sqlCommand)
Cuando intento usar SSMS con OPENQUERY obtengo lo siguiente:
select * from openrowset
('OraOLEDB.Oracle','oradb';'system';'siscad',
'select * from emp')
Servidor: mensaje 7399, nivel 16, estado 1, línea 1
El proveedor OLE DB 'OraOLEDB.Oracle' informa de un error.
[OLE/DB provider returned message: ORA-12154: TNS:no se ha podido resolver el identificador de conexión especificado]
Traza de error de OLE DB [OLE/DB Provider 'OraOLEDB.Oracle' IDBInitialize::Initialize returned 0x80004005: ].
traducido:
Server: Message 7399, level 16, State 1, line 1 OLE DB 'OraOLEDB.Oracle' provider reports an error.
[OLE/DB provider returned message: ORA-12154: TNS:no could be resolved the connection identifier specified]
OLE DB error trace [OLE/DB Provider 'OraOLEDB.Oracle' IDBInitialize:Initialize returned 0x80004005:].
Respuesta1
No, no es probable que se deba a la versión de SQL. El error más frecuente que recibo al configurar servidores vinculados a un destino de Oracle es un error de resolución de nombres de Oracle. Verifique para asegurarse de que su tnsnames.ora tenga la misma entrada en el servidor Windows 2003 que la máquina XP. El archivo tnsnames.ora normalmente se encuentra en
\[oracle install root]\product\[version]\client_x\NETWORK\ADMIN
Donde versión es la versión de Oracle y client_x es la instancia de la instalación del cliente con la que está trabajando.
Respuesta2
SOLUCIÓN :
Edite o agregue un nuevo REG_DWORD llamado AllowInProcess
y establezca el valor Hexa como1
RUN> regedit > HKEY_LOCALMACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\[Version]\Providers\OraOLEDB.Oracle