Проблема с назначением параметров в команде ADODB - PullRequest
1 голос
/ 03 августа 2011

Мы используем команду ADODB для выполнения запросов (вызова хранимых процедур) в нашей базе данных SQL Server 2000 с использованием драйвера SQLOLEDB.

На одном из наших серверов у нас возникают проблемы при назначении значений параметров.Вот как это происходит:

Set conn = Server.CreateObject("ADODB.Connection")
conn.CommandTimeout = 0
conn.ConnectionTimeout = 15
conn.Mode = 1 ' adModeRead
conn.ConnectionString = connectionString ' SQLOLEDB
conn.CursorLocation = 3 ' adUseClient
conn.Open

Set cmd = Server.CreateObject("ADODB.Command")
cmd.ActiveConnection = conn ' previously created connection
cmd.CommandType = 4 ' adCmdStoredProc
cmd.CommandText = "dbo.StoredProcedureName"
cmd.CommandTimeout = 0
cmd.Parameters.Refresh ' Get the parameters info from the database

' Pseudo code here :
Foreach cmd.parameters
 cmd.parameters(index).value = somevalue
Next

Этот код фактически работает на нашем производственном сервере, но по каким-то странным причинам он не работает на нашем dev-сервере и генерирует эту ошибку: Приложение использует значениеневерный тип для текущей операции , когда мы присваиваем значение (которое содержит десятичную часть, скажем, строку типа «12.75») параметру типа данных money.

Код точно такой же для devи на прод.Может ли это иметь какое-то отношение к региональным настройкам, языку ADODB, языку ОС или другому компоненту Windows?Поскольку это классический ASP-код, мы уже смотрели на Session.LCID, но они одинаковы на обоих серверах, поэтому мы сейчас ничего не знаем.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Возможно ли, что сервер разработки настроен на другой базовый язык или другие региональные настройки? Просто для ударов попробуйте назначить значение 12,75 вместо 12,75.

1 голос
/ 04 августа 2011

Из MS KB

Parameters.refresh в некоторых ситуациях завершится ошибкой или вернет информацию, которая не совсем верна.Parameters.refresh особенно уязвим при использовании на страницах ASP.

Существует известная проблема, связанная с направлением параметров при использовании Parameters.refresh из Classic ASP.Руководство MS состоит в том, чтобы вручную генерировать параметры.

http://support.microsoft.com/kb/183008 http://support.microsoft.com/kb/174223

...