Triệu chứng
Hãy cân nhắc các trường hợp sau:
- Bạn có các ứng dụng Microsoft .NET Framework sử dụng Always Encrypted trong SQL Server 2016 hoặc Cơ sở dữ liệu Azure SQL.
- Khóa chính cột cho các ứng dụng này được lưu trữ trong Azure Kho lưu trữ khóa.
Trong trường hợp này, các ứng dụng gặp phải tình trạng bế tắc. Do đó, các ứng dụng sẽ không phản hồi (treo) hoặc hết thời gian chờ.
Sự cố đình trệ có thể xảy ra trong nỗ lực lấy hoặc làm mới mã thông báo xác thực cho Azure Kho lưu trữ khóa.
Nguyên nhân
Khi một ứng dụng truy vấn các cột được mã hóa trong cơ sở dữ liệu, Nhà cung cấp Dữ liệu .NET Framework cho SQL Server sẽ gọi Nhà cung cấp Azure Kho lưu trữ khóa cho Always Encrypted. Phần này gọi ra tác vụ không đồng bộ dựa trên ứng dụng có được hoặc làm mới mã thông báo cho Azure Kho lưu trữ khóa. Đường dẫn mã này trong Nhà cung cấp cho Azure Kho lưu trữ khóa Always Encrypted phiên bản gói NuGet 2.0.x và 1.x.x này dễ bị đình trệ vì nó gọi một số phương thức không đồng bộ theo cách không chính xác.
Giải pháp
Sự cố này được khắc phục lần đầu ở Azure Kho lưu trữ khóa Provider cho Always Encrypted phiên bản 2.1.0. Nếu bạn sử dụng Nhà cung cấp Always Encrypted và Azure Kho lưu trữ khóa, chúng tôi khuyên bạn nên xây dựng lại và tái triển khai ứng dụng sao cho ứng dụng sử dụng Azure Kho lưu trữ khóa Provider cho Always Encrypted phiên bản 2.1.0 trở lên.