Oracle 10g ODBC驱动程序和连接器

您好我使用两台机器:Windows XP和Windows Server 2003,我已经安装了Oracle客户端10g,当我尝试使用SQL Server上的链接服务器的ODBC选项它只是在我的XP上,但在服务器上无法获得它工作,即使在相同的configuration。

注意:

Windows XP – SQL Server 2008开发人员Windows Server 2003 – SQL Server 2000 Standard

将是SQL版本?

谢谢。

在这两台机器上,我得到相同的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) ) ) 

但与不同的安装目录。

来自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) 

当我尝试与OPENQUERY一起使用SSMS时,我得到以下内容:

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

traduced:

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

不,这不太可能是因为SQL的版本。 Oracle设置链接服务器的最常见错误是Oracle名称parsing错误。 请检查以确保您的tnsnames.ora在Windows 2003服务器上具有与XP机器相同的条目。 tnsnames.ora文件通常位于

 \[oracle install root]\product\[version]\client_x\NETWORK\ADMIN 

其中版本是Oracle的版本,client_x是您正在使用的客户端安装的实例。

scheme:

编辑或添加新的REG_DWORD调用AllowInProcess并将AllowInProcess值设置为1

 RUN> regedit > HKEY_LOCALMACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\[Version]\Providers\OraOLEDB.Oracle