sp_ddopen - 这是做什么的?

5

在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驱动程序,要求存储过程需要的参数。
这是sp_ddopen的源代码,显然。

编辑2:在执行之前设置@p参数是Sql Profiler的副作用。原始形式中,sp_ddopen将被调用,所有参数都为null,并且它们将返回所示的值。

2个回答

3

根据 sp_helptext sp_ddopen,它看起来是在各种系统存储过程和 API(例如 ODBC/OLEDB)之间提供版本转换的中间层。

对于您的情况,我猜测应用程序以版本无关的方式调用 sp_sproc_columns 来查看 some_stored_procedure_name 的原型。


3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接