Bir SQL Server tablosuna hesaplanmış bir sütun eklemeye çalışırken, bir DATE türünde bir sütunu doğrudan bir VARCHAR'a yayınlamanın deterministik olmayan olarak kabul edildiğini buldum. Ancak, tarihin münferit bölümlerini çıkarırsam ve bunları ayrı ayrı yaparsam, her şey yolundadır. Doğrudan DATE'den VARCHAR'a gönderilmesinin neden deterministik olamayacağına dair makul bir açıklama düşünemiyorum. Herkesin bir açıklaması var mı?Niçin DATE'den VARCHAR'a deterministik olmayan bir döküm var?
Ex.
create table [dbo].[junk_CCtest]
(
PatientId bigint identity not null,
EmployerId varchar(6) default 'F*Corp',
EffDate date default getdate()
)
go
-- This works fine.
alter table dbo.junk_CCtest
add Checksum1 as (hashbytes('sha2_256', EmployerId + '/' + cast(PatientId as varchar(10)) + cast(year(EffDate) as varchar(4)) + cast(month(EffDate) as varchar(2)) + cast(day(EffDate) as varchar(2)))) persisted;
go
-- This results in: "Computed column 'Checksum3' in table 'junk_CCtest' cannot be persisted because the column is non-deterministic."
alter table dbo.junk_CCtest
add Checksum3 as (hashbytes('sha2_256', EmployerId + '/' + cast(PatientId as varchar(10)) + cast(EffDate as varchar(10)))) persisted;
go
sayesinde
Ian
Ve 3 basamaklı 2. parametreyi "convert()" öğesine eklediyseniz, yine de deterministik olmaz mı? Bunun BOL'de açık bir şekilde açıklandığını düşündüm. – ajeh