Как я соединяюсь с базой данных MSSQL с помощью модуля Perl DBI в Windows?

Краткий ответ: дескриптор не существует, когда вы пытаетесь использовать его внутри ajax.php

Внутри ajax.php, взгляните на следующую строку: [1118 ]

                $sc=

Краткий ответ: дескриптор не существует, когда вы пытаетесь использовать его внутри ajax.php

Внутри ajax.php, взгляните на следующую строку: [1118 ] [110]

И затем вы звоните:

                $route_tasks = $sc->Request(
                   ...
                    );

Итак, вы привели в действие свой класс внутри index.php и все 3 вызова были сделаны там, где это было успешно, затем вы записали объект в

Краткий ответ: дескриптор не существует, когда вы пытаетесь использовать его внутри ajax.php

Внутри [112], взгляните на следующую строку: [1118 ] [110]

И затем вы звоните:

[111]

Итак, вы привели в действие свой класс внутри [113] и все 3 вызова были сделаны там, где это было успешно, затем вы записали объект в [114] переменная и, по-видимому, объект корректно кодируется и декодируется обработчиком сеанса php, поэтому вы все еще можете вызвать метод Request внутри ajax.php после получения объекта.

Хотя вы действительно используете объект в ajax.php, это не тот же экземпляр объекта, который был создан в index.php, поскольку этот экземпляр принадлежит потоку index.php вместе с дескриптором curl; вызов ajax.php из index.php создаст другой поток для его обработки и потребует также нового дескриптора curl.

Измените $sc=

Краткий ответ: дескриптор не существует, когда вы пытаетесь использовать его внутри ajax.php

Внутри [112], взгляните на следующую строку: [1118 ] [110]

И затем вы звоните:

[111]

Итак, вы привели в действие свой класс внутри [113] и все 3 вызова были сделаны там, где это было успешно, затем вы записали объект в [114] переменная и, по-видимому, объект корректно кодируется и декодируется обработчиком сеанса php, поэтому вы все еще можете вызвать метод [115] внутри [116] после получения объекта.

Хотя вы действительно используете объект в [117], это не тот же экземпляр объекта, который был создан в [118], поскольку этот экземпляр принадлежит потоку [119] вместе с дескриптором [1110]; вызов [1111] из [1112] создаст другой поток для его обработки и потребует также нового дескриптора [1113].

Измените [1114] на $sc=new SoapCli();, чтобы перед использованием можно было создать дескриптор curl.

SESSION["sc"];
на $sc=new SoapCli();, чтобы перед использованием можно было создать дескриптор curl.

SESSION["sc"]
переменная и, по-видимому, объект корректно кодируется и декодируется обработчиком сеанса php, поэтому вы все еще можете вызвать метод Request внутри ajax.php после получения объекта.

Хотя вы действительно используете объект в ajax.php, это не тот же экземпляр объекта, который был создан в index.php, поскольку этот экземпляр принадлежит потоку index.php вместе с дескриптором curl; вызов ajax.php из index.php создаст другой поток для его обработки и потребует также нового дескриптора curl.

Измените $sc=

Краткий ответ: дескриптор не существует, когда вы пытаетесь использовать его внутри ajax.php

Внутри [112], взгляните на следующую строку: [1118 ] [110]

И затем вы звоните:

[111]

Итак, вы привели в действие свой класс внутри [113] и все 3 вызова были сделаны там, где это было успешно, затем вы записали объект в [114] переменная и, по-видимому, объект корректно кодируется и декодируется обработчиком сеанса php, поэтому вы все еще можете вызвать метод [115] внутри [116] после получения объекта.

Хотя вы действительно используете объект в [117], это не тот же экземпляр объекта, который был создан в [118], поскольку этот экземпляр принадлежит потоку [119] вместе с дескриптором [1110]; вызов [1111] из [1112] создаст другой поток для его обработки и потребует также нового дескриптора [1113].

Измените [1114] на $sc=new SoapCli();, чтобы перед использованием можно было создать дескриптор curl.

SESSION["sc"];
на $sc=new SoapCli();, чтобы перед использованием можно было создать дескриптор curl.

SESSION["sc"];

И затем вы звоните:

                $route_tasks = $sc->Request(
                   ...
                    );

Итак, вы привели в действие свой класс внутри index.php и все 3 вызова были сделаны там, где это было успешно, затем вы записали объект в

Краткий ответ: дескриптор не существует, когда вы пытаетесь использовать его внутри ajax.php

Внутри [112], взгляните на следующую строку: [1118 ] [110]

И затем вы звоните:

[111]

Итак, вы привели в действие свой класс внутри [113] и все 3 вызова были сделаны там, где это было успешно, затем вы записали объект в [114] переменная и, по-видимому, объект корректно кодируется и декодируется обработчиком сеанса php, поэтому вы все еще можете вызвать метод Request внутри ajax.php после получения объекта.

Хотя вы действительно используете объект в ajax.php, это не тот же экземпляр объекта, который был создан в index.php, поскольку этот экземпляр принадлежит потоку index.php вместе с дескриптором curl; вызов ajax.php из index.php создаст другой поток для его обработки и потребует также нового дескриптора curl.

Измените $sc=

Краткий ответ: дескриптор не существует, когда вы пытаетесь использовать его внутри ajax.php

Внутри [112], взгляните на следующую строку: [1118 ] [110]

И затем вы звоните:

[111]

Итак, вы привели в действие свой класс внутри [113] и все 3 вызова были сделаны там, где это было успешно, затем вы записали объект в [114] переменная и, по-видимому, объект корректно кодируется и декодируется обработчиком сеанса php, поэтому вы все еще можете вызвать метод [115] внутри [116] после получения объекта.

Хотя вы действительно используете объект в [117], это не тот же экземпляр объекта, который был создан в [118], поскольку этот экземпляр принадлежит потоку [119] вместе с дескриптором [1110]; вызов [1111] из [1112] создаст другой поток для его обработки и потребует также нового дескриптора [1113].

Измените [1114] на $sc=new SoapCli();, чтобы перед использованием можно было создать дескриптор curl.

SESSION["sc"];
на $sc=new SoapCli();, чтобы перед использованием можно было создать дескриптор curl.

SESSION["sc"]
переменная и, по-видимому, объект корректно кодируется и декодируется обработчиком сеанса php, поэтому вы все еще можете вызвать метод Request внутри ajax.php после получения объекта.

Хотя вы действительно используете объект в ajax.php, это не тот же экземпляр объекта, который был создан в index.php, поскольку этот экземпляр принадлежит потоку index.php вместе с дескриптором curl; вызов ajax.php из index.php создаст другой поток для его обработки и потребует также нового дескриптора curl.

Измените $sc=

Краткий ответ: дескриптор не существует, когда вы пытаетесь использовать его внутри ajax.php

Внутри [112], взгляните на следующую строку: [1118 ] [110]

И затем вы звоните:

[111]

Итак, вы привели в действие свой класс внутри [113] и все 3 вызова были сделаны там, где это было успешно, затем вы записали объект в [114] переменная и, по-видимому, объект корректно кодируется и декодируется обработчиком сеанса php, поэтому вы все еще можете вызвать метод [115] внутри [116] после получения объекта.

Хотя вы действительно используете объект в [117], это не тот же экземпляр объекта, который был создан в [118], поскольку этот экземпляр принадлежит потоку [119] вместе с дескриптором [1110]; вызов [1111] из [1112] создаст другой поток для его обработки и потребует также нового дескриптора [1113].

Измените [1114] на $sc=new SoapCli();, чтобы перед использованием можно было создать дескриптор curl.

SESSION["sc"];
на $sc=new SoapCli();, чтобы перед использованием можно было создать дескриптор curl.

11
задан ConcernedOfTunbridgeWells 14 October 2008 в 22:07
поделиться

3 ответа

Используйте DBD:: ODBC. Если Вы просто создаете источник данных с Панелью управления-> Управление системой-> источники данных ODBC-> Источник данных системы или Пользовательский Источник данных (это - имена, поскольку я помню их, но мой XP не находится на английском языке, таким образом, я не могу проверить), то все, что необходимо сделать, использовать название того источника данных в строке подключения DBI.

my $dbh = DBI->connect("dbi:ODBC:$dsn", $user, $pwd, \%attr);

Различие между Пользователем и Источником данных системы - то, что последний применим любым пользователем.

См. также: КАК К: создайте имя источника данных системы в Windows XP

13
ответ дан 3 December 2019 в 04:54
поделиться

Не удалось найти это нигде надежным. Используйте код Perl, подобный

use DBI;
my $dbs = "dbi:ODBC:DRIVER={SQL Server};SERVER={ServerName}";
my ($username, $password) = ('username', 'password');

my $dbh = DBI->connect($dbs, $username, $password);

if (defined($dbh))
{
    #write code here
    $dbh->disconnect;
}
else
{
    print "Error connecting to database: Error $DBI::err - $DBI::errstr\n";
}
6
ответ дан 3 December 2019 в 04:54
поделиться

Проверяя Perlmonks, я вижу предложение для фактического использования драйвера Sybase DBI для соединения с MS SQL. Который имеет смысл, учитывая, что MS SQL возникает в коде Sybase. ODBC работает также, конечно.

4
ответ дан 3 December 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: