MSSQL标量值函数+ PHP


MSSQL scalar-valued functions + PHP

第一个帖子/问题在这里。我试图访问一个标量值函数在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