本地sql server数据库,有个函数名找不到在哪定义的,但是程序的确使用了。
1、sp_helptext 查不到。
2、sys.configurations中的clr enabled设置未启用。
3、跟踪查看,没看到,但是数据库的确改成功了。
要对接这个系统数据,软件我看不到,卡在这个函数这里了,求指点个方向,
这个函数是怎么在数据库查不到,但是程序可以执行,而我无法手动调用这个函数的。
编辑下问题
这个是在数据库中看到执行记录,这个语句我没办法执行,
使用Sql Server Management Studio工具跟踪看不到更改的数据,但是相关表的数据的确改了,这个log表也有操作记录。
想问下,有什么办法是程序可以执行成功,手动没法执行成功的。甚至抓包都没抓到过程(默认配置抓的,可能更改配置可以抓到?)
1,查一下有没有使用到扩展库
2,如果没有用到扩展库、sp-helptext也查询不到,那就只能证明这个是一个“障眼法”或者废弃的代码
建议换一个思路去解决,比如抓包看看?
找到可编程性里面,有自定义的函数及存储过程。
会不会是跨数据库做了链接,调用的另一个数据库的函数?
sql server自定义函数吧,打开sql server 控制台,如下图里看看;
函数你找不到是有可能,我也隐藏过,sp_helptext,sys.objects,可编程性函数那里都看不到,但是能手动调用,你先确定一下,数据库有没有选对
还有一种可能,就是在执行程序的时候先建,再执行,执行完了把函数删除了
可按如下方法查询,以sqlserver2008为例:
1、登录SQL Server Management Studio。
2、展开左边的树,先在数据库中找到自己创建自定义函数的库,如数据库-系统数据库-master。
3、依次点击可编程性-函数-标量值函数,如曾经创建过一个叫“fn_myget”的自定义函数,就能看见。
??????????????????????
Profiler 抓下整个过程,确定执行语句是在那个DB,通过完整过程的捕获,看看是不是程序在使用时才创建,用完后就删除了
你有这个SQL的用户有 DBO架构的权限没有?
你试试 "SELECT * FROM DBO.TMP1" 看看报错不?