CREATE SYNONYM (Transact-SQL)

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控執行個體

建立新的同義字。

Transact-SQL 語法慣例

Syntax

SQL Server 語法:

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>

<object> ::=
{
    [
        server_name. [ database_name ] . [ schema_name_2 ] .
        | database_name. [ schema_name_2 ] .
        | schema_name_2.
    ]
    object_name
}

Azure SQL 資料庫 語法:

CREATE SYNONYM [ schema_name_1. ] synonym_name FOR <object>

<object> ::=
{
    [ database_name. [ schema_name_2 ] . | schema_name_2. ] object_name
}

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

schema_name_1

指定建立同義字的結構描述。 如果未 指定schema_name,SQL Server 會使用目前使用者的預設架構。

synonym_name

新同義字的名稱。

server_name

基底物件所在的伺服器名稱。

database_name

基底物件所在的資料庫名稱。 如果未 指定database_name ,則會使用目前資料庫的名稱。

schema_name_2

基底對象的架構名稱。 如果未 指定schema_name ,則會使用目前用戶的默認架構。

object_name

同義字所參考之基底對象的名稱。

注意

當database_name是目前資料庫時,Azure SQL 資料庫 支援三部分名稱格式database_name.[schema_name].object_name,或當 database_nametempdbobject_name開頭為 #

備註

在建立同義字時,基底物件不需要存在。 SQL Server 會在執行階段檢查基底物件是否存在。

  • 您可以建立下列物件類型的同義字:

    • 組件 (CLR) 預存程序
    • 組件 (CLR) 資料表值函式
    • 組件 (CLR) 純量函數
    • 組件 (CLR) 彙總函式
    • 複寫篩選程序
    • 擴充預存程式
    • T-SQL 純量函式
    • T-SQL 數據表值函式
    • T-SQL 內嵌數據表值函式
    • T-SQL 預存程式
    • 資料表(使用者定義,包括本機和全域臨時表)
    • 檢視
  • 不支援函式基底物件的四部分名稱。

  • 您可以在動態 T-SQL 中建立、卸除和參考同義字。

  • 同義字是資料庫特定的,而且無法由其他數據庫存取。

權限

若要在指定的架構中建立同義字,用戶必須具有 CREATE SYNONYM 許可權並擁有架構或具有 ALTER SCHEMA 許可權。

許可權 CREATE SYNONYM 是可授與的許可權。

注意

您不需要基底對象的許可權才能成功編譯 CREATE SYNONYM 語句,因為基底物件上的所有許可權檢查都會延後到運行時間。

範例

A. 建立本機物件的同義字

下列範例會先建立 Product 資料庫中之基底物件 AdventureWorks2022 的同義字,再查詢這個同義字。

-- Create a synonym for the Product table in AdventureWorks2022.
CREATE SYNONYM MyProduct
FOR AdventureWorks2022.Production.Product;
GO

-- Query the Product table by using the synonym.
SELECT ProductID, Name
FROM MyProduct
WHERE ProductID < 5;
GO

以下為結果集。

ProductID   Name
----------- --------------------------
1           Adjustable Race
2           Bearing Ball
3           BB Ball Bearing
4           Headset Ball Bearings

(4 row(s) affected)

B. 建立遠端物件的同義字

在下列範例中,基底物件 Contact 在名稱為 Server_Remote 的遠端伺服器中。

EXEC sp_addlinkedserver Server_Remote;
GO
USE tempdb;
GO
CREATE SYNONYM MyEmployee FOR Server_Remote.AdventureWorks2022.HumanResources.Employee;
GO

C. 建立使用者定義函數的同義字

下列範例會建立名為 dbo.OrderDozen 的函數,以便將訂單數量增加為平均 12 單位。 然後,此範例會建立 dbo.CorrectOrder 函數的同義字 dbo.OrderDozen

-- Creating the dbo.OrderDozen function
CREATE FUNCTION dbo.OrderDozen (@OrderAmt INT)
RETURNS INT
    WITH EXECUTE AS CALLER
AS
BEGIN
    IF @OrderAmt % 12 <> 0
    BEGIN
        SET @OrderAmt += 12 - (@OrderAmt % 12)
    END

    RETURN (@OrderAmt);
END;
GO

-- Using the dbo.OrderDozen function
DECLARE @Amt INT;

SET @Amt = 15;

SELECT @Amt AS OriginalOrder,
    dbo.OrderDozen(@Amt) AS ModifiedOrder;

-- Create a synonym dbo.CorrectOrder for the dbo.OrderDozen function.
CREATE SYNONYM dbo.CorrectOrder
FOR dbo.OrderDozen;
GO

-- Using the dbo.CorrectOrder synonym.
DECLARE @Amt INT;

SET @Amt = 15;

SELECT
    @Amt AS OriginalOrder,
    dbo.CorrectOrder(@Amt) AS ModifiedOrder;

另請參閱

下一步