Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 запрос к Oracle без linked  [new]
dbo
Member

Откуда:
Сообщений: 57
Добрый день.

Все перебробовал (в поиске искал тоже) - не получается простой запрос к Oracle из QA. Из PL/SQL developer'a все работает (на машине стоит клиент Оракла, используется его tnsnames.ora).

Через linked server не хочется. Лучше openrowset/opendatasource.
Могу создать DSN c оракловым драйвером, который использует данные tnsnames.ora.

Как сделать простой select * from aaa?
2 ноя 06, 11:18    [3345944]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
Glory
Member

Откуда:
Сообщений: 104760
dbo
Добрый день.

Все перебробовал (в поиске искал тоже) - не получается простой запрос к Oracle из QA. Из PL/SQL developer'a все работает (на машине стоит клиент Оракла, используется его tnsnames.ora).

Через linked server не хочется. Лучше openrowset/opendatasource.
Могу создать DSN c оракловым драйвером, который использует данные tnsnames.ora.

Как сделать простой select * from aaa?

Ну взять и сделать. В чем проблема то ?
2 ноя 06, 11:20    [3345958]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
dbo
Member

Откуда:
Сообщений: 57
Вроде понятно написал, что вопрос в том как именно сделать.

Например,
select * from Openrowset('MSDAORA.1','<сервер>';'<логин>';'<пароль>','select * from aaa')

выдает все время
ORA-12154: TNS:невозможно разрешить имя службы

хотя вместо <сервер> писал и доменное имя сервера и tns-имя и service_name.

Буду благодарен за конкретную строчку.
3 ноя 06, 10:39    [3351618]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74927
автор
ORA-12154: TNS:невозможно разрешить имя службы


Это оракловская ошибка.

HOW TO Set Up and Troubleshoot a Linked Server to Oracle in SQL Server
3 ноя 06, 10:46    [3351688]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
dbo
Member

Откуда:
Сообщений: 57
Спасибо, это читал.

Ошибка эта мелкомягких - другие-то клиенты (Axapta, PL/SQL Dev) работают.
К тому же, статья касается настроек SQL-сервера и linked, я же хочу через QA на локальном компе одной строкой. Пусть это будет хоть через ODBC (DSN), хоть через OLEDB, хоть через дополнительно добавленный на мой клиентский комп файлик.
3 ноя 06, 11:14    [3352009]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
Glory
Member

Откуда:
Сообщений: 104760
dbo
Спасибо, это читал.

Ошибка эта мелкомягких - другие-то клиенты (Axapta, PL/SQL Dev) работают.

Ошибка ORA-12154: TNS:невозможно разрешить имя службы никак не может быть ошибкой MS.

dbo

К тому же, статья касается настроек SQL-сервера и linked, я же хочу через QA на локальном компе одной стро

Если внимательно читать статью то для ошибки "ORA-12154: TNS:could not resolve service name" идет ссылка на http://support.microsoft.com/kb/259959/

Сообщение было отредактировано: 3 ноя 06, 11:19
3 ноя 06, 11:19    [3352051]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
dbo
Member

Откуда:
Сообщений: 57
Спасибо за внимание.

Прочитал, через sqlplus работает, путь к папкам оракла и библиотеки есть (клиент 9.х). Через QA никак.

Может кто-нибудь через подскажет как через DSN данные выбрать, благо DSN когда создаешь он и библиотеки берет оракловые и имя службы можно указать.
3 ноя 06, 11:58    [3352511]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
Glory
Member

Откуда:
Сообщений: 104760
dbo
Спасибо за внимание.

Прочитал, через sqlplus работает, путь к папкам оракла и библиотеки есть (клиент 9.х). Через QA никак.

Может кто-нибудь через подскажет как через DSN данные выбрать, благо DSN когда создаешь он и библиотеки берет оракловые и имя службы можно указать.

Элементарный exec master..xp_cmdshell 'tnsping ...' работает ?
3 ноя 06, 13:12    [3353298]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
dbo
Member

Откуда:
Сообщений: 57
Glory
Элементарный exec master..xp_cmdshell 'tnsping ...' работает ?


В точку. Прошу прощения - на сервере не стоял клиент Оракловый.
Теперь:

select * from Openrowset('MSDAORA','serv';'user';'pass','select * from aaa;')
Server: Msg 7321, Level 16, State 2, Line 1
An error occurred while preparing a query for execution against OLE DB provider 'MSDAORA'.
[OLE/DB provider returned message: ORA-00911: эхтхЁэ√щ ёшьтюы]
OLE DB error trace [OLE/DB Provider 'MSDAORA' ICommandPrepare::Prepare returned 0x80040e14].

select * from Openrowset('MSDAORA.1','serv';'user';'pass','select * from aaa;')
Server: Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'MSDAORA.1' reported an error. Access denied.
OLE DB error trace [OLE/DB Provider 'MSDAORA.1' IUnknown::QueryInterface returned 0x80070005: Access denied.].

Сообщение было отредактировано: 3 ноя 06, 16:54
3 ноя 06, 15:27    [3354469]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
Glory
Member

Откуда:
Сообщений: 104760
OLE DB provider 'MSDAORA.1' reported an error. Access denied
3 ноя 06, 15:28    [3354480]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
select SYSDATE from dual

а что на это выдаст?
3 ноя 06, 15:42    [3354568]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
dbo
Member

Откуда:
Сообщений: 57
Konst_One
select SYSDATE from dual

а что на это выдаст?


То же самое, вот почему "Access denied"?
Подключаюсь-то под виндовым аккаунтом (он же доменный админ).
3 ноя 06, 16:52    [3355152]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
Glory
Member

Откуда:
Сообщений: 104760
dbo
Konst_One
select SYSDATE from dual

а что на это выдаст?


То же самое, вот почему "Access denied"?
Подключаюсь-то под виндовым аккаунтом (он же доменный админ).

Под каким же "виндовым аккаунтом (он же доменный админ" если 'MSDAORA','serv';'user';'pass','select * from aaa
3 ноя 06, 16:56    [3355183]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
From Oracle's MetaLink:


Problem Description
-------------------


When running an application using the Oracle9i Release 2 (9.2.0.1.0) install
of client software and that attempts to connect to an Oracle database with the
Authenticated User privilege (such as when you use Microsoft's Internet
Information Server (IIS)) through any of the following programmatic interfaces


1. Oracle Provider for OLE DB
2. Microsoft OLE DB Provider for Oracle
3. Oracle ODBC Driver
4. Microsoft ODBC for Oracle
5. Oracle Objects for OLE (OO4O)
6. Microsoft .NET Framework Data Provider for Oracle


you may receive one of the following errors:


(1) Oracle Provider for OLE DB


(a) Error Type: Microsoft OLE DB Service Components (0x80070005)


Access is denied.


(b) OraOLEDB.Oracle Provider is not registered on the local machine


(2) Microsoft OLE DB Provider for Oracle


(a) Error Type: Microsoft OLE DB Provider for Oracle (0x80004005)


Oracle client and networking components were not found. These
components are supplied by Oracle Corporation and are part of the
Oracle Version 7.3.3 or later client software installation. Provider
is unable to function until these components are installed.


(b) Error Type: Microsoft OLE DB Provider for Oracle (0x80004005)


Oracle error occurred, but error message could not be retrieved
from Oracle.


(3) Oracle ODBC Driver


(a) Error Type: Microsoft OLE DB Provider for ODBC Drivers (0x80004005)


Specified driver could not be loaded due to system error 5 (Oracle
in OraHome92).


(4) Microsoft ODBC for Oracle


(a) The Oracle(tm) client and networking components were not found.
These components are supplied by Oracle Corporation and are part
of the Oracle Version 7.3 (or greater) client software installation.


You will be unable to use this driver until these components have
been installed.


(b) Error number: -2147467259


Error Description: [Microsoft][ODBC Driver Manager] Driver's
SQLAllocHandle on SQL_HANDLE_ENV failed


(5) Oracle Objects for OLE


(a) while using a GLOBAL.ASA file


Error Type: Active Server Pages (0x0)


An error occurred while creating object 'OraSession'.


(b) not using a GLOBAL.ASA file


Error Type: Microsoft VBScript runtime (0x800A0046)


Permission denied: 'CreateObject'


(6) Microsoft .NET Framework Data Provider for Oracle


(a) System.DllNotFoundException: Unable to load DLL (oci.dll).
at System.Data.OracleClient.DBObjectPool.GetObject(Boolean&
isInTransaction)
at System.Data.OracleClient.OracleConnectionPoolManager.
GetPooledConnection(String encryptedConnectionString,
OracleConnectionString options, Boolean& isInTransaction)
at System.Data.OracleClient.OracleConnection.OpenInternal
(OracleConnectionString parsedConnectionString, Object transact)
at System.Data.OracleClient.OracleConnection.Open()
at WCWSItemAvailability.ETAAvailability.SingleAvailability(String
ItemNumber, String BusinessUnit, Int32 OrderQty, Int32&
AvailableQty, Int32& OnHandQty, String& ETADate, Int32& Error)
at WCWSItemAvailability.ETAAvailability.XMLAvailability(String
XMLInput)


(7) Other miscellaneous errors


(a) The Specified Module Could Not Be Found


(b) ORA-00604: error occurred at recursive SQL level 1
ORA-12705: invalid or unknown NLS parameter value specified


(c) Unable to load DLL (OraOps9.dll):
...
[DllNotFoundException: Unable to load DLL (OraOps9.dll).]


(d) System Error 998 trying to run ASP page


Solution Description
--------------------


Oracle 9.2 Client software requires that you give the Authenticated User
privilege to the Oracle Home by following these steps:


1. Log on to Windows as a user with Administrator privileges.


2. Launch Windows Explorer from the Start Menu and and navigate to the
ORACLE_HOME folder. This is typically the "Ora92" folder under the
"Oracle" folder (i.e. D:\Oracle\Ora92).


3. Right-click on the ORACLE_HOME folder and choose the "Properties" option
from the drop down list. A "Properties" window should appear.


4. Click on the "Security" tab of the "Properties" window.


5. Click on "Authenticated Users" item in the "Name" list (on Windows XP
the "Name" list is called "Group or user names").


6. Uncheck the "Read and Execute" box in the "Permissions" list under the
"Allow" column (on Windows XP the "Permissions" list is called
"Permissions for Authenticated Users").


7. Re-check the "Read and Execute" box under the "Allow" column (this is
the box you just unchecked).


8. Click the "Advanced" button and in the "Permission Entries" list make
sure you see the "Authenticated Users" listed there with:


Permission = Read & Execute
Apply To = This folder, subfolders and files


If this is NOT the case, edit that line and make sure the "Apply onto"
drop-down box is set to "This folder, subfolders and files". This
should already be set properly but it is important that you verify this.


9. Click the "Ok" button until you close out all of the security properties
windows. The cursor may present the hour glass for a few seconds as it
applies the permissions you just changed to all subfolders and files.


10. Reboot your computer to assure that these changes have taken effect.


Re-execute the application and it should now work.


Explanation
-----------


If you install Oracle9i Release 2 (9.2.0.1.0) on a computer running Windows
with an NTFS partition, the contents of ORACLE_HOME directory will not be
visible to users who are authenticated on that machine. These permissions
were not set properly when the software was installed.


Applications that were working fine with previous versions of Oracle software
will stop working when they upgrade to Oracle 9.2.


NOTE: The application will continue to work if the user has logged onto the
machine as an Administrator.


Any application that is using the Authenticated User privilege will not work.
A notable example would be IIS which might service some of the requests based
on the Authenticated User privileges.


To demonstrate the problem in further detail, you can log on to the operating
system as an authenticated machine user. You won't be able browse the contents
of the ORACLE_HOME directory demonstrating your inability to load any Oracle DLLs
or make a connection.


Additional Information
----------------------


The above error messages may not only be encountered when using Oracle 9.2
client software but may also exists when running into general permissions
issues using third party products on a Windows platform.







--------------------------------------------------------------------------------
Paul ~~~~ Microsoft MVP (Visual Basic)
3 ноя 06, 17:23    [3355375]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
Konst_One
Member

Откуда:
Сообщений: 11514
проверил у себя:
select * from openrowset('MSDAORA.1','KONST';'scott';'tiger','select sysdate from dual')

все работает!
- SQL Server стоит на машине KONST
- Oracle 8 стоит на машине KONST
- оракловый клиент установлен и настроен
- MDAC стоит 2.8
- QA запускался под логином sa для локального SQL Servera
3 ноя 06, 17:33    [3355438]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
dbo
Member

Откуда:
Сообщений: 57
Konst_One
проверил у себя:
...

золотые слова!

Спасибо всем! Работает.

Я удивлялся на "access denied", так как считал, что это ошибка доступа к драйверу и пр. со стороны скл-сервера, поскольку для доступа к ораклу используются логин/пароль, передаваемые в openrowset.

Оказалось, что главное - коннектить QA к серверу под sa!
7 ноя 06, 10:10    [3361476]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: запрос к Oracle без linked  [new]
ART-CODE_NOPASSWORD
Guest
У меня обратная ситуация - давно и успешно моя программка работает под sa,
выполняет такую хранимку:
CREATE	PROCEDURE [dbo].[ORA_SELECT]
(
@IDUSER  int, -- кто запрашивает данные (и имеет-ли он доступ к серверу Oracle ?)
@StrMainQUERY varchar(max), -- главный запрос может влючать в себя запрос к MSSQL SERVER 2005 и подзапрос/обьединение таблиц к/с Oracle
@StrVBQUERY varchar(max) -- запрос к серверу Oracle
)
AS
BEGIN
declare @StrVB_FULL_QUERY varchar(max) 

-- настроим шаблон подзапроса к ОРАКЛ-серверу set @StrVB_FULL_QUERY='select * FROM OPENRowset(''MSDAORA'', ''<#SERVER>'';''<#USER>'';''<#PASSW>'',''<#VBQUERY>'')'

-- теперь подстановки...
Set @StrVB_FULL_QUERY=Replace(@StrVB_FULL_QUERY,'<#SERVER>','vbl') -- значение по-умолчанию
Set @StrVB_FULL_QUERY=Replace(@StrVB_FULL_QUERY,'<#USER>',(select [user_name] from app_users where iduser=@IDUSER)) 
Set @StrVB_FULL_QUERY=Replace(@StrVB_FULL_QUERY,'<#PASSW>',(select [user_pasw] from app_users where iduser=@IDUSER)) 
Set @StrVB_FULL_QUERY=Replace(@StrVB_FULL_QUERY,'<#VBQUERY>',Replace(@StrVBQUERY,'''','''''')) 
Set @StrMainQUERY=Replace(@StrMainQUERY,'<#VBQUERY>',@StrVB_FULL_QUERY)

exec (@StrMainQUERY) 

а теперь вот решил раздать пользоваелям логины (public)
- закручиваем гайки по безопасности и логируем действия пользователей...

CREATE LOGIN [MrXXX] WITH PASSWORD=N'PwXXX', DEFAULT_DATABASE=[PaymentSystem], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
CREATE USER [MrXXX] FOR LOGIN [MrXXX] WITH DEFAULT_SCHEMA=[dbo]
GRANT CREATE VIEW	TO [MrXXX] WITH GRANT OPTION 
GRANT DELETE		TO [MrXXX] WITH GRANT OPTION 
GRANT EXECUTE		TO [MrXXX] WITH GRANT OPTION 
GRANT INSERT		TO [MrXXX] WITH GRANT OPTION 
GRANT REFERENCES	TO [MrXXX] WITH GRANT OPTION 
GRANT SELECT		TO [MrXXX] WITH GRANT OPTION 
GRANT UPDATE		TO [MrXXX] WITH GRANT OPTION 

Может я не так создал пользователей, но теперь хранимка не выполняется
ошибка:
Msg 7415, Level 16, State 1, Line 1
Ad hoc access to OLE DB provider 'MSDAORA' has been denied. You must access this provider through a linked server.

А как предоставить доступ пользователю на выполнение этой хранимки пока не понятно...
Более того - пользоваетелей неск десятков, хотелось-бы сделать все как-то через группы,
но опыта админки таких дел маловато. мож. кто подскажет ?

select @@VERSION
Microsoft SQL Server 2005 - 9.00.3042.00 (Intel X86)   Feb  9 2007 22:47:07   Copyright (c) 1988-2005 Microsoft Corporation  
Express Edition with Advanced Services on Windows NT 5.0 (Build 2195: Service Pack 4) 
9 июн 09, 11:24    [7279774]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 5188
ART-CODE_NOPASSWORD

Может я не так создал пользователей, но теперь хранимка не выполняется
ошибка:
Msg 7415, Level 16, State 1, Line 1
Ad hoc access to OLE DB provider 'MSDAORA' has been denied. You must access this provider through a linked server.

А как предоставить доступ пользователю на выполнение этой хранимки пока не понятно...


первая же ссылка в гугле по данной ошибке:

тынц
9 июн 09, 11:40    [7279888]     Ответить | Цитировать Сообщить модератору
 Re: запрос к Oracle без linked  [new]
ART-CODE_NOPASSWORD
Guest
Благодарю !
... я запутался в этих DisallowAdhocAccess... помню что уже вроде его настраивал (для SQLNCLI), а на проверку вышло что дя этого провайдера - пропустил, не настроил...

все вылечилось так:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.1\Providers\MSDAORA]
"AllowInProcess"=dword:00000001
"DisallowAdhocAccess"=dword:00000000
Еще раз - спасибо, выручил :)
9 июн 09, 12:00    [7280027]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить