16.07.2010, 11:08 | #1 |
Модератор
|
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. |
|
Теги |
connection string, odbc, sql server, подключение |
|
|