使用 Microsoft OLE DB Provider for ODBC Drivers 建立連結伺服器,呼叫遠端預存程序傳遞 NULL 參數時報錯:
Msg 7213, Level 16, State 1
提供程式將遠程存儲過程參數傳遞給遠程服務器失敗。請確保參數的數目、順序和所傳遞的值正確。

| 呼叫方式 | 結果 |
|---|---|
EXEC LinkedSrv.DB.dbo.Proc NULL, NULL, 'ALL' | 失敗 (7213) |
EXEC LinkedSrv.DB.dbo.Proc '', '', 'ALL' | 成功 |
EXEC LinkedSrv.DB.dbo.Proc @p1=DEFAULT, @p2=DEFAULT, @p3='ALL' | 成功(若預設值非 NULL) |
同樣邏輯,若連結伺服器使用 Microsoft OLE DB Provider for SQL Server (SQLNCLI),NULL 參數完全正常。
ODBC OLE DB Provider 在封裝 RPC 請求時,無法正確序列化 NULL 參數標記,導致遠端解析失誤。此為 Provider 已知限制。
SQLNCLI / MSOLEDBSQL (SQL Server Native Client) 建立連結伺服器,原生支援 NULL 參數。'' 或預設值替代 NULL,遠端預存程序內部以 ISNULL(@param, '') 或 CASE WHEN @param = '' THEN NULL 還原。-- 推薦:SQL Server Native Client
EXEC sp_addlinkedserver
@server = 'LinkedSrv',
@srvproduct = '',
@provider = 'SQLNCLI',
@datasrc = '192.168.0.10',
@catalog = 'TargetDB';
-- 設定登入映射
EXEC sp_addlinkedsrvlogin 'LinkedSrv', 'false', NULL, 'remote_user', 'remote_pwd';