2014-10-29 5 views
2

Что означает синтаксис «::» в сообщении SSDT SQL71561? Например:Что означает «::» в контексте SQL?

SQL71561: Вид:. [DBO] [V_RPT_MART_SIGNALS] содержит неразрешенную ссылку на object.Either объект не существует или ссылка является неоднозначной, поскольку он может относиться к любому из следующих объектов:
[SSISDB]. [КАТАЛОГ]. [EXECUTIONS]. [EXECUTION_ID] или
[SSISDB]. [КАТАЛОГ]. [EXECUTIONS]. [TM] :: [EXECUTION_ID]

Это кажется таким странный синтаксис, который можно увидеть в контексте SQL, я не могу поверить, что не могу найти его документально нигде. (Я обнаружил, что делает поиск в Интернете для «::» не работает слишком хорошо!)

+0

возможно дубликат [Двойной двоеточие (:) нотации в SQL] (http://stackoverflow.com/questions/5758499/double-colon-notation-in-sql) –

+0

@Adelphia что вопрос для Postgres. В OP здесь используется SQL Server. –

ответ

3

В конкретном случае там

[SSISDB].[CATALOG].[EXECUTIONS].[TM]::[EXECUTION_ID] 

Синтаксис будет database.schema.table_or_view.column :: static_method_on_clr_type

двойное двоеточие также используется in legacy syntax for some functions

SELECT * FROM ::fn_trace_getinfo(default) 

И в грамматике для GRANT, REVOKE, DENY. (Example)

GRANT INSERT ON SCHEMA :: HumanResources TO guest; 
+0

Итак, это не оператор разрешения области видимости, как в моем ответе? – Rahul

+0

@Rahul No. Единственная допустимая интерпретация и использование после имени столбца вызывали статический метод типа CLR. –

+1

Хмм +1. Хорошо знать. Удаление моего ответа. – Rahul

Смежные вопросы