適用於: .NET Framework
.NET
.NET 標準
AppContext 類別允許 SqlClient 提供新功能,同時繼續支援相依於之前行為的呼叫端。 使用者可以透過設定特定的 AppContext 參數,選擇退出行為中的變更。
啟用十進位截斷行為
適用於:.NET 框架;.NET;.NET 標準
從 Microsoft.Data.SqlClient 2.0 開始,十進位資料預設會四捨五入,和 SQL Server 一樣。 若要啟用之前的截斷行為,您可以在應用程式啟動時將 AppContext 參數 "Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal" 設為 true:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.TruncateScaledDecimal", true);
在 Windows 上啟用受控網路
適用於:.NET;.NET 標準
(2.0 版開始提供使用)
在 Windows 上,SqlClient 預設使用 SNI 網路介面的原生實作。 若要使用受控的 SNI 實作,您可以在應用程式啟動時將 AppContext 參數 "Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows" 設為 true:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseManagedNetworkingOnWindows", true);
此參數會切換驅動程式的行為,以在 Windows 的 .NET Core 2.1+ 與 .NET Standard 2.0+ 專案中使用受控網路實作,同時消除 Microsoft.Data.SqlClient 程式庫之原生程式庫的所有相依性。 此僅用於測試與偵錯用途。
注意
與原生實作相比,有一些已知差異。 例如,受控實作不支援非網域 Windows 驗證。
停用透明網路 IP 解析
適用於:.NET Framework
透明網路 IP 解析 (TNIR) 為現有 MultiSubnetFailover 功能的修訂版本。 TNIR 在第一個解析主機名稱 IP 未回應,且有多個與該主機名稱建立關聯的 IP 時,影響驅動程式的連線順序。 TNIR 會與 MultiSubnetFailover 互動,以提供下列三種連線順序:
- 0:嘗試一個 IP,然後以並行方式嘗試所有 IP
- 1:以並行方式嘗試所有 IP
- 2:逐一嘗試所有 IP
| TransparentNetworkIPResolution | MultiSubnetFailover | 行為 |
|---|---|---|
| True | True | 1 |
| True | 否 | 0 |
| 否 | True | 1 |
| 否 | 否 | 2 |
TransparentNetworkIPResolution 預設為啟用。 MultiSubnetFailover 預設為停用。 若要停用 TNIR,您可以在應用程式啟動時將 AppContext 參數 "Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString" 設為 true:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.DisableTNIRByDefaultInConnectionString", true);
如需設定這些屬性的詳細資訊,請參閱 SqlConnection.ConnectionString 屬性 (英文) 文件。
在登入期間啟用逾時最小值
適用於:.NET 框架;.NET;.NET 標準
若要避免登入嘗試永遠等候,您可以在應用程式啟動時將 AppContext 參數 Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin 設為 true:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.UseOneSecFloorInTimeoutCalculationDuringLogin", false);
停用 ReadAsync 的封鎖行為
適用於:.NET 框架;.NET;.NET 標準
從 3.0 版開始,ReadAsync 會以非同步的方式執行。 舊版會同步執行並禁止呼叫 .NET Framework 上的執行緒。 若要控制此封鎖行為,您可以在應用程式啟動時將 AppContext 參數 Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking 設為 true 或 false:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.MakeReadAsyncBlocking", false);
啟用 rowversion null 行為
適用於:.NET 框架;.NET;.NET 標準
3.0 版開始,當 rowversion 有 null 值時,SqlDataReader 會傳回 DBNull 值,而非空白的 byte[]。 如要啟用舊版傳回空白 byte[] 的行為,請在應用程式啟動時啟用 AppContext 參數 Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior。
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.LegacyRowVersionNullBehavior", true);
隱藏不安全的 TLS 警告
適用於:.NET 框架;.NET;.NET 標準
(4.0.1 版開始提供使用)
當在連接字串中使用 Encrypt=false 時,會在於 TLS 版本為 1.2 或以下時將安全性警告輸出至主控台。 您可在應用程式啟動時啟用以下 AppContext 參數來隱藏此警告:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.SuppressInsecureTLSWarning", true);
忽略伺服器提供的容錯移轉合作夥伴
適用於:.NET 框架;.NET;.NET 標準
(從 5.1.8、6.0.4 和 6.1.3 版開始可用)
容錯移轉時,伺服器提供的容錯移轉夥伴資訊會優先於連接字串中提供的容錯移轉夥伴資訊。 若要忽略伺服器所提供的容錯移轉夥伴資訊,並只考慮連接字串中提供的容錯移轉夥伴資訊,請在應用程式啟動時啟用此 AppContext 參數:
AppContext.SetSwitch("Switch.Microsoft.Data.SqlClient.IgnoreServerProvidedFailoverPartner", true);
另請參閱
AppContext 類別 (機器翻譯)