Имеет ли значение, если я выполняю хранимую процедуру с префиксом dbo или нет? - PullRequest
2 голосов
/ 23 февраля 2012

Мне посоветовали при выполнении хранимой процедуры, я должен включить prefox dbo, например,

exec dbo.'name_of_stored_procedure '

  • Имеет ли значение, если я не включупрефикс?
  • Когда мне следует использовать префикс?

Ответы [ 3 ]

8 голосов
/ 24 февраля 2012

Если ваша хранимая процедура находится в схеме dbo, вам следует сказать:

EXEC dbo.name_of_procedure;

Плюсы для определения схемы:

  • вы знаете, что вызываете dbo.procedure, даже если есть также some_other_schema.procedure
  • , обработчику запросов не нужно сначала проверять схему по умолчанию для объекта с аналогичным именем
  • вы не получите непредсказуемые результаты (например,если в вашей схеме есть такой, но вы имели в виду dbo)
  • , у вас больше шансов на повторное использование плана запросов, если все последовательно используют схему

Минусы для определения схемы:

  • вы вводите дополнительные четыре символа

Что еще делает не явным купить вас?

2 голосов
/ 24 февраля 2012

dbo не префикс, это схема Схемы похожи на группы, вы можете создать схему с именем Production и иметь свои процедуры, такие как Production.AddStock, и другую, называемую Sales, и иметь процедуры, такие как Sales.GetCustomer

.

Они особенно хороши для управления разрешениями. Эта ссылка может помочь вам: http://msdn.microsoft.com/en-us/library/ms190387.aspx

2 голосов
/ 23 февраля 2012

В SQL лучше быть явным и включать схему по умолчанию [dbo] всякий раз, когда вы ссылаетесь на объекты, потому что позже вы можете захотеть определить свои собственные схемы, в которых хранятся процы или таблицы с тем же именем.например,

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