2017-03-20 45 views
0

当前正在测试SQL 2016和动态数据屏蔽功能。但是,不支持的数据类型之一是空间数据类型。我有一个地理位置数据类型列,我将如何屏蔽这个?或者什么将是一个很好的解决方案来掩盖这一点?数据屏蔽 - 地理定位

我真的很喜欢的2016年动态屏蔽功能,并相信这将是一个伟大的方式来“隐藏”或在较低的环境PI相关数据,但一个路障的该位被阻碍迁移至2016年

+0

我在想我可以使用列级权限,但不相信如果权限不存在,我就可以返回NULL。我可以在视图中做到这一点,但如果可能的话,希望将其保留在桌面上。 –

回答

0

您可以使用default()函数来屏蔽地理位置。下面是一个例子...

CREATE TABLE ##SpatialTable 
    (id int IDENTITY (1,1), 
    GeogCol1 geography) 

insert into ##SpatialTable(GeogCol1) 
values (geography::STGeomFromText('LINESTRING(-122.360 47.656, -122.343 47.656)', 4326)); 


select * from ##SpatialTable 
--RESULT = 0xE610000001148716D9CEF7D34740D7A3703D0A975EC08716D9CEF7D34740CBA145B6F3955EC0 


alter table ##SpatialTable 
alter column GeogCol1 add masked with (FUNCTION = 'default()') 

--Now, select the data using credentials of a user without GRANT UNMASK assigned to them for this table 
select * from ##SpatialTable 
--RESULT = 0x00 

drop table ##SpatialTable 
+0

是的,我已经尝试过,但不幸的是,打破了我们的应用程序。 –

+0

你是什么意思它打破了你的应用程序,@SequelSurfer – scsimon

1

你可以尝试一些外部工具DDM在SQL Server等为DataSunrise(有免费试用)或Hexatier。该解决方案可用作反向代理。