sp_ddopen - что это делает? - PullRequest
       1

sp_ddopen - что это делает?

5 голосов
/ 26 октября 2011

Захвачено в 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

edit: моя лучшая догадка: это драйвер ODBC, запрашивающий параметры, которые нужны хранимой процедуре.
Вот исходный код sp_ddopen , по-видимому.

edit2: установка параметров @p перед exec, по-видимому, является артефактом Sql Profiler . В своем первоначальном виде sp_ddopen был бы вызван со всеми параметрами, являющимися нулевыми, и они возвратили бы показанные значения.

Ответы [ 2 ]

3 голосов
/ 26 октября 2011

Согласно MS (см. http://msdn.microsoft.com/en-us/library/ms187961.aspx) это внутренняя хранимая процедура, которая НЕ официально документирована ... она работает с внутренним каталогом БД (метаданными для объектов БД) и используется, например, SQL Server Драйвер ODBC, когда вы / какое-либо приложение вызывает SQLTables или SQLTablesW (см., Например, http://support.microsoft.com/kb/315761/en-us).

Таким образом, я думаю, что ваше предположение верно: -)

3 голосов
/ 26 октября 2011

Начиная с sp_helptext sp_ddopen это выглядит как слой перевода версий между API, таким как ODBC / OLEDB, для различных системных хранимых процедур.

Если в вашем случае я бы предположил, что приложение независимо от версии вызывает sp_sproc_columns чтобы понюхать прототип some_stored_procedure_name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...