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 標識符 先前稱為 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 記憶體還原資料庫,您可以使用受控識別或共用存取簽章 (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
來指定放置檔案之 Azure Blob 記憶體容器.xel
的 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 金鑰保存庫和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 伺服器主體 (logins) 進行跨實例驗證。
不支援將對應至 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 時,請指定 user_name與 LOGIN 相同的login_name。只有屬於角色的
sysadmin
SQL Server 層級登入可以執行下列以 Microsoft Entra 主體為目標的作業:- EXECUTE AS USER
- EXECUTE AS LOGIN
若要使用 EXECUTE AS 語句模擬使用者,用戶必須直接對應至 Microsoft Entra 登入。 對應至 Microsoft Entra 伺服器主體之 Microsoft Entra 群組成員的使用者無法有效地模擬 EXECUTE AS 語句,即使呼叫端具有指定使用者名稱的模擬許可權也一樣。
SQL 受管理執行個體 使用 SSMS V18.4 或更新版本或 SqlPackage 的 Microsoft Entra 用戶支援使用 bacpac 檔案的資料庫導出/匯入。
- 使用資料庫 bacpac 檔案支援下列組態:
- 匯出/匯入相同 Microsoft Entra 網域內不同管理實例之間的資料庫。
- 從 SQL 受管理執行個體 導出資料庫,並匯入至相同 Microsoft Entra 網域內的 SQL 資料庫。
- 從 SQL 資料庫 匯出資料庫,並匯入至相同 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 許可權的登入,可以在資料庫中建立 SQL 受管理執行個體 的 Microsoft Entra 伺服器主體 (logins)。master
SQL 驗證型登入必須獲指派
sysadmin
角色,才能建立 Microsoft Entra 身分識別的登入。登入必須是裝載 Azure SQL 受控執行個體 相同 Microsoft Entra 租用戶的成員。
從 SQL Server Management Studio 18.0 Preview 5 開始,物件總管 可以看到 Microsoft Entra 伺服器主體(登入)。
在實例上啟用系統管理員之後,系統會自動為 Microsoft Entra 系統管理員建立具有 系統管理員 存取層級的伺服器主體。
在驗證期間,解析驗證主體時會套用下列順序:
- 如果 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 型分散式交易已正式發行。 #D49042DBEEC0E4940840BA14C28880A4C 的 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 儲存體 (ADLS) Gen2 上建立外部數據表。 CETAS 也可以平行匯出 T-SQL SELECT 語句的結果到建立的外部數據表。
複寫
如需有關設定異動複寫的詳細資訊,請參閱下列教學課程:
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
sp_execute_external_scripts
僅支援 sql MI 機器學習 Services,否則sp_execute_external_scripts
不支援 SQL 受管理執行個體。 請參閱 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
- Integration Services 角色:
- db_ssisadmin
- db_ssisltduser
- db_ssisoperator
重要
變更客戶預先定義的角色名稱、架構名稱和架構擁有者會影響服務的正常作業。 對這些項目進行的任何變更,一偵測到,就會還原回預先定義的值,或在下次服務更新時更新為最新的,以確保服務作業正常運作。
錯誤記錄
SQL 受控執行個體會將詳細資訊放置在錯誤記錄中。 有許多內部系統事件記錄在錯誤記錄檔中。 使用自訂程序來讀取篩選掉某些不相關項目的錯誤記錄檔。 如需詳細資訊,請參閱 SQL 受控執行個體 – sp_readmierrorlog 或適用於 Azure Data Studio 的 SQL 受控執行個體延伸模組 (預覽)。
不支援變更保留的錯誤記錄數目。
相關內容
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應