ошибки asp не отображаются - PullRequest
2 голосов
/ 08 февраля 2009

Я переместил базу данных sql с одного сервера на новый (отсоединен / присоединен)

Теперь я испытываю странное поведение, так как оно не работает, но ошибка НЕ ​​отображается.

Это код

<%
const database_dsn="PROVIDER=SQLNCLI10; SERVER=FR-2626\SQLLOP;DATABASE=Lop;Uid=admin-sql;Pwd=xxxx;" 

response.write "Step 0//"

set conn=server.CreateObject("ADODB.Connection")
set RS=server.CreateObject("ADODB.Recordset")

conn.Open database_dsn

response.write "Step 1//"
req = "Select count(*) From tblArticleList"

response.write "Step 2//"
set RS = conn.Execute(req)

response.write  "Step 3//"

%>

Программа останавливается на шаге 2; то ничего, ошибка не отображается ...

Я просто не знаю, что делать .. Как я могу получить ошибку?

Спасибо Jonathan

Ответы [ 7 ]

1 голос
/ 11 марта 2009

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

<%
const database_dsn="PROVIDER=SQLNCLI10; SERVER=FR-2626\SQLLOP;DATABASE=Lop;Uid=admin- sql;Pwd=xxxx;"

'Its very important to add this line!!! '
On Error Resume Next
'Its very important to add this line!!! '

response.write "Step 0//"

set conn=server.CreateObject("ADODB.Connection")
set RS=server.CreateObject("ADODB.Recordset")

conn.Open database_dsn

if err.number<>0 then
    response.write err.description
end if

response.write "Step 1//"
req = "Select count(*) From tblArticleList"

response.write "Step 2//"
set RS = conn.Execute(req)

if err.number<>0 then
    response.write err.description
end if

response.write  "Step 3//"

%>
1 голос
/ 26 мая 2017

И не бить мертвую лошадь, но я делаю что-то похожее с базой данных Oracle, и у меня были две фантомные проблемы, которые мне еще предстоит определить первопричину, но вот две вещи, которые заставили их уйти.
1. Назовите все столбцы в запросе и псевдонимы, которые рассчитываются (сумма, число, среднее и т. Д.), Чтобы ваш запрос стал

req = "Select count(*) NumRows From tblArticleList"

2. В результате переноса строки запроса в вызове cstr флаг result.EOF заполняется правильно, а не возвращается с пустым или нулевым значением, вызывая простое DO WHILE NOT result.EOF Некоторые Action LOOP создают бесконечный цикл до веб-запроса время вышло. Так, например,

response.write "Step 2//"
set RS = conn.Execute(cstr(req))

Ничего особенного, только пара советов, если вы застряли и не можете понять, почему. Следуйте приведенным выше советам по отладке, это хорошая информация.

1 голос
/ 09 марта 2009

При выполнении запроса вы не используете команду «Установить». Я не знаю, почему он вам ничего не показывает, но ваш код должен выглядеть примерно так:

<%
const database_dsn="PROVIDER=SQLNCLI10; SERVER=FR-2626\SQLLOP;DATABASE=Lop;Uid=admin-sql;Pwd=xxxx;" 

response.write("Step 0//")

set conn=server.CreateObject("ADODB.Connection")
set RS=server.CreateObject("ADODB.Recordset")

conn.Open database_dsn

response.write("Step 1//")
req = "Select count(*) From tblArticleList"

response.write("Step 2//")
RS = conn.Execute(req)

response.write("Step 3//")
%>

Да, круглые скобки в "Response.Write" являются необязательными. Но я такой OCD, и это облегчает поиск неисправностей.

1 голос
/ 05 марта 2009

если ваш браузер настроен на "показ дружественных ошибок http", то это в сочетании с тем, что вы уже определили, является частой причиной, по которой я не вижу сообщения об ошибке.

Шахкаплеш также прав, что вы можете использовать Server.GetLastError (), чтобы получить последнюю ошибку, которая произошла, но вам не нужно делать это в этом примере.

1 голос
/ 08 февраля 2009

О, я частично нашел ответ для отображения ошибки.

На панели «Отладка» конфигурации каталогов IIS НЕ следует проверять параметр «Включить отладку ASP» ... хотя я думаю, что он должен ...

0 голосов
/ 09 марта 2009

На самом деле это не значит быть неприемлемым, но да, вам действительно нужен Set там, так как вы устанавливаете тип объекта и, возможно, хотите использовать возвращаемое значение в какой-то момент (если это был не просто тестовый скрипт, который это похоже на меня).

Кроме того, кстати, круглые скобки в Response.Write () не совсем корректны, так как они не возвращают значение. Они работают только с подпрограммами с одним параметром, потому что вы можете поместить круглые скобки где угодно вокруг выражений.

например:

 a = (b)
 Response.Write ((("test"))&(1))
0 голосов
/ 08 февраля 2009

Я думаю, что у сервера есть метод GetLastError, который вы можете проверить, чтобы выяснить, какая ошибка произошла при выполнении любого оператора.

например. При ошибке возобновить следующее .... заявление, которое может вызвать ошибку .... errorObject = Server.GetLastError ()

Об объекте ASPError см. http://www.w3schools.com/asp/asp_ref_error.asp

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...