2009-02-07 4 views
2

Я переместил SQL базы данных с одного сервера на новый (отдельно стоящем/прилагается)ошибки ASP не отображается

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

Это код

<% 
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; то ничего, ошибка не отображается ...

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

Благодаря Джонатан

+0

REQ = пытаясь угадать «Выбрать верхний 2 * От tblArticleList» – cgreeno

+0

Не помогает ... – 2009-02-07 21:40:10

+0

попробовать принудительную тайм-аут «conn.ConnectionTimeout = 200» прямо перед тем как открыть соединение – cgreeno

ответ

1

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

В Debug панели конфигурации каталога IIS, Включить отладку ASP не должны быть проверены ... Althought я thougth он должен ...

0

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

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

Для объекта ASPError см http://www.w3schools.com/asp/asp_ref_error.asp

1

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

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

+0

«Показать дружественные HTTP-ошибки» ничего не покажет, это просто не покажет вам ничего стоящего. – AnonJr

+0

Сказав это, он должен что-то увидеть ... – AnonJr

1

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

<% 
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, и это упрощает поиск и устранение неполадок.

0

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

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

например:

a = (b) 
Response.Write ((("test"))&(1)) 
1

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

<% 
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

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

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

2. Обертывание моей строки запроса в вызове ПРМА вызвало в результате флаг EOF должен быть заполнен правильно, а не возвращен с пустым или нулевым значением, что приведет к простому DO WHILE NOT result.EOF Некоторое действие LOOP для создания бесконечного цикла до истечения времени ожидания веб-запроса. Так, например,

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

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

Смежные вопросы