【发布时间】:2014-09-30 17:57:37
【问题描述】:
我有一个存储过程,它插入到一个表中,其中一个字段具有空间索引。
当我从 SQL Server Management Studio 运行该过程时,它运行得很好。
当我从 PHP 运行它时,它返回错误: “插入失败,因为以下 SET 选项的设置不正确:'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING'。验证 SET 选项对于索引视图和/或计算列和/或过滤索引和/或查询通知和/或查询通知的使用是否正确。或 XML 数据类型方法和/或空间索引操作”
在 Management Studio 中,我尝试了许多不同的设置组合,直到最终获得了以下过程中的列表。
在 Managment Studio 中,错误会根据我设置的选项而变化,但 PHP 总是回复:'CONCAT_NULL_YIELDS_NULL, ANSI_WARNINGS, ANSI_PADDING'
我已将 PHP 配置为使用与 management studio 相同的 SQL 用户,并且我已尝试使用绑定参数的 mssql_query 和 mssql_execute。
空间索引位于 post.location 字段上 如果我删除空间索引,它可以工作,但我需要空间索引。
创建过程 insert_post ( @subject AS VARCHAR(250), @body 作为 VARCHAR(2000), @纬度作为浮动, @longitude 浮动 ) 开始
SET NOCOUNT ON
SET ANSI_WARNINGS ON
SET ANSI_PADDING ON
SET CONCAT_NULL_YIELDS_NULL ON
SET NUMERIC_ROUNDABORT OFF
DECLARE @location AS geography = geography::Point(@latitude, @longitude, 4326)
INSERT INTO post
(
subject,
body,
location
) VALUES (
@subject,
@body,
@location
)
结束
【问题讨论】:
标签: php sql sql-server stored-procedures spatial-index