2011-08-05 58 views
4

我目前使用以下查询连接到坐在Windows 2008上的SQL数据库成功;mssql_execute失败,“存储过程执行失败”

$result = mssql_query("EXEC dbo.stored_procedure_name @param_level = 2"); 

我基于我现有的代码写在VB/ADO看起来像;

If level = "" Then level = 1 

cmdTT.ActiveConnection = connStrTest1 

set objParam=cmdTT.CreateParameter("@param_level", adInteger, adParamInput, 4, level) 
cmdTT.Parameters.Append objParam 

set rsTT = cmdTT.Execute 

所以我尝试的是以下;

$f = 2; 

$stmt = mssql_init('dbo.stored_procedure_name', $mssql_link); 

mssql_bind($stmt, "@param_level", $f, SQLINT4, false); 

mssql_execute($stmt); 

但无论怎样变化似乎总是打印打印屏幕上的警告,“警告:mssql_execute()[function.mssql-执行]:存储过程执行失败...” 。

对于我在这里调试问题的最佳方式是什么?任何人都可以看到明确的解决我的问题?

我目前正在从LAMP堆栈远程连接到数据库。

非常感谢 伊恩

回答

1

运行存储过程从瓦特/与硬编码参数SQL编辑器,你会得到更详细的错误信息这样的内容。

+1

查询使用top方法运行良好,但是当我使用mssql_execute函数模仿时,它会崩溃。我认为它摔倒在mssql_bind的东西上,但不知道为什么。 – ismithuk

3

这是来自使用FreeTDS的Linux服务器吗?如果是这样,我想知道这是否与TDS版本有关。在你的/etc/freetds.conf中试试tds version = 8.0

1

我知道这是一个旧帖子,但肯定会帮助某人。

执行后必须添加mssql_free_statement($stmt)

+0

当我调用'mssql_free_statement()'在创建新语句之前关闭当前语句时,这对我有用。这种行为因我而异。在一台服务器上,代码运行良好*没有* mssql_free_statement()调用。另一个未能调用'mssql_free_statement()'导致每个后续的存储过程调用失败。 – leepowers