在SQL Profiler中捕获此内容,从第三方应用发送。它在做什么?
declare @p1 int
set @p1=180150003
declare @p3 int
set @p3=8
declare @p4 int
set @p4=1
declare @p5 int
set @p5=34
exec sp_ddopen @p1 output,N'sp_sproc_columns',@p3 output,@p4 output,@p5 output,N'some_stored_procedure_name',NULL,NULL,NULL
select @p1, @p3, @p4, @p5
编辑:我最好的猜测:它是一个ODBC驱动程序,询问存储过程需要的参数 显然Here's the source code for sp_ddopen。
edit2:exec之前的@p参数设置显然是artifact of the Sql Profiler。在原始形式中,sp_ddopen将被调用,所有参数都为null,并且它们将返回显示的值。
答案 0 :(得分:3)
从sp_helptext sp_ddopen
起,它看起来像是ODBC / OLEDB之类的API之间的版本转换层,适用于各种系统存储过程。
如果你的情况我认为该应用程序是版本独立调用sp_sproc_columns
来嗅探some_stored_procedure_name
的原型。
答案 1 :(得分:3)
根据MS(参见http://msdn.microsoft.com/en-us/library/ms187961.aspx),这是一个内部存储过程,没有正式记录...它在内部数据库目录(数据库对象的元数据)上运行,并且例如由SQL Server使用您/某些应用调用SQLTables
或SQLTablesW
时的ODBC驱动程序(请参阅示例http://support.microsoft.com/kb/315761/en-us)。
因此我认为你的猜测是正确的: - )