Ошибка подключения при доступе к Sage Timberline Accounting с помощью PHP и ODBC в Windows - PullRequest
0 голосов
/ 29 октября 2010

Я пытаюсь подключиться к базе данных Sage Timberline Accounting на моем Windows 2003 Server, используя PHP 5.3.У меня правильно установлен PHP с IIS как fastcgi.У меня настроен системный DSN в ODBC Manager и он правильно настроен для базы данных Timberline.

Вот мой PHP-скрипт.

<?php

$conn = odbc_connect("Timberline ODBC","user", "password");

?>

Я получаю следующую ошибку:

Предупреждение: odbc_connect (): ошибка SQL: [Sage Timberline Office][Драйвер ODBC для Sage Timberline Office] [Библиотека файлов DRM] Неверное имя учетной записи. Состояние SQL 08001 в SQLConnect в C: \ Inetpub \ wwwroot \ index.php в строке 3

Не важнокакую действительную комбинацию имени пользователя и пароля Timberline я пробую.

Кто-нибудь может помочь?

Ответы [ 5 ]

2 голосов
/ 12 апреля 2011

Не уверен, если это все еще вопрос или нет ... но вы понимаете, что распространяющееся соединение SQL - это индексный файл, который затем имеет индексные ссылки на другую информацию?Более известный как структура базы данных с плоскими файлами.

Как таковой, нет никакого чистого способа установить соединение.Я работаю над аналогичной проблемой, связанной с подключением моего сервера MSSQL к базе данных Timberline, и он не так чист, как вы думаете.

Вы пытались загрузить драйвер Timberline на веб-сервер или в рассматриваемое приложениедля потребления?Sage совсем не упростил вам доступ к этой информации, и если бы у меня было 2 цента, чтобы сказать об этом наборе приложений, я бы посоветовал против нее ВСЕМИ.

Пока здесь есть строка подключенияэто работает, через VS2k5.Это строка DSN, но строка подключения тем не менее.У меня проблема с отсоединением DSN-части от строки подключения и заставить его работать должным образом.

DSN=<whatever>;uid=<userid>;dbq=<PathToDirectory>;codepage=1252;
maxcolsupport=1536;dictionarymode=0;standardmode=0;shortennames=1;databasetype=1

Это должно работать для ADO, но не может заставить его работать должным образом:

Provider=MSDASQL.1;Driver={Timberline Data};dbq=<PathToDirectory>;
uid=<userid>;pwd=<password>;codepage=1252
1 голос
/ 11 мая 2011

Убедитесь, что IIS работает как пользователь, имеющий доступ к каталогу Timberline (путь, который вы указали для параметра dbq в строке подключения).

Измените настройку «Вход в систему» ​​службы IIS. Опять же, убедитесь, что вы используете учетную запись, у которой есть доступ к сетевому местоположению ваших данных о лесной линии.

0 голосов
/ 20 декабря 2016

Я недавно потратил много времени на эту работу;Я нашел несколько десятков сообщений людей, которые не смогли соединиться;но очень мало ответов.Вот мои уроки:

Sage Timberline Office, теперь называемый Sage CRE 300, использует базу данных Pervasive SQL.Их путь обновления - к SQL Server к концу 2019 года.

Существует 2 подключения ODBC, которые можно использовать для подключения:

1.Используйте собственные драйверы Pervasive ODBC

Драйверы ODBC включены в бесплатный Pervasive Client.Просто найдите последнюю версию.

Оба, 32- и 64-разрядные драйверы включены.

PHP позволяет подключаться через простую строку подключения, такую ​​как: odbc_connect("Driver={Pervasive ODBC Interface};ServerName=myserver;ServerDSN=mydsn;", "", "", SQL_CUR_USE_ODBC);

PervasiveИмеется много хорошей современной документации.

Один гигантский недостаток: вы можете только читать данные.Поля Sage помечены внутри и требуют пароль для обновления.Sage не предоставит пароль;даже за плату.(Я пытался).

2.Используйте предоставленный Sage драйвер ODBC

Единственный способ получить драйвер ODBC - установить клиент Sage.(Но читайте дальше, поскольку вы, вероятно, в любом случае не хотите этого делать).

Драйвер Sage ODBC называется Timberline Data, а продукт Simba.

Драйвер доступен только в32-разрядная версия.

Драйвер делает больше, чем интерфейс: - распространяющиеся имена таблиц и полей короткие;этот драйвер ODBC действует как переводчик, предоставляющий длинные имена.Есть 2 версии этих длинных имен.Решите, что вы хотите использовать, и придерживайтесь его.- Драйвер Sage ODBC позволяет обновлять поля.Не все поля;только поля, которые Sage позволяет вам изменить.Если обновление является критически важным, то это ваша опция only .

Это официальная строка соединения и способ ее использования в PHP:

odbc_connect("Driver={Timberline Data};UID=Mark;PWD=sage123!;DBQ=C:\Documents and Settings\All Users\Application Data\Sage\Timberline Office\Data\Construction Sample Data;CODEPAGE=1252;DictionaryMode=0;StandardMode=1;MaxColSupport=1536;", "", "", SQL_CUR_USE_ODBC);

Iбесполезно для UID=Mark;PWD=sage123!;

Конечно, убедитесь, что удвоили все обратные слеши.C:\\Documents and Settings\\All..

Sage заявляет, что их драйвер ODBC был протестирован только с продуктами MS Office;но он также будет работать с C ++, C # и т. д. (поддержка Per Sage.)

Со следующим исключением: мне не удалось использовать путь UNC в строке соединения с C # или PHP.У MS Access не было проблем с подключением по UNC-пути.Я не мог заставить PHP работать со строкой.Сопоставленные диски не помогли;они могут работать для вас.

Подсказки:

  • Обязательно используйте 32-битную версию PHP для драйвера Sage ODBC;64 бит не будет работать!
  • Для тестирования подключение с MS Access к драйверу ODBC было несложным;это послужило хорошим способом получения имен таблиц и полей и подтверждения строки подключения.
  • В итоге я настроил веб-сервер и установил экземпляр PHP на сервере Sage.Это дает следующие преимущества:
    • Нет необходимости устанавливать Sage Client (500 МБ) на ваш веб-сервер.
    • Предоставляет 32-битную опцию, если ваш основной сайт работает в 64-битной среде.
    • Нет проблем с путями UNC
0 голосов
/ 15 августа 2014

При возникновении ошибки такого типа может потребоваться убедиться, что только один профиль Windows зарегистрирован или зарегистрирован под именем DSN. Другими словами, если у вас больше профилей, зарегистрированных с тем же именем DSN (на том же компьютере / сервере), это, скорее всего, является причиной ошибки!

0 голосов
/ 17 июня 2013

Я использую этот код для построения строк подключения для использования с ADO.NET для подключения к Timberline.Вы можете использовать его как шаблон для построения строки подключения в PHP.Также рассмотрите возможность использования DSN по умолчанию «Источник данных Timberline».

public class TimberlineConnectionStringBuilder
{
        public static string GetConnectionString(string username, string password, string dataFilePath, string dsn)
        {
            var builder = new OdbcConnectionStringBuilder { Dsn = dsn };
            builder.Add("uid", username);
            builder.Add("dbq", dataFilePath);
            builder.Add("codepage", 1252);
            builder.Add("dictionarymode", 0);
            builder.Add("standardmode", 1);
            builder.Add("maxcolsupport", 1536);
            builder.Add("shortenames", 0);
            builder.Add("databasetype", 1);
            builder.Add("pwd", password);
            return builder.ConnectionString;
        }
}
...