这里的第一篇文章/问题。我正在尝试使用以下查询访问PHP中的标量值函数:
select *, dbo.fnFunctionName_asArray(AnID,';') as refRes FROM ResourceDB where UniqueID = 'IDgoesHere'
此查询在MS SQL Server Management Studio中运行完全正常,但在尝试通过PHP运行查询时,我收到了一个可怕的错误。
这是PHP代码本身:
$sql_r = "select *, dbo.fnFunctionName_asArray(AnID,';') as refRes FROM ResourceDB where UniqueID = 'IDgoesHere'";
$r_r = mssql_query($sql_r, $msdbc);
错误如下:
警告:mssql_query()[function.mssql-query]:message:SELECT失败 因为以下SET选项具有不正确的设置: 'CONCAT_NULL_YIELDS_NULL,ANSI_WARNINGS,ANSI_PADDING'。验证 SET选项适用于索引视图和/或索引 计算列和/或筛选索引和/或查询通知 和/或XML数据类型方法和/或空间索引操作。 <严重性16)
我已经远程搜索并找到了有关存储过程的信息,但没有找到MSSQL中的函数。我不知道如何解释错误信息。
提前致谢。
答案 0 :(得分:1)
错误信息是关键:
警告:mssql_query()[function.mssql-query]:message:SELECT失败 因为以下SET选项的设置不正确: 'CONCAT_NULL_YIELDS_NULL,ANSI_WARNINGS,ANSI_PADDING'。验证 SET选项适用于索引视图和/或索引 计算列和/或筛选索引和/或查询通知 和/或XML数据类型方法和/或空间索引操作。 <严重性16)
尝试使用某些功能时,SQL Server对您的连接设置很挑剔。
您使用SSMS和php程序的不同设置连接到SQL Server。他们的默认值必须不同。从SSMS运行此SQL命令,然后从php:
运行DBCC USEROPTIONS
它会显示您的实际设置,这些设置是不同的。尝试使用这些设置:
SET ANSI_NULLS ON
SET CURSOR_CLOSE_ON_COMMIT ON
SET ANSI_NULL_DFLT_ON ON
SET ANSI_PADDING ON
SET QUOTED_IDENTIFIER ON
SET ANSI_WARNINGS ON
SET ARITHABORT ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT OFF