SQL Server 與 Azure SQL 受控執行個體之間的 T-SQL 差異
適用於:Azure SQL 受控執行個體
本文摘要說明 Azure SQL 受控執行個體和 SQL Server 在語法與行為上的差異。
SQL 受控執行個體提供與 SQL Server 資料庫引擎的高度相容性,而且 SQL 受控執行個體支援大部分的功能。
SQL 受控執行個體引進一些 PaaS 限制,而且相較於 SQL Server,還有一些行為變更。 這些差異可分成下列幾種類別:
- 可用性上的差異包括 Always On 可用性群組和備份。
- 安全性上的差異包括稽核、憑證、認證、密碼編譯提供者、登入和使用者,以及服務金鑰和服務主要金鑰。
- 設定上的差異包括緩衝集區延伸、定序、相容性層級、資料庫鏡像、資料庫選項、SQL Server Agent,以及資料表選項。
- 功能包括 BULK INSERT/OPENROWSET、CLR、DBCC、分散式交易、擴充事件、外部程式庫、FILESTREAM 和 FileTable、全文檢索語意搜尋、連結伺服器、PolyBase、複寫、RESTORE、Service Broker、預存程序、函式和觸發程序。
- 環境設定,例如 VNet 和子網路設定。
大部分的功能都是架構限制式,並代表服務功能。
在 SQL 受控執行個體中發現的暫時性已知問題,未來將會解決並在新功能中說明。
注意
Microsoft Entra ID 先前稱為 Azure Active Directory (Azure AD)。
可用性
Always On 可用性群組
SQL 受控執行個體內建高可用性,並且無法由使用者控制。 不支援下列陳述式:
- CREATE ENDPOINT … FOR DATABASE_MIRRORING
- CREATE AVAILABILITY GROUP
- ALTER AVAILABILITY GROUP
- DROP AVAILABILITY GROUP
- ALTER DATABASE 陳述式的 SET HADR 子句
備份
Azure SQL 受控執行個體會自動備份,所以使用者可以建立完整的資料庫 COPY_ONLY
備份。 不支援差異、記錄和檔案快照集備份。
- 使用 SQL 受控執行個體,您可以將執行個體資料庫只備份到 Azure Blob 儲存體帳戶:
- 只支援
BACKUP TO URL
。 - 不支援
FILE
、TAPE
及備份裝置。
- 只支援
- 支援大部分一般的
WITH
選項。COPY_ONLY
屬於必要項目。- 不支援
FILE_SNAPSHOT
和CREDENTIAL
。 - 磁帶選項:不支援
REWIND
、NOREWIND
、UNLOAD
和NOUNLOAD
。 - 記錄專用選項:不支援
NORECOVERY
、STANDBY
和NO_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 CERTIFICATE 和 BACKUP CERTIFICATE。
因應措施:取得憑證二進位內容和私密金鑰,將其儲存為 .sql 檔案,並從二進位建立,而不是建立憑證的備份及還原備份:
CREATE CERTIFICATE
FROM BINARY = asn_encoded_certificate
WITH PRIVATE KEY (<private_key_options>);
認證
支援受控識別、Azure Key Vault 與SHARED ACCESS SIGNATURE
身分識別。 不支援 Windows 使用者。
請參閱 CREATE CREDENTIAL 和 ALTER CREDENTIAL。
密碼編譯提供者
SQL 受控執行個體無法存取檔案,所以無法建立密碼編譯提供者:
- 不支援
CREATE CRYPTOGRAPHIC PROVIDER
。 請參閱 CREATE CRYPTOGRAPHIC PROVIDER。 - 不支援
ALTER CRYPTOGRAPHIC PROVIDER
。 請參閱 ALTER CRYPTOGRAPHIC PROVIDER。
登入和使用者
不支援使用
FROM CERTIFICATE
、FROM ASYMMETRIC KEY
和FROM 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。
- 在此設定中,所有 Microsoft Entra 使用者都會建立為不需登入的 SQL Server 資料庫主體 (使用者)。 使用者的類型為
- 支援下列設定使用資料庫 bacpac 檔案:
只有伺服器層級主體登入 (由 SQL 受控執行個體佈建程序所建立)、伺服器角色的成員 (例如
securityadmin
或sysadmin
),或在伺服器層級上有 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 存取層級的伺服器主體。
在驗證期間,解析驗證主體時會套用下列順序:
- 如果 Microsoft Entra 帳戶直接對應至 Microsoft Entra 登入 (顯示於
sys.server_principals
為類型「E」),請授與存取權並套用該登入的權限。 - 如果 Microsoft Entra 帳戶是對應至 Microsoft Entra 登入的群組成員 (顯示於
sys.server_principals
為類型「X」),請授與存取權並套用該登入的權限。 - 如果 Microsoft Entra 帳戶以直接對應至資料庫中 Microsoft Entra 使用者的形式存在 (在
sys.database_principals
中顯示為類型「E」),則授與存取權,並套用 Microsoft Entra 資料庫使用者的權限。 - 如果 Microsoft Entra 帳戶是對應至資料庫 Microsoft Entra 使用者的 Microsoft Entra 群組成員 (顯示於
sys.database_principals
為類型「X」),請授與存取權並套用該 Microsoft Entra 群組使用者的權限。
- 如果 Microsoft Entra 帳戶直接對應至 Microsoft Entra 登入 (顯示於
服務金鑰和服務主要金鑰
- 不支援主要金鑰備份 (由 SQL Database 服務管理)。
- 不支援主要金鑰還原 (由 SQL Database 服務管理)。
- 不支援服務主要金鑰備份 (由 SQL Database 服務管理)。
- 不支援服務主要金鑰還原 (由 SQL Database 服務管理)。
組態
緩衝集區延伸
- 不支援緩衝集區延伸。
- 不支援
ALTER SERVER CONFIGURATION SET BUFFER POOL EXTENSION
。 請參閱 ALTER SERVER CONFIGURATION。
定序
預設執行個體定序為 SQL_Latin1_General_CP1_CI_AS
,而且可指定為建立參數。 請參閱定序。
相容性層級
- 支援的相容性層級為 100、110、120、130、140、150 和 160。
- 不支援低於 100 的相容性層級。
- 新資料庫的預設相容性層級為 150。 針對已還原的資料庫,如果相容性層級為 100 或更高,則維持不變。
請參閱 ALTER DATABASE 相容性層級。
資料庫鏡像
不支援資料庫鏡像。
- 不支援
ALTER DATABASE SET PARTNER
和SET WITNESS
選項。 - 不支援
CREATE ENDPOINT … FOR DATABASE_MIRRORING
。
如需詳細資訊,請參閱 ALTER DATABASE SET PARTNER and SET WITNESS 和 CREATE 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。
資料表
以下是不支援的資料表類型:
- FILESTREAM
- FILETABLE
- EXTERNAL TABLE (PolyBase 除外)
- MEMORY_OPTIMIZED (僅在一般用途層中不支援)
如需如何建立和更改資料表的相關資訊,請參閱 CREATE TABLE 和 ALTER 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 資料夾,因此會有下列限制:
- 只支援
CREATE ASSEMBLY FROM BINARY
。 請參閱 CREATE ASSEMBLY FROM BINARY。 - 不支援
CREATE ASSEMBLY FROM FILE
。 請參閱 CREATE ASSEMBLY FROM FILE。 ALTER ASSEMBLY
無法參考檔案。 請參閱 ALTER ASSEMBLY。
Database Mail (db_mail)
sp_send_dbmail
無法使用 @file_attachments 參數傳送附件。 本機檔案系統和外部共用或 Azure Blob 儲存體無法從這個程序中存取。- 請參閱與
@query
參數和驗證相關的已知問題。
DBCC
SQL 受控執行個體中不支援已在 SQL Server 中啟用但未記載的 DBCC 陳述式。
- 僅支援有限數目的全域追蹤旗標。 不支援工作階段層級
Trace flags
。 請參閱追蹤旗標。 - DBCC TRACEOFF 和 DBCC 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()
如需詳細資訊,請參閱 FILESTREAM 和 Filetable。
全文檢索的語意搜尋
不支援語意搜尋。
連結的伺服器
在 SQL 受控執行個體中,連結伺服器支援的目標數有限:
- 支援的目標有 SQL 受控執行個體、SQL Database、Azure Synapse SQL 無伺服器和專用集區,以及 SQL Server 執行個體。
- 不支援目標為檔案、Analysis Services 和其他 RDBMS。 請嘗試利用
BULK INSERT
或OPENROWSET
從 Azure Blob 儲存體匯入原生 CSV,做為檔案匯入的替代方案,或是利用 Azure Synapse Analytics 中的無伺服器 SQL 集區載入檔案。
作業:
- 支援使用
sp_dropserver
卸除連結的伺服器。 請參閱 sp_dropserver。 OPENROWSET
函式只能用來在 SQL Server 執行個體上執行查詢。 該函式可以是受控、內部部署或在虛擬機器中。 請參閱 OPENROWSET。- OPENDATASOURCE 函數只能用來在 SQL Server 執行個體上執行查詢。 該函式可以是受控、內部部署或在虛擬機器中。 例如
SELECT * FROM OPENDATASOURCE('SQLNCLI', '...').AdventureWorks2022.HumanResources.Employee
。 只支援SQLNCLI
、SQLNCLI11
、SQLOLEDB
和MSOLEDBSQL
值作為提供者。 SQL Server Native Client (通常縮寫為 SNAC) 已從 SQL Server 2022 和 SQL Server Management Studio 19 (SSMS) 中移除。 不建議使用 SQL Server Native Client (SQLNCLI 或 SQLNCLI11) 和舊版 Microsoft OLE DB Provider for SQL Server (SQLOLEDB) 進行新的開發。 往後請改用新的 Microsoft OLE DB Driver (MSOLEDBSQL) for SQL Server 或最新的 Microsoft ODBC Driver for SQL Server。 - 連結的伺服器無法用來從網路共用讀取檔案 (Excel、CSV)。 請嘗試使用 BULK INSERT、OPENROWSET,讀取來自 Azure Blob 儲存體的 CSV 檔案,或是使用連結的伺服器,參考 Synapse Analytics 中無伺服器 SQL 集區。 在 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_VALUE
和 OPENJSON
進一步剖析資料列。 如需 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 受控執行個體提供異動複寫,但有一些限制:
如需有關設定異動複寫的詳細資訊,請參閱下列教學課程:
RESTORE 陳述式
- 支援的語法:
RESTORE DATABASE
RESTORE FILELISTONLY
RESTORE HEADERONLY
RESTORE LABELONLY
RESTORE VERIFYONLY
- 不支援的語法:
RESTORE LOGONLY
RESTORE REWINDONLY
- 來源:
FROM URL
(Azure Blob 儲存體) 是唯一支援的選項。- 不支援
FROM DISK
/TAPE
/備份裝置。 - 不支援備份組。
- 不支援
WITH
選項。 包含WITH
(如DIFFERENTIAL
、STATS
和REPLACE
等) 在內的還原嘗試會失敗。
資料庫還原作業在 Azure SQL 受控執行個體為非同步且可重試。 如果連線失敗或逾時到期,您可能會在 SSMS 收到錯誤。 Azure SQL 受控執行個體將會繼續嘗試在背景還原資料庫,而且您可以使用 sys.dm_exec_requests 和 sys.dm_operation_status 動態管理檢視檢視來追蹤還原流程進度。
系統會設定或覆寫下列資料庫選項,而且之後無法變更:
NEW_BROKER
,如果 .bak 檔案中未啟用訊息代理程式的話。ENABLE_BROKER
,如果 .bak 檔案中未啟用訊息代理程式的話。AUTO_CLOSE=OFF
,如果.bak 檔案中的資料庫具有AUTO_CLOSE=ON
的話。RECOVERY FULL
,如果 .bak 檔案中的資料庫具有SIMPLE
或BULK_LOGGED
復原模式的話。- 新增記憶體最佳化檔案群組並呼叫 XTP (如果來源 .bak 檔案中沒有的話)。
- 任何現有的記憶體最佳化檔案群組都已重新命名為 XTP。
SINGLE_USER
和RESTRICTED_USER
選項會轉換成MULTI_USER
。
限制:
- 損毀資料庫的備份可能會根據損毀的類型還原,但在修正損毀之前,不會採取自動備份。 確定您在來源 SQL 執行個體上執行
DBCC CHECKDB
,並使用備份WITH CHECKSUM
以避免發生此問題。 - 還原資料庫的
.BAK
檔案 (其中包含本文件中所述的任何限制 (例如,FILESTREAM
或FILETABLE
物件)),無法在 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 ROUTE
與ADDRESS
搭配使用。 連接埠一律為 4022。ALTER ROUTE
:除了LOCAL
或另一個 SQL 受控執行個體的 DNS 名稱以外,您不能將ALTER ROUTE
與ADDRESS
搭配使用。 連接埠一律為 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_addextendedproc
和sp_dropextendedproc
在內。 此功能位於 SQL Server 的淘汰路徑上,因此不支援。 如需詳細資訊,請參閱 擴充預存程序。 - 不支援
sp_attach_db
、sp_attach_single_file_db
和sp_detach_db
。 請參閱 sp_attach_db、sp_attach_single_file_db 和 sp_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
系統資料庫的下列結構描述,必須由各自預先定義的角色所擁有:
- 一般角色
- TargetServersRole
- 固定資料庫角色
- SQLAgentUserRole
- SQLAgentReaderRole
- SQLAgentOperatorRole
- DatabaseMail 角色:
- DatabaseMailUserRole
- 整合服務角色:
- db_ssisadmin
- db_ssisltduser
- db_ssisoperator
重要
變更客戶的預先定義角色名稱、結構描述名稱和架構擁有者,將會影響服務的正常作業。 對這些項目進行的任何變更,一偵測到,就會還原回預先定義的值,或在下次服務更新時更新為最新的,以確保服務作業正常運作。
錯誤記錄
SQL 受控執行個體會將詳細資訊放置在錯誤記錄中。 有許多內部系統事件記錄在錯誤記錄檔中。 使用自訂程序來讀取篩選掉某些不相關項目的錯誤記錄檔。 如需詳細資訊,請參閱 SQL 受控執行個體 – sp_readmierrorlog 或適用於 Azure Data Studio 的 SQL 受控執行個體延伸模組 (預覽)。
不支援變更保留錯誤記錄檔數目。