將識別碼當成物件名稱使用
物件的完整名稱由四個識別碼組成:伺服器名稱、資料庫名稱、結構描述名稱和物件名稱。它們以下列格式顯示:
server_name**.[database_name].[schema_name].**object_name
| database_name**.[schema_name].**object_name
| schema_name**.**object_name
| object_name
伺服器、資料庫和擁有者名稱,即所謂的物件名稱限定詞。當您參考物件時,不必指定伺服器、資料庫和擁有者。可以用句點標示限定詞的位置來省略限定詞。物件名稱的有效格式包括:
server_name**.database_name.schema_name.**object_name
server_name**.database_name..**object_name
server_name**..schema_name.**object_name
server_name**...**object_name
database_name**.schema_name.**object_name
database_name**..**object_name
schema_name**.**object_name
object_name
四個部份的物件名稱全部指定時,即稱為完整名稱。在 Microsoft SQL Server 中建立的每一個物件必須有唯一的完整名稱。例如,在相同資料庫中可以有兩個資料表都叫做 xyz,只要它們的擁有者是不同的。
大部份物件參考均使用三部份名稱。預設的 server_name 是本機伺服器。預設的 database_name 是連接的目前資料庫。預設的 schema_name 是提交陳述式之使用者的預設結構描述。除非額外設定,否則新使用者的預設結構描述就是 dbo 結構描述。
四部份名稱通常用於分散式查詢或遠端預存程序呼叫。它們使用的格式如下:
- linkedserver**.catalog.schema.**object_name
下表顯示部份名稱及其描述。
部份名稱 |
描述 |
---|---|
linkedserver |
連結的伺服器之名稱,其中包含由分散式查詢參考的物件。 |
catalog |
內含分散式查詢參考物件的資料庫目錄 (Catalog) 名稱。當查詢 SQL Server 資料庫時,此目錄就是資料庫名稱。 |
schema |
內含分散式查詢參考物件的結構描述 (Schema) 名稱。 |
object_name |
物件名稱或資料表名稱。 |
若為分散式查詢,四部份名稱的伺服器部份是指連結的伺服器。連結的伺服器是以 sp_addlinkedserver 定義的伺服器名稱。連結的伺服器識別可傳回記錄集的 OLE DB 提供者和 OLE DB 資料來源,Microsoft SQL Server 可使用此記錄集作為 Transact-SQL 陳述式的一部份。
若要決定 OLE DB 資料來源中有哪些元件使用於目錄和名稱的結構描述部份,請參閱該連結的伺服器指定之 OLE DB 提供者的說明文件。如果連結的伺服器執行 SQL Server 的執行個體,則目錄名稱是包含物件的資料庫,且結構描述為物件的擁有者。如需四部份名稱和分散式查詢的詳細資訊,請參閱<分散式查詢>。
對於遠端程序呼叫而言,四部份的名稱中伺服器部份是指遠端伺服器。以 sp_addserver 指定的遠端伺服器是透過本機伺服器存取之 SQL Server 的執行個體。請使用下列格式的程序名稱,在遠端伺服器上執行預存程序:
- server**.database.schema_name.**procedure
使用遠端預存程序時,名稱的四個部份全部都需要。如需遠端伺服器的詳細資訊,請參閱<設定遠端伺服器>。
使用識別碼參考資料行
同一個資料表或檢視中的資料行名稱必須是唯一的。您可以使用最多三個字首在查詢中指定資料行,在這個查詢中,參考的資料表中可以具有名稱相同的資料行。可接受下列任一格式:
database_name**.schema_name.object_name.**column_name
database_name**..**object_name.column_name
schema_name.object_name**.**column_name
object_name**.**column_name
參考使用者自訂類型資料行的資料行屬性
會在資料行名稱與屬性名稱之間使用句號分隔符號 (.) 來參考使用者自訂類型資料行的屬性。參考屬性名稱時,您也可以參考資料表或檢視識別碼,但不能參考資料庫或結構描述識別碼。可接受下列格式:
column_name**.property_name1.**property_name2[…]
object_name**.column_name.property_name1.**property_name2[…]