powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Что реально делает SqlCommand.Prepare()?
16 сообщений из 16, страница 1 из 1
Что реально делает SqlCommand.Prepare()?
    #32923842
Fedishen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что реально делает SqlCommand.Prepare()? Если
CommandType = CommandType.StoredProcedure
Каким образом метод сравнивает параметры SqlCommand c параметрами ХП перед тем как передать их в ХП и выполнить ее?
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32924447
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посмотри отличия в профайлере
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32924820
Fedishen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
смотрел, ниче ни делает
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925155
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
FedishenЧто реально делает SqlCommand.Prepare()? Если
CommandType = CommandType.StoredProcedure
Каким образом метод сравнивает параметры SqlCommand c параметрами ХП перед тем как передать их в ХП и выполнить ее?

А зачем их сравнивать? Параметры передаются в соответствии с описанием в Parameters.Add . Если преобразование к типам в описании процедуры невозможно- будет ошибка
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925175
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Prepare не связан с параметрами.

Exams 070-316 Developing Windows-based Applications with Visual C# .Net
The SqlCommand.Prepare Method creates a prepared version of the command on an instance of SQL Server. It prepares a compiled version of the command on the data source. We only need to compile the stored procedure once. Compiling the procedure would improve performance since it will run many times.


ИМХО при использовании ADO.NET и MS SQL Server о Prepare вообще можно забыть.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925189
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточню, речь идет об SqlCommand и MS SQL Server = MS SQL Server 2k

Так как на других СУБД можно поймать исключение и на Prepare непосредственно до выполнения команды.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925199
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мануал гласит:
Remarks
If CommandType is set to StoredProcedure, the call to Prepare should succeed, although it may result in a no-op.


Если CommandType = CommandType.Text, о prepare работает так же как и в OLEDB(речь идёт о mssql 2000). При первом выполнении команды выдаётся sp_prepexec , при последующих sp_execute.
Без prepare выдаётся sp_executesql
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925206
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
:-)
На то он и Text

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925211
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в OLEDB prepared вызов ХП выдаёт sp_prepexecrpc c последующими sp_execute
Экономия - на передаче имени процедуры и поиске процедуры по имени
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925214
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в OLEDB prepared вызов ХП выдаёт sp_prepexecrpc c последующими sp_execute
Экономия - на передаче имени процедуры и поиске процедуры по имени

не призыв ли это: держать connect всегда открытым и не использовать pooling? :-)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925696
Fedishen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MSDN
The SqlCommand.Prepare Method creates a prepared version of the command on an instance of SQL Server.

А как это понимать? Если посмотреть в Profiler'е то кроме строчки exec "Имя процедуры" ничего и не происходит
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925776
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как это понимать? Если посмотреть в Profiler'е то кроме строчки exec "Имя процедуры" ничего и не происходит

Сделайте CommandType.Text и посмотрите, а ответ про CommandType.StoredProcedure уже прозвучал, повторю:
MSDN
If CommandType is set to StoredProcedure, the call to Prepare should succeed, although it may result in a no-op.


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925841
Alexey Sh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa
в OLEDB prepared вызов ХП выдаёт sp_prepexecrpc c последующими sp_execute
Экономия - на передаче имени процедуры и поиске процедуры по имени

не призыв ли это: держать connect всегда открытым и не использовать pooling? :-)

Код: plaintext
 uid  =  S a

Нет, не призыв :) Исключительно для использования prepared по назначению
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925887
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати еще до кучи:
KB
SQL Server 2000 .... does not run Prepare until the first command is executed . This optimization prevents the overhead of Prepare if no commands are subsequently executed .



Исключительно для использования prepared по назначению

Согласен, правда в моих программах очень редко достается Command'у такое предназначение. :-)

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32925912
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
OFF:
Поздравляю Fedishen :-)
Я пробил в google: "SqlCommand.Prepare" - твоя тема на втором почетном месте после MSDN.

http://www.google.com/search?hl=en&lr=&q=sqlcommand.prepare&btnG=Search


Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Что реально делает SqlCommand.Prepare()?
    #32929218
Fedishen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кул
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Что реально делает SqlCommand.Prepare()?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]