В чем разница между схемами "::" и "sys"? - PullRequest
1 голос
/ 11 ноября 2009

Насколько я знаю, BOL exmaple на fn_trace_getinfo раньше использовал
:: вместо sys схемы в примере, подобном следующему

С

    SELECT * FROM ::fn_trace_getinfo(default)

К

    SELECT * FROM sys.fn_trace_getinfo(default)

Есть ли различия между этими двумя?
И что означает ::? 1018 *

Ответы [ 2 ]

2 голосов
/ 11 ноября 2009

Даже эксперты SQL не уверены. Он изменился с SQL Server 2000 на SQL Server 2005

Мое случайное предположение - разделение пользователя / схемы в SQL Server 2005 устраняет необходимость в сокращенной системной схеме

2 голосов
/ 11 ноября 2009

ОК, я надеюсь это (UDF, начинающийся с fn _...) помогает

Со страницы кажется, что :: скажет Sql Server, что это должен быть System UDF, и он будет найден только в главной базе данных.

Q:

Я часто читал, как хранится процедуры, которые мы создаем, не должны быть назван с sp_, так как SQL Server будет сначала проверьте мастер БД перед текущий дб при попытке найти зр выполнить. Я всегда кивал и думал, как я был рад, что я не сделал тот. По какой-то причине он никогда не нажимал что поведение UDF может быть таким же.

У меня есть несколько UDF, которые начинаются с fn _... Когда я ссылаюсь на UDF как dbo.fn _... SQL Server проверяет основную базу данных для них и только после не найдя они проверяют текущую базу данных? Если это так, это для этого есть производительность?

A:

Нет. Чтобы позвонить системной UDF, вы нужно использовать ::, так это то, что SQL Сервер ищет. Все системы поставляются UDF - это табличные функции, такие как скалярные системные функции вообще не являются UDF.

...