AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.07.2010, 11:08   #1  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
? Connection к другому SQL Server
Имеется 2 SQL Server'a DEV и M01. На DEV живет БД аксапты, на M01 есть табличка откуда надо дернуть данные.

Есть код
X++:
server static anytype testConnection()
{
    anytype     _ret;

    Connection  con = new Connection();
    Statement   stmt = con.createStatement();
    ResultSet   resultSet;
    str         sqlExpression = "SELECT * FROM OPENROWSET('SQLNCLI10', 'Server=" + strLRTrim(CustParameters::find().Server)
                + ";Trusted_Connection=yes;', 'select TOP 1 * from  "+  strLRTrim(CustParameters::find().DB)
                + ".dbo." + strLRTrim(CustParameters::find().Table) + "');"
    ;

    new SqlStatementExecutePermission(sqlExpression).assert();
    resultSet = stmt.executeQuery(sqlExpression);

    try
    {
        resultSet.next();
        _ret = resultSet.getString(1);
    }
    catch (Exception::Error)
    {
        _ret = false;
    }

    CodeAccessPermission::revertAssert();
    return _ret;
}
Вы дает ошибку:
Невозможно выбрать запись в (). База данных SQL обнаружила ошибку.
Описание ошибки SQL: [Microsoft][SQL Native Client][SQL Server]Named Pipes Provider: Could not open a connection to SQL Server [5].
Оператор SQL: SELECT * FROM OPENROWSET('SQLNCLI10', 'Server=M01;Trusted_Connection=yes;', 'select TOP 1 * from TEST.dbo.Table');


Забавно то, что если в самой SQL Server Management Studio запустить
Код:
SELECT * FROM OPENROWSET('SQLNCLI10', 'Server=M01;Trusted_Connection=yes;', 'select TOP 1 * from  TEST.dbo.Table');
То все отрабатывает нормально.

В чем может быть проблема, почему данный запрос не работает из-под Аксапты?

P.S. Логин, под которым стартует АОS аксапты имеет доступ к SQL Server M01. Под ним, выше приведенный запрос, тоже удачно тестировался в SQL Server Management Studio.

Способ с использованием linkedserver, почему то отрабатывает только в SQL Server Management Studio на DEV. Тест соединения проходит удачно.
Linkedserver настроен "Be made using the login's current security contex"

Когда я пробую выполнить запрос, в SQL Server Management Studio на своем компе, с использованием linkedserver, то валятся с ошибки:
Поставщик OLE DB "SQLNCLI10" для связанного сервера "M01" вернул сообщение "Login timeout expired".
Поставщик OLE DB "SQLNCLI10" для связанного сервера "M01" вернул сообщение "A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.".


M01: Microsoft SQL Server 2005 - 9.00.3054.00 (Intel X86) Mar 23 2007 16:28:52 Copyright (c) 1988-2005 Microsoft Corporation Developer Edition on Windows NT 5.2 (Build 3790: Service Pack 2)

DEV: Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86) Apr 2 2010 15:53:02 Copyright (c) Microsoft Corporation Enterprise Edition on Windows NT 5.2 <X86> (Build 3790: Service Pack 2) (Hypervisor)
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 16.07.2010, 13:11   #2  
Vadik is offline
Vadik
Модератор
Аватар для Vadik
Лучший по профессии 2017
Лучший по профессии 2015
 
3,631 / 1849 (69) ++++++++
Регистрация: 18.11.2002
Адрес: гражданин Москвы
У Вас чисто академический интерес - подключиться максимально сложным и запутанным способом (Linked server + OPENROWSET)? ODBCConnection Вас чем не устроил?
__________________
-ТСЯ или -ТЬСЯ ?
Старый 16.07.2010, 13:21   #3  
Poleax is offline
Poleax
Модератор
Аватар для Poleax
MCP
MCBMSS
Злыдни
 
1,353 / 595 (22) +++++++
Регистрация: 17.02.2005
Адрес: msk
Записей в блоге: 34
Цитата:
Сообщение от Vadik Посмотреть сообщение
ODBCConnection Вас чем не устроил?
Например ODBCConnection ?

Вопрос закрыт. Найдено решение через
X++:
    System.Data.SqlClient.SqlConnection     sqlConnection;
__________________

This posting is provided "AS IS" with no warranties, and confers no rights.
Старый 18.10.2010, 18:13   #4  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от Poleax Посмотреть сообщение
X++:
    System.Data.SqlClient.SqlConnection     sqlConnection;
Поигрался с этой штукой и появились у меня два вопроса:
1. После нескольких коннектов к базе с помощью System.Data.SqlClient.SqlConnection зашёл в SQL Management Studio в Activity Monitor и обнаружил несколько висящих процессов от приложения .NET SqlClient Data Provider. Они потом сами удаляются или их надо как-то явно финализировать в программном коде ?
2. Можно ли как-то вытащить данные из полей с типом Container ? Чтобы можно было выбирать данные из другой копии аксаптовской базы. В самой базе такие поля имеют тип Image. Не получилось у меня привести то что возвращает SQLDataReader для таких полей к типу Container .
__________________
Дмитрий
Старый 18.10.2010, 19:28   #5  
Delfins is offline
Delfins
Участник
 
320 / 39 (2) +++
Регистрация: 20.09.2005
Адрес: Riga, Latvia
Контейнеры можно перевести из BLOB. Есть специальные функции.Недавно поднимал эту тему.
Container, bin data, Binary, base64
За это сообщение автора поблагодарили: Damn (2).
Старый 19.10.2010, 10:49   #6  
Damn is offline
Damn
Участник
 
436 / 154 (6) ++++++
Регистрация: 28.05.2003
Адрес: в глуши
Цитата:
Сообщение от Delfins Посмотреть сообщение
Контейнеры можно перевести из BLOB.
То, что возвращает метод SqlDataReader.get_Item() для полей с типом Container, это не Blob. Как я понял, это нечто имеющее тип System.Array. Вопрос в том как его привести к типу Container.
__________________
Дмитрий
Теги
connection string, odbc, sql server, подключение

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Dynamics AX Sustained Engineering: SQL Server 2005 sp3 & SQL Server 2008 with Dynamics AX Blog bot DAX Blogs 0 12.02.2009 06:08
Dynamics AX: Looking into SQL Server 2008 Blog bot DAX Blogs 0 16.01.2009 05:06
Dynamics AX: Dynamics AX 2009 & SQL Server 2008 Blog bot DAX Blogs 0 10.06.2008 21:08
Dynamics AX: SQL Server, Heart of Dynamics AX Blog bot DAX Blogs 0 13.07.2007 18:00
aEremenko: Диагностика проблем при установке Microsoft Dynamics Ax 4.0 на Microsoft SQL Server 2005 Blog bot DAX Blogs 0 28.10.2006 16:01
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:24.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.