共用方式為


SQL Server 與 Azure SQL 受控執行個體之間的 T-SQL 差異

適用於:Azure SQL 受控執行個體

本文摘要說明 Azure SQL 受控執行個體和 SQL Server 在語法與行為上的差異。

SQL 受控執行個體提供與 SQL Server 資料庫引擎的高度相容性,而且 SQL 受控執行個體支援大部分的功能。

圖表顯示從 SQL Server 輕鬆移轉。

SQL 受控執行個體引進一些 PaaS 限制,而且相較於 SQL Server,還有一些行為變更。 這些差異可分成下列幾種類別:

大部分的功能都是架構限制式,並代表服務功能。

在 SQL 受控執行個體中發現的暫時性已知問題,未來將會解決並在新功能中說明。

注意

Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。

可用性

Always On 可用性群組

SQL 受控執行個體內建高可用性,並且無法由使用者控制。 不支援下列陳述式:

備份

Azure SQL 受控執行個體會自動備份,所以使用者可以建立完整的資料庫 COPY_ONLY 備份。 不支援差異、記錄和檔案快照集備份。

  • 使用 SQL 受控執行個體,您可以將執行個體資料庫只備份到 Azure Blob 儲存體帳戶:
    • 只支援 BACKUP TO URL
    • 不支援 FILETAPE 及備份裝置。
  • 支援大部分一般的 WITH 選項。
    • COPY_ONLY 屬於必要項目。
    • 不支援FILE_SNAPSHOTCREDENTIAL
    • 磁帶選項:不支援 REWINDNOREWINDUNLOADNOUNLOAD
    • 記錄專用選項:不支援 NORECOVERYSTANDBYNO_TRUNCATE

限制:

  • 使用 SQL 受控執行個體,您可以將執行個體資料庫備份為最多具有 32 個等量磁碟區的備份,這足夠最多 4 TB 的資料庫使用 (如果使用備份壓縮)。

  • 您無法在使用服務管理的透明資料加密 (TDE) 加密的資料庫上執行 BACKUP DATABASE ... WITH COPY_ONLY。 服務管理的 TDE 會強制使用內部 TDE 金鑰來加密備份。 無法匯出金鑰,因此您無法還原備份。 使用自動備份和時間點還原,或改用客戶管理的 (BYOK) TDE。 您也可以在資料庫上停用加密。

  • SQL 受控執行個體上所建立的原生備份只能還原至 SQL Server 2022 執行個體。 這是因為相較於其他版本的 SQL Server,SQL 受控執行個體具有較高的內部資料庫版本。 如需詳細資訊,請檢閱將 SQL 受控執行個體資料庫備份還原至 SQL Server 2022

  • 若要將資料庫備份或還原至 Azure 儲存體,或是從 Azure 儲存體備份或還原資料庫,您可使用受控識別或共用存取簽章 (SAS) 來驗證,SAS 是 URI,會授與您 Azure 儲存體資源的有限存取權限,請在此處深入了解。 這些案例不支援使用存取金鑰。

  • 在 SQL 受控執行個體中使用 BACKUP 命令時的備份等量磁碟區大小上限為 195 GB,這是最大的 Blob 大小。 在備份命令中增加等量磁碟區的數目,以減少個別的等量磁碟區大小並維持在這項限制內。

    提示

    若要解決這項限制,當您從內部部署環境或虛擬機器中的 SQL Server 備份資料庫時,您可以:

    • 備份至 DISK,而不是備份至 URL
    • 將備份檔案上傳至 Blob 儲存體。
    • 還原至 SQL 受控執行個體。

    SQL 受控執行個體中的 Restore 命令支援備份檔案中較大的 Blob 大小,因為不同的 Blob 類型用於儲存已上傳的備份檔案。

如需使用 T-SQL 進行備份的相關資訊,請參閱備份

安全性

稽核

Microsoft Azure SQL 和 SQL Server 中的稽核主要差異如下:

  • 在 SQL 受控執行個體中,稽核在伺服器層級執行。 .xel 記錄檔儲存於 Azure Blob 儲存體。
  • 在 Azure SQL Database 中,稽核在資料庫層級執行。 .xel 記錄檔儲存於 Azure Blob 儲存體。
  • 在 SQL Server、內部部署或虛擬機器中,稽核在伺服器層級執行。 事件會儲存在檔案系統或 Windows 事件記錄檔上。

SQL 受控執行個體中的 XEvent 稽核支援 Azure Blob 儲存體目標。 不支援檔案與 Windows 記錄。

向 Azure Blob 儲存體進行稽核的 CREATE AUDIT 語法有一個主要差異:

  • 提供新的 TO URL 語法,可用來指定放置 .xel 檔案的 Azure Blob 儲存體容器 URL。
  • 不支援 TO FILE 語法,因為 SQL 受控執行個體無法存取 Windows 檔案共用。

如需詳細資訊,請參閱

憑證

SQL 受控執行個體無法存取檔案共用及 Windows 資料夾,因此會有下列限制:

  • 憑證不支援 CREATE FROM/BACKUP TO 檔案。
  • 不支援 FILE/ASSEMBLY 中的 CREATE/BACKUP 憑證。 無法使用私密金鑰檔案。

請參閱 CREATE CERTIFICATEBACKUP CERTIFICATE

因應措施取得憑證二進位內容和私密金鑰,將其儲存為 .sql 檔案,並從二進位建立,而不是建立憑證的備份及還原備份:

CREATE CERTIFICATE
   FROM BINARY = asn_encoded_certificate
WITH PRIVATE KEY (<private_key_options>);

認證

支援受控識別、Azure Key Vault 與SHARED ACCESS SIGNATURE 身分識別。 不支援 Windows 使用者。

請參閱 CREATE CREDENTIALALTER CREDENTIAL

密碼編譯提供者

SQL 受控執行個體無法存取檔案,所以無法建立密碼編譯提供者:

登入和使用者

  • 不支援使用 FROM CERTIFICATEFROM ASYMMETRIC KEYFROM SID 建立 SQL 登入。 請參閱 CREATE LOGIN。 伺服器主體 (登入) 建立於伺服器層級,而使用者 (資料庫主體) 則建立於資料庫層級。 支援使用 CREATE LOGIN 語法建立的 Microsoft Entra 登入與使用 CREATE USER FROM LOGIN 語法建立的 Microsoft Entra 使用者。 當建立使用者並指定 FROM LOGIN 時,該使用者會關聯登入,並繼承指派給該使用者的伺服器角色與權限。

    SQL 受控執行個體支援使用 CREATE USER [AADUser/AAD group] FROM EXTERNAL PROVIDER 語法並根據 Microsoft Entra 身分識別來建立自主資料庫使用者。 以這種方式建立的使用者不會關聯伺服器主體,即使 master 資料庫存在相同名稱伺服器主體仍是如此。

  • 不支援使用 CREATE LOGIN ... FROM WINDOWS 語法建立的 Windows 登入。 使用 Microsoft Entra 登入與使用者。

  • 執行個體的 Microsoft Entra 管理員具有不受限制的系統管理員權限

  • 某些功能不支援在跨執行個體互動使用 Microsoft Entra 登入,僅支援在單一 SQL 受控執行個體內使用,例如 SQL Server 複寫。 不過,連結的伺服器功能支援使用 Microsoft Entra 伺服器主體 (登入) 的跨執行個體驗證。

  • 不支援將對應至 Microsoft Entra 群組的 Microsoft Entra 登入設定為資料庫擁有者。 即使尚未在資料庫中建立登入,Microsoft Entra 群組的成員也可以是資料庫擁有者。

  • 支援使用其他 Microsoft Entra 主體模擬 Microsoft Entra 伺服器層級的主體,例如 EXECUTE AS 子句。 EXECUTE AS 限制如下:

    • 名稱與登入名稱不同時,不支援對 Microsoft Entra 使用者使用 EXECUTE AS USER。 其中一項範例是,透過 CREATE USER [myAadUser] FROM LOGIN [john@contoso.com] 語法建立使用者,並嘗試透過 EXEC AS USER = myAadUser 進行模擬。 從 Microsoft Entra 登入建立使用者時,將 user_name 指定為來自登入的相同 login_name。

    • 只有屬於 sysadmin 角色成員的 SQL Server 層級登入,才能執行下列目標為 Microsoft Entra 主體的作業:

      • EXECUTE AS USER
      • EXECUTE AS LOGIN
    • 若要使用 EXECUTE AS 陳述式模擬使用者,使用者必須直接對應到 Microsoft Entra 登入。 使用者若是對應到 Microsoft Entra 伺服器主體的 Microsoft Entra 群組成員,則即使呼叫者擁有指定使用者名稱的模擬權限,也無法使用 EXECUTE AS 陳述式有效模擬使用者。

  • 在使用 SSMS V18.4 或更新版本或是 SqlPackage 的 SQL 受控執行個體中,其 Microsoft Entra 使用者支援使用 bacpac 檔案進行資料庫匯出/匯入。

    • 支援下列設定使用資料庫 bacpac 檔案:
      • 在相同 Microsoft Entra 網域內的不同管理執行個體之間匯出/匯入資料庫。
      • 從 SQL 受控執行個體匯出資料庫,然後匯入至相同 Microsoft Entra 網域內的 SQL Database。
      • 從 SQL Database 匯出資料庫,然後匯入至相同 Microsoft Entra 網域內的 SQL 受控執行個體。
      • 從 SQL 受控執行個體匯出資料庫,然後匯入至 SQL Server (2012 版或更新版本)。
        • 在此設定中,所有 Microsoft Entra 使用者都會建立為不需登入的 SQL Server 資料庫主體 (使用者)。 使用者的類型為 SQL,在 sys.database_principals 會顯示為 SQL_USER。 其權限和角色會保留在 SQL Server 資料庫中繼資料中,並且可用於模擬。 不過,該權限和角色不能用來使用其認證存取和登入 SQL Server。
  • 只有伺服器層級主體登入 (由 SQL 受控執行個體佈建程序所建立)、伺服器角色的成員 (例如 securityadminsysadmin),或在伺服器層級上有 ALTER ANY LOGIN 權限的其他登入,可以在 master 資料庫中建立 SQL 受控執行個體的 Microsoft Entra 伺服器主體 (登入)。

  • SQL 驗證型登入必須獲指派 sysadmin 角色,才能建立 Microsoft Entra 身分識別登入。

  • 登入必須是裝載 Azure SQL 受控執行個體的相同 Microsoft Entra 租用戶成員。

  • 從 SQL Server Management Studio 18.0 預覽版 5 開始,Microsoft Entra 伺服器主體 (登入) 會顯示在物件總管中。

  • 在執行個體上啟用 Microsoft Entra 系統管理員之後,系統會自動為其建立具有 sysadmin 存取層級的伺服器主體。

  • 在驗證期間,解析驗證主體時會套用下列順序:

    1. 如果 Microsoft Entra 帳戶直接對應至 Microsoft Entra 登入 (顯示於 sys.server_principals 為類型「E」),請授與存取權並套用該登入的權限。
    2. 如果 Microsoft Entra 帳戶是對應至 Microsoft Entra 登入的群組成員 (顯示於 sys.server_principals 為類型「X」),請授與存取權並套用該登入的權限。
    3. 如果 Microsoft Entra 帳戶以直接對應至資料庫中 Microsoft Entra 使用者的形式存在 (在 sys.database_principals 中顯示為類型「E」),則授與存取權,並套用 Microsoft Entra 資料庫使用者的權限。
    4. 如果 Microsoft Entra 帳戶是對應至資料庫 Microsoft Entra 使用者的 Microsoft Entra 群組成員 (顯示於 sys.database_principals 為類型「X」),請授與存取權並套用該 Microsoft Entra 群組使用者的權限。

服務金鑰和服務主要金鑰

組態

緩衝集區延伸

定序

預設執行個體定序為 SQL_Latin1_General_CP1_CI_AS,而且可指定為建立參數。 請參閱定序

相容性層級

  • 支援的相容性層級為 100、110、120、130、140、150 和 160。
  • 不支援低於 100 的相容性層級。
  • 新資料庫的預設相容性層級為 150。 針對已還原的資料庫,如果相容性層級為 100 或更高,則維持不變。

請參閱 ALTER DATABASE 相容性層級

資料庫鏡像

不支援資料庫鏡像。

  • 不支援 ALTER DATABASE SET PARTNERSET WITNESS 選項。
  • 不支援 CREATE ENDPOINT … FOR DATABASE_MIRRORING

如需詳細資訊,請參閱 ALTER DATABASE SET PARTNER and SET WITNESSCREATE ENDPOINT … FOR DATABASE_MIRRORING

資料庫選項

  • 不支援多個記錄檔。
  • 「一般用途」服務層級中不支援記憶體內部物件。
  • 每個一般用途執行個體都有 280 個檔案的限制,這意指每個資料庫最多可有 280 個檔案。 一般用途層中的資料和記錄檔都會計入此限制。 業務關鍵層支援每個資料庫 32767 個檔案
  • 資料庫不能包含其中包含 FILESTREAM 資料的檔案群組。 如果 .bak 包含 FILESTREAM 資料,還原會失敗。
  • 每個檔案都位於 Azure Blob 儲存體中。 每個檔案的 IO 和輸送量均取決於每個個別檔案的大小。

CREATE DATABASE 陳述式

下列限制適用於 CREATE DATABASE

  • 無法定義檔案和檔案群組。

  • 記憶體最佳化檔案群組和檔案會自動新增,並稱為 XTP。

  • 不支援 CONTAINMENT 選項。

  • 不支援 WITH 選項。

    提示

    因應措施是在 CREATE DATABASE 之後使用 ALTER DATABASE 來設定資料庫選項,以新增檔案或設定內含項目。

  • 不支援 FOR ATTACH 選項。

  • 不支援 AS SNAPSHOT OF 選項。

如需詳細資訊,請參閱 CREATE DATABASE

ALTER DATABASE 陳述式

有些檔案屬性無法設定或變更:

  • ALTER DATABASE ADD FILE (FILENAME='path') T-SQL 陳述式中無法指定檔案路徑。 從指令碼中移除 FILENAME,因為 SQL 受控執行個體會自動放置這些檔案。
  • 無法使用 ALTER DATABASE 陳述式變更檔案名稱。
  • 不允許改變 XTP 檔案或檔案群組。

以下為預設選項且無法變更:

  • MULTI_USER
  • ENABLE_BROKER
  • AUTO_CLOSE OFF

下列選項無法修改:

  • AUTO_CLOSE
  • AUTOMATIC_TUNING(CREATE_INDEX=ON|OFF)
  • AUTOMATIC_TUNING(DROP_INDEX=ON|OFF)
  • DISABLE_BROKER
  • EMERGENCY
  • ENABLE_BROKER
  • FILESTREAM
  • HADR
  • NEW_BROKER
  • OFFLINE
  • PAGE_VERIFY
  • PARTNER
  • READ_ONLY
  • RECOVERY BULK_LOGGED
  • RECOVERY_SIMPLE
  • REMOTE_DATA_ARCHIVE
  • RESTRICTED_USER
  • SINGLE_USER
  • WITNESS

有些 ALTER DATABASE 陳述式 (例如 SET CONTAINMENT) 可能會暫時失敗,例如在自動化資料庫備份期間,或是在建立資料庫之後。 在此情況下,應重試 ALTER DATABASE 陳述式。 如需相關錯誤訊息的詳細資訊,請參閱<備註>一節。

如需詳細資訊,請參閱 ALTER DATABASE

SQL Server Agent

  • SQL 受控執行個體中目前不支援啟用和停用 SQL Server Agent。 SQL 代理程式一律會處於正在執行的狀態。
  • 不支援以閒置 CPU 為基礎的作業排程觸發程序。
  • SQL Server Agent 設定是唯讀狀態。 SQL 受控執行個體不支援 sp_set_agent_properties 程序。
  • 工作
    • 支援 T-SQL 作業步驟。
    • 支援下列複寫工作:
      • 交易記錄讀取器
      • 快照式
      • 散發者
    • 支援 SSIS 作業步驟。
    • 目前不支援其他類型的工作步驟:
      • 不支援合併複寫作業步驟。
      • 不支援佇列讀取器。
      • 尚不支援命令殼層。
    • SQL 受控執行個體無法存取外部資源,例如,透過 robocopy 的網路共用。
    • 不支援 SQL Server Analysis Services。
  • 部分支援通知。
  • 雖然您必須設定 Database Mail 設定檔,但仍支援電子郵件通知。 SQL Server Agent 可以只使用一個 Database Mail 設定檔,但其必須名為 AzureManagedInstance_dbmail_profile
    • 不支援呼叫器。
    • 不支援 NetSend。
    • 尚不支援警示。
    • 不支援 Proxy。
  • 不支援 EventLog。
  • 使用者必須直接對應到 Microsoft Entra 伺服器登入,才能建立、修改或執行 SQL Agent 工作。 未直接對應的使用者 (例如擁有權限建立、修改或執行 SQL Agent 作業的 Microsoft Entra 群組所屬使用者) 將無法有效執行這些動作。 這是因為 SQL 受控執行個體的模擬和 EXECUTE AS 限制
  • 不支援主要/目標 (MSX/TSX) 作業的多伺服器管理功能。

如需有關 SQL Server Agent 的資訊,請參閱 SQL Server Agent

資料表

以下是不支援的資料表類型:

如需如何建立和更改資料表的相關資訊,請參閱 CREATE TABLEALTER TABLE

功能

BULK INSERT / OPENROWSET

SQL 受控執行個體無法存取檔案共用及 Windows 資料夾,因此必須從 Azure Blob 儲存體匯入這些檔案:

  • 從 Azure Blob 儲存體匯入檔案時,BULK INSERT 命令中需要 DATASOURCE。 請參閱大量插入
  • 當您從 Azure Blob 儲存體讀取檔案的內容時,OPENROWSET 函式中需要 DATASOURCE。 請參閱 OPENROWSET
  • OPENROWSET 可以用來從 Azure SQL Database、Azure SQL 受控執行個體或 SQL Server 執行個體讀取資料。 不支援 Oracle 資料庫或 Excel 檔案之類的其他來源。

CLR

SQL 受控執行個體無法存取檔案共用及 Windows 資料夾,因此會有下列限制:

Database Mail (db_mail)

  • sp_send_dbmail 無法使用 @file_attachments 參數傳送附件。 本機檔案系統和外部共用或 Azure Blob 儲存體無法從這個程序中存取。
  • 請參閱與 @query 參數和驗證相關的已知問題。

DBCC

SQL 受控執行個體中不支援已在 SQL Server 中啟用但未記載的 DBCC 陳述式。

  • 僅支援有限數目的全域追蹤旗標。 不支援工作階段層級 Trace flags。 請參閱追蹤旗標
  • DBCC TRACEOFFDBCC TRACEON 使用有限數目的全域追蹤旗標。
  • 無法使用 DBCC CHECKDB 搭配選項 REPAIR_ALLOW_DATA_LOSS、REPAIR_FAST 和 REPAIR_REBUILD,因為無法在 SINGLE_USER 模式中設定資料庫,請參閱 ALTER DATABASE 差異。 潛在的資料庫損毀由 Azure 支援小組處理。 如果有任何資料庫損毀的指示,請與 Azure 支援連絡。

分散式交易

跨受控執行個體的 T-SQL 和 .NET 型分散式交易已正式發行。 適用於 Azure SQL 受控執行個體的 DTC 可透過公開預覽版取得,並支援其他案例,例如 XA 交易、受控執行個體與其他參與者之間的分散式交易等。

擴充的事件

不支援擴充事件 (XEvent) 的某些 Windows 特定目標:

  • 不支援 etw_classic_sync 目標。 將 .xel 檔案儲存在 Azure Blob 儲存體中。 請參閱 etw_classic_sync 目標
  • 不支援 event_file 目標。 將 .xel 檔案儲存在 Azure Blob 儲存體中。 請參閱 event_file 目標

外部程式庫

資料庫內部 R 與 Python 外部程式庫目前處於有限的公開預覽狀態。 請參閱 Azure SQL 受控執行個體中的機器學習服務 (預覽)

FILESTREAM 與 FileTable

  • 不支援 FILESTREAM 資料。
  • 資料庫不能包含具有 FILESTREAM 資料的檔案群組。
  • 不支援 FILETABLE
  • 資料表不能有 FILESTREAM 類型
  • 以下是不支援的函式:
    • GetPathLocator()
    • GET_FILESTREAM_TRANSACTION_CONTEXT()
    • PathName()
    • GetFileNamespacePat)
    • FileTableRootPath()

如需詳細資訊,請參閱 FILESTREAMFiletable

不支援語意搜尋

連結的伺服器

在 SQL 受控執行個體中,連結伺服器支援的目標數有限:

  • 支援的目標有 SQL 受控執行個體、SQL Database、Azure Synapse SQL 無伺服器和專用集區,以及 SQL Server 執行個體。
  • 不支援目標為檔案、Analysis Services 和其他 RDBMS。 請嘗試利用 BULK INSERTOPENROWSET 從 Azure Blob 儲存體匯入原生 CSV,做為檔案匯入的替代方案,或是利用 Azure Synapse Analytics 中的無伺服器 SQL 集區載入檔案。

作業:

Azure SQL 受控執行個體上的連結伺服器支援 SQL 驗證和 Microsoft Entra 驗證

PolyBase

使用 Azure SQL 受控執行個體的資料虛擬化可讓您針對 Azure Data Lake Storage Gen2 或 Azure Blob 儲存體中所儲存檔案的資料執行 Transact-SQL (T-SQL) 查詢,並使用聯結將其與本機儲存的關聯式資料合併。 直接支援 Parquet 和分隔符號文字 (CSV) 檔案格式。 當查詢以個別資料列的形式傳回每份文件時,您可藉由指定 CSV 檔案格式,間接支援 JSON 檔案格式。 可以使用 JSON_VALUEOPENJSON 進一步剖析資料列。 如需 PolyBase 的一般資訊,請參閱 PolyBase

此外,CREATE EXTERNAL TABLE AS SELECT (CETAS) 可讓您將資料從 SQL 受控執行個體匯出至外部儲存體帳戶。 您可以使用 CETAS,在 Parquet 或 CSV 檔案 Azure Blob 儲存體或 Azure Data Lake Storage (ADLS) Gen2 上建立外部表格。 CETAS 也可以平行匯出 T-SQL SELECT 陳述式的結果到建立的外部表格。

複寫

  • 支援快照集和雙向複寫類型。 不支援合併式複寫、點對點複寫和可更新的訂用帳戶。
  • SQL 受控執行個體提供異動複寫,但有一些限制:
    • 所有類型的複寫參與者 (發行者、散發者、提取訂閱者和推送訂閱者) 都可以放在 SQL 受控執行個體上,但發行者和散發者必須同時位於雲端或皆為內部部署。
    • SQL 受控執行個體可以與最新版本的 SQL Server 進行通訊。 如需詳細資訊,請參閱支援的版本矩陣
    • 異動複寫有一些額外的網路需求

如需有關設定異動複寫的詳細資訊,請參閱下列教學課程:

RESTORE 陳述式

  • 支援的語法:
    • RESTORE DATABASE
    • RESTORE FILELISTONLY
    • RESTORE HEADERONLY
    • RESTORE LABELONLY
    • RESTORE VERIFYONLY
  • 不支援的語法:
    • RESTORE LOGONLY
    • RESTORE REWINDONLY
  • 來源:
    • FROM URL (Azure Blob 儲存體) 是唯一支援的選項。
    • 不支援 FROM DISK/TAPE/備份裝置。
    • 不支援備份組。
  • 不支援 WITH 選項。 包含 WITH (如 DIFFERENTIALSTATSREPLACE 等) 在內的還原嘗試會失敗。

資料庫還原作業在 Azure SQL 受控執行個體為非同步且可重試。 如果連線失敗或逾時到期,您可能會在 SSMS 收到錯誤。 Azure SQL 受控執行個體將會繼續嘗試在背景還原資料庫,而且您可以使用 sys.dm_exec_requestssys.dm_operation_status 動態管理檢視檢視來追蹤還原流程進度。

系統會設定或覆寫下列資料庫選項,而且之後無法變更:

  • NEW_BROKER,如果 .bak 檔案中未啟用訊息代理程式的話。
  • ENABLE_BROKER,如果 .bak 檔案中未啟用訊息代理程式的話。
  • AUTO_CLOSE=OFF,如果.bak 檔案中的資料庫具有 AUTO_CLOSE=ON 的話。
  • RECOVERY FULL,如果 .bak 檔案中的資料庫具有 SIMPLEBULK_LOGGED 復原模式的話。
  • 新增記憶體最佳化檔案群組並呼叫 XTP (如果來源 .bak 檔案中沒有的話)。
  • 任何現有的記憶體最佳化檔案群組都已重新命名為 XTP。
  • SINGLE_USERRESTRICTED_USER 選項會轉換成 MULTI_USER

限制:

  • 損毀資料庫的備份可能會根據損毀的類型還原,但在修正損毀之前,不會採取自動備份。 確定您在來源 SQL 執行個體上執行 DBCC CHECKDB,並使用備份 WITH CHECKSUM 以避免發生此問題。
  • 還原資料庫的 .BAK 檔案 (其中包含本文件中所述的任何限制 (例如,FILESTREAMFILETABLE 物件)),無法在 SQL 受控執行個體上進行還原。
  • 無法還原包含多個備份組的 .BAK 檔案。
  • 無法還原包含多個記錄檔的 .BAK 檔案。
  • 備份若包含大於 8 TB 的資料庫、作用中的記憶體內部 OLTP 物件,或包含的檔案數超過每個執行個體 280 個檔案,則無法在一般用途的執行個體上進行還原。
  • 備份若包含大於 4 TB 的資料庫,或大小總計大於資源限制中所述大小的記憶體內部 OLTP 物件,則無法在業務關鍵執行個體上進行還原。 如需 Restore 陳述式的相關資訊,請參閱 RESTORE 陳述式

重要

相同的限制適用於內建的時間點還原作業。 舉例來說,無法在業務關鍵執行個體上還原大於 4 TB 的一般用途資料庫。 具有記憶體內部 OLTP 檔案或超過 280 個檔案的業務關鍵資料庫,無法在一般用途執行個體上進行還原。

Service Broker

只有在 Azure SQL 受控執行個體之間,才支援跨執行個體的 Service Broker 訊息交換:

  • CREATE ROUTE:除了 LOCAL 或另一個 SQL 受控執行個體的 DNS 名稱以外,您不能將 CREATE ROUTEADDRESS 搭配使用。 連接埠一律為 4022。
  • ALTER ROUTE:除了 LOCAL 或另一個 SQL 受控執行個體的 DNS 名稱以外,您不能將 ALTER ROUTEADDRESS 搭配使用。 連接埠一律為 4022。

支援傳輸安全性,但不支援對話安全性:

  • 不支援 CREATE REMOTE SERVICE BINDING

Service Broker 預設為啟用狀態,且無法停用。 不支援下列 ALTER DATABASE 選項:

  • ENABLE_BROKER
  • DISABLE_BROKER

預存程序、函式和觸發程序

  • 一般用途層中不支援 NATIVE_COMPILATION
  • 不支援下列 sp_configure 選項:
    • allow polybase export
    • allow updates
    • filestream_access_level
    • remote access
    • remote data archive
    • remote proc trans
    • scan for startup procs
  • 下列 sp_configure 選項會忽略,但不會有任何影響:
    • Ole Automation Procedures
  • 只有適用於 SQL MI 的 Machine Learning services 支援 sp_execute_external_scripts,否則 SQL 受控執行個體不支援 sp_execute_external_scripts。 請參閱 sp_execute_external_scripts
  • 不支援 xp_cmdshell。 請參閱 xp_cmdshell
  • 不支援 Extended stored procedures,包括 sp_addextendedprocsp_dropextendedproc 在內。 此功能位於 SQL Server 的淘汰路徑上,因此不支援。 如需詳細資訊,請參閱 擴充預存程序
  • 不支援 sp_attach_dbsp_attach_single_file_dbsp_detach_db。 請參閱 sp_attach_dbsp_attach_single_file_dbsp_detach_db

系統函數和變數

下列變數、函式和檢視會傳回不同的結果:

  • SERVERPROPERTY('EngineEdition') 傳回值 8。 此屬性只會識別出 SQL 受控執行個體。 請參閱 SERVERPROPERTY
  • SERVERPROPERTY('InstanceName') 會傳回 NULL,因為執行個體基於 SQL Server 而存在的概念不適用於 SQL 受控執行個體。 請參閱 SERVERPROPERTY('InstanceName')
  • @@SERVERNAME 會傳回完整的 DNS「可連線」名稱,例如 my-managed-instance.wcus17662feb9ce98.database.windows.net。 請參閱 @@SERVERNAME
  • SYS.SERVERS 會傳回完整的 DNS「可連線」名稱,例如 "name" 和 "data_source" 屬性的 myinstance.domain.database.windows.net。請參閱 SYS.SERVERS
  • @@SERVICENAME 會傳回 NULL,因為服務基於 SQL Server 而存在的概念不適用於 SQL 受控執行個體。 請參閱 @@SERVICENAME
  • 支援 SUSER_ID。 如果 Microsoft Entra 登入不在 sys.syslogins,則會傳回 NULL。 請參閱 SUSER_ID
  • 不支援 SUSER_SID。 傳回錯誤資料,這是暫時性的已知問題。 請參閱 SUSER_SID

環境條件約束

子網路

  • 您無法將任何其他資源 (例如虛擬機器) 放在已部署 SQL 受控執行個體的子網路中。 使用不同的子網路來部署這些資源。
  • 子網路必須有足夠數目的可用 IP 位址。 最小值是在子網路中至少要有 32 個 IP 位址。
  • 您可以在區域中部署的虛擬核心數目和執行個體類型,會有一些條件約束和限制
  • 子網路必須套用網路設定

虛擬網路

  • 您可以使用資源模型來部署虛擬網路。 傳統模型不支援虛擬網路 (VNet) 部署。
  • 建立 SQL 受控執行個體之後,不支援將 SQL 受控執行個體或 VNet 移至另一個資源群組或訂用帳戶。
  • 如果是裝載於 2020 年 9 月 22 日前所建立虛擬叢集的 SQL 受控執行個體,則不支援 VNet 全域對等互連。 您可以透過 ExpressRoute 或通過 VNet 閘道的 VNet 對 VNet 來連線到這些資源。

容錯移轉群組

系統資料庫不會複寫至容錯移轉群組中的次要執行個體。 因此,您無法在次要執行個體上進行相依於系統資料庫中物件的案例,除非在次要上手動建立這些物件。

tempdb

  • 在一般用途層上,tempdb 系統資料庫的檔案大小上限不能大於每個核心 24 GB。 商務關鍵層的 tempdb 大小上限受限於 SQL 受控執行個體儲存體大小。 在一般用途層上,tempdb 記錄檔大小限制為 120 GB。 如果其需要 tempdb 中每個核心超過 24 GB,或如果其產生超過 120 GB 的記錄資料,則某些查詢可能會傳回錯誤。
  • tempdb 一律會分割為 12 個資料檔:1 個主要 (也稱為 master) 資料檔案和 11 個非主要資料檔案。 無法變更檔案結構,也無法將新檔案加入至 tempdb
  • 不支援經記憶體最佳化的 tempdb 中繼資料,這是新的 SQL Server 2019 記憶體內部資料庫功能。
  • 重新啟動或容錯移轉之後,無法在 tempdb 自動建立在 model 資料庫建立的物件,因為 tempdb 無法從 model 資料庫取得初始物件清單。 每次重新開機或容錯移轉之後,您必須在 tempdb 手動建立物件。

msdb

SQL 受控執行個體中 msdb 系統資料庫的下列結構描述,必須由各自預先定義的角色所擁有:

重要

變更客戶的預先定義角色名稱、結構描述名稱和架構擁有者,將會影響服務的正常作業。 對這些項目進行的任何變更,一偵測到,就會還原回預先定義的值,或在下次服務更新時更新為最新的,以確保服務作業正常運作。

錯誤記錄

SQL 受控執行個體會將詳細資訊放置在錯誤記錄中。 有許多內部系統事件記錄在錯誤記錄檔中。 使用自訂程序來讀取篩選掉某些不相關項目的錯誤記錄檔。 如需詳細資訊,請參閱 SQL 受控執行個體 – sp_readmierrorlog 或適用於 Azure Data Studio 的 SQL 受控執行個體延伸模組 (預覽)

不支援變更保留錯誤記錄檔數目。