第一个帖子/问题在这里。我试图访问一个标量值函数在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 failed因为以下SET选项设置不正确:' concat_null_yields_null, ansi_warnings, ansi_padding '。验证对于索引视图和/或索引,SET选项是正确的计算列和/或过滤索引和/或查询通知和/或XML数据类型方法和/或空间索引操作。(严重性16)
我已经广泛搜索,并找到了存储过程的信息,但没有在MSSQL内的函数。我也不确定如何解释错误信息。
错误消息是关键:
警告:mssql_query() [function。mssql-query]: message: SELECT failed,因为下面的SET选项设置不正确:' concat_null_yields_null, ansi_warnings, ansi_padding '。请验证对于索引视图和/或索引,SET选项是正确的计算列和/或过滤索引和/或查询通知和/或XML数据类型方法和/或空间索引操作。(严重性16)
当尝试使用某些功能时,SQL Server会挑剔您的连接设置。
您正在连接到SQL Server与SSMS和您的php程序的不同设置。它们的默认值必须不同。从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