Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PowerBuilder Новый топик    Ответить
 Нужна помощь PB9 + MSSQL2000  [new]
Pasha
Member

Откуда: Москва
Сообщений: 245
Добрый день
понадобилсь написать маленькое приложение используя MSSQL server
я настроил соединение как через ODBC так и через MSS Microsoft SQL Server
Но нам необходимо связаться с БД Oracle
Настроили linked server, соединились с Oracle
создал вьюху, например
CREATE VIEW scfweb1.VW_TEST
AS
Select * From Openquery(SCF_CREW, 'select Imo_no from scfcrew_dba.vessel')

Дальше пошли засады:
если я подключен через MSS Microsoft SQL Server, то мне не удается создать datawindow на данную VIEW, и выскакивает сообщение об неустановленном ansi_nulls ON и ansi_warnings on
При подключении через ODBC, я в SQLCA.DBParm = "ConnectString=set ansi_nulls on;set ansi_warnings on'" это могу прописать и нормально работать.
Ну соответсвенно если программа при запуске подключается через ODBC - то данные выбираются, а если через MSS Microsoft SQL Server - то опять ругань на неустановленные параметры.

Вопрос, а можно ли как то прописать при подключении через MSS Microsoft SQL Server, чтобы устанавливались необходимые параметры ansi_nulls on ansi_warnings on'???? Уж что-то не хочется возвращаться к ODBC
22 дек 05, 13:06    [2198598]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь PB9 + MSSQL2000  [new]
Dim2000
Member

Откуда: Москва
Сообщений: 5318

Pasha wrote:

> При подключении через ODBC, я в SQLCA.DBParm = "ConnectString=set
> ansi_nulls on;set ansi_warnings on'" это могу прописать и нормально
> работать.
> Ну соответсвенно если программа при запуске подключается через ODBC - то
> данные выбираются, а если через MSS Microsoft SQL Server - то опять
> ругань на неустановленные параметры.

А так попробуй:

EXECUTE IMMEDIATE 'SET ANSI_NULLS ON' ;
EXECUTE IMMEDIATE 'SET ANSI_WARNINGS ON' ;

Posted via ActualForum NNTP Server 1.3

22 дек 05, 13:15    [2198673]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь PB9 + MSSQL2000  [new]
Pasha
Member

Откуда: Москва
Сообщений: 245
пробовал
и при подключении
и так
execute immediate 'set ansi_nulls on ';
execute immediate 'set ansi_warnings on ';
dw_1.SetTrans(SQLCA)
dw_1.Retrieve()
и так
dw_1.SetTrans(SQLCA)
execute immediate 'set ansi_nulls on ';
execute immediate 'set ansi_warnings on ';
dw_1.Retrieve()

Безтолку, при подключении через MSS Microsoft SQL Server выдает ошибку
22 дек 05, 13:27    [2198741]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь PB9 + MSSQL2000  [new]
pand
Member

Откуда: Украина Харьков
Сообщений: 330
>execute immediate 'set ansi_warnings on ';
>dw_1.SetTrans(SQLCA)
а попробовать SetTransObject(sqlca)
а то ведь при SetTrans происходит новый коннект
22 дек 05, 13:36    [2198807]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь PB9 + MSSQL2000  [new]
Pasha
Member

Откуда: Москва
Сообщений: 245
и с dw_1.SetTransobject(SQLCA)
все варианты пробовал
22 дек 05, 13:47    [2198852]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь PB9 + MSSQL2000  [new]
Pasha
Member

Откуда: Москва
Сообщений: 245
кстати, когда я делаю так:
execute immediate 'set ansi_nulls on ';
execute immediate 'set ansi_warnings on ';
dw_1.SetTransObject(SQLCA)
или
dw_1.SetTransObject(SQLCA)
execute immediate 'set ansi_nulls on ';
execute immediate 'set ansi_warnings on ';

то появляется следующее сообщение;
The operation could not be performed because the Ole Db Provider 'OraOleDb.Oracle' was unable to begin adisributed transaction
22 дек 05, 13:55    [2198904]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь PB9 + MSSQL2000  [new]
cbusel
Member

Откуда: gomel.by
Сообщений: 54
Попрубуй еще:
sqlca.autocommit=true
22 дек 05, 14:16    [2199019]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь PB9 + MSSQL2000  [new]
Pasha
Member

Откуда: Москва
Сообщений: 245
cbusel
Попрубуй еще:
sqlca.autocommit=true


спасибо помогло
в итоге
конекшин
SQLCA.DBMS = "MSS Microsoft SQL Server"
SQLCA.AutoCommit = True
SQLCA.Database = is_Database
SQLCA.LogPass = is_LogPass
SQLCA.ServerName = is_ServerName
SQLCA.LogId = is_LogId


код
dw_1.SetTransObject(SQLCA)
execute immediate 'set ansi_nulls on ';
execute immediate 'set ansi_warnings on ';
dw_1.Retrieve()
22 дек 05, 14:18    [2199039]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь PB9 + MSSQL2000  [new]
Pasha
Member

Откуда: Москва
Сообщений: 245
Поторопился
sqlca.autocommit=true
не лучшем образом для остальной части программы

а можно как нить в рантайме у соединения поменять autocommit
execute immediate 'SET IMPLICIT_TRANSACTIONS ON/OFF не прокатило


а также не решена проблема, когда программируешь
Чтобы создать DW необходимо иметь соединение ODBC?
22 дек 05, 15:22    [2199521]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь PB9 + MSSQL2000  [new]
ЗоринАндрей
Member

Откуда: Санкт-Петербург
Сообщений: 3004
почему не лучшим образом?
autocommit для MSSQL должен быть True практически всегда, за редким исключением.
выставлять True или False можно в любой момент. BEGIN TRAN при необходимости PB сделает сам.

Зорин А.
"I love deadlines. I like the whooshing sound they make as they fly by."
-- Douglas Adams
22 дек 05, 15:29    [2199571]     Ответить | Цитировать Сообщить модератору
Все форумы / PowerBuilder Ответить