sp_ddopen - 这是做什么的?

时间:2011-10-26 13:27:50

标签: sql-server sql-server-2005 stored-procedures

在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,并且它们将返回显示的值。

2 个答案:

答案 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使用您/某些应用调用SQLTablesSQLTablesW时的ODBC驱动程序(请参阅示例http://support.microsoft.com/kb/315761/en-us)。

因此我认为你的猜测是正确的: - )