供应链的“查询分析工具”通过“直接查询语句”查询报表时,写的SQL语句或调用的存储过程等,在SQL server 的查询分析器中执行成功,能查询出来数据,但是在“查询分析工具”中就报错,比如说字段过长,查询数据不正确之类?或虽然没有报错,但是查询不出任何数据?
最近我们与K3事业部进行沟通时,提到了这个问题,事业部给了我们比较好的解答,供大家参考:
一、供应链 “查询分析工具”的“直接查询语句”实现了SQL server 的查询分析器的大部分功能,主要区别在于不支持以下SQL的解析,防止出现对数据库造成破坏的SQL语句
1、不能出现对数据库进行修改的ALTER DATABASE语句。
2、不能出现对数据库进行删除的DROP DATABASE语句。
3、不能出现对数据库里的物理表进行修改的UPDATE语句。
4、不能出现对数据库里的物理表进行插入的INSERT语句。
5、不能出现对数据库里的物理表的数据进行删除的DELETE语句。
6、不能出现对数据库里的物理表进行删除的DROP TABLE语句。
7、不能出现对数据库中表以外的物理数据进行修改的ALTER语句。
8、不能出现对数据库中表以外的物理数据进行删除的DROP语句。
9、不能对数据库中的物理表进行TRUNCATE TABLE操作。
10、不能进行DBCC操作。
二、注意事项
1、交叉分析报表中不处理数据库表中没有的字段,如仓存单据的计划价金额等字段;因数据库表中没有的字段是计算得出,没有进行保存,如果需要取数,通过自定义单据处理。
2、进入查询分析报表时,如果报表的方案在序时簿中设置的显示列超过80列,进入时会提示:当前选择待显示的列数超过80,对性能会影响,请慎重选择必须列;用户可以在序时簿中修改显示列数,只要小于80,则不会再报提示。并且即使选择的列不包括报表取数所需要的列,也可以正常取数。
三、最新说明请参考《K3V10.3采购管理用户手册——系统工具——查询分析工具》 或《K3V10.3BOS用户手册——报表定义》
四、目前查询分析工具可以跨帐套取数。但是跨服务器取数,可能有问题,后续版本考虑完善。
比如:类似如下的sql,
select * from AIS20061103093657.dbo.t_icitem
只能在同一个SQL Server,跨机器不行.
另外,类似如下的sql,(‘MSDASQL‘, ‘DRIVER={SQL Server};SERVER=192.168.18.174;UID=sa;PWD=1‘, hdtz.dbo.test)(test) values(‘2‘) –GO
,建议把=改成==。