我有一列"Amount" numeric(18,2)
,我使用SSMS v17的加密列嚮導進行了加密。列數據現在被加密。SQL Server 2016始終加密 - 在視圖中始終使用加密列的比較和計算表達式
不過,我有一個使用類似的視圖:
create SampleView
as
Select
*, Amount * Rate as TotalAmount
From
SampleTable
Where
Amount > 0
go
列Rate
是numeric(18,8)
類型。
我無法創建此視圖。它提供了數據類型不兼容的錯誤,因爲一列是加密的而另一列是明文。從我試過的各種排列中,我發現Where>子句帶有> 0會導致問題,並且選擇列表中的金額*比率不起作用。
有關Amount*Rate
該錯誤是(I註釋where子句)
操作數類型衝突:使用(將encryption_type = 'DETERMINISTIC',encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name ='加密數字(18,2) SampleDB_CEK」,column_encryption_key_database_name = 'SAMPLEDB')是不兼容的數字
相關Where Amount>0
錯誤的是(我評論金額*價格在SELECT子句中)
的數據類型的數字(18,2)與(將encryption_type = 'DETERMINISTIC',encryption_algorithm_name = 'AEAD_AES_256_CBC_HMAC_SHA_256',column_encryption_key_name = 'SampleDB_CEK',column_encryption_key_database_name = 'SAMPLEDB')和TINYINT加密是在比操作者更大的不兼容。
我嘗試了這些,但它沒有工作,以及:
Where Amount > cast(0 as numeric(18,2)
Select Amount * cast(Rate as numeric(18,2)
,因爲它是觀點我們不能聲明變量。而且這個視圖在許多存儲過程中得到了使用。
任何想法讚賞。
請貼上確切的錯誤 – TheGameiswar
@TheGameiswar我現在已經粘貼了確切的錯誤。謝謝。 – CleanBold
看來where子句只支持where子句包含加密列時的相等查詢 – TheGameiswar