{"id":8868,"date":"2016-09-19T15:19:13","date_gmt":"2016-09-19T13:19:13","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/"},"modified":"2023-06-06T10:53:03","modified_gmt":"2023-06-06T08:53:03","slug":"sql-server-2016-dynamic-data-masking-and-database-role","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/","title":{"rendered":"SQL Server 2016: Dynamic Data Masking and database role"},"content":{"rendered":"<p>Last week, dbi services organized an event named \u201cSQL Server 2016: what\u2019s new?\u201d in Lausanne, Basel and Zurich. I would take the opportunity to say again a big thank you to everyone which joined us.<br \/>\nDuring my session some questions concerning the new functionality Dynamic Data Masking were asked. In fact data are masked for some roles and not for some others.<br \/>\nLet\u2019s try to clarify that.<\/p>\n<p>I will use the same script I used during the event to initialize the database, create the table and fill-in my table with some rows:<\/p>\n<div>\n<div id=\"highlighter_745654\" class=\"syntaxhighlighter  actionscript3\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"actionscript3 plain\">-- Create database<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"actionscript3 plain\">USE MASTER<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"actionscript3 plain\">GO<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"actionscript3 plain\">CREATE DATABASE DDM_TEST<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"actionscript3 plain\">GO<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"actionscript3 plain\">-- Create the Confidential table<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"actionscript3 plain\">USE [DDM_TEST]<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"actionscript3 plain\">GO<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"actionscript3 plain\">CREATE TABLE [dbo].[Confidential](<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"actionscript3 plain\">[ID] [<\/code><code class=\"actionscript3 keyword\">int<\/code><code class=\"actionscript3 plain\">] NULL,<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"actionscript3 plain\">[Name] [n<\/code><code class=\"actionscript3 variable\">var<\/code><code class=\"actionscript3 plain\">char](<\/code><code class=\"actionscript3 value\">70<\/code><code class=\"actionscript3 plain\">)NULL,<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"actionscript3 plain\">[CreditCard] [<\/code><code class=\"actionscript3 variable\">var<\/code><code class=\"actionscript3 plain\">char](<\/code><code class=\"actionscript3 value\">16<\/code><code class=\"actionscript3 plain\">)NULL,<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"actionscript3 plain\">[Salary] [<\/code><code class=\"actionscript3 keyword\">int<\/code><code class=\"actionscript3 plain\">] NULL,<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"actionscript3 plain\">[Email] [n<\/code><code class=\"actionscript3 variable\">var<\/code><code class=\"actionscript3 plain\">char](<\/code><code class=\"actionscript3 value\">60<\/code><code class=\"actionscript3 plain\">)NULL<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"actionscript3 plain\">)ON [PRIMARY]<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"actionscript3 plain\">-- Insert some rows<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"actionscript3 plain\">INSERT INTO [dbo].[Confidential] VALUES (<\/code><code class=\"actionscript3 string\">'1'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'Stephane'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'3546748598467584'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 value\">113459<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'sts@dbi-services.com'<\/code><code class=\"actionscript3 plain\">)<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"actionscript3 plain\">INSERT INTO [dbo].[Confidential] VALUES (<\/code><code class=\"actionscript3 string\">'2'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'David'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'3546746598450989'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 value\">143576<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'dab@dbi-services.com'<\/code><code class=\"actionscript3 plain\">)<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"actionscript3 plain\">INSERT INTO [dbo].[Confidential] VALUES (<\/code><code class=\"actionscript3 string\">'3'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'Nathan'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'3890098321457893'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 value\">118900<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'nac@dbi-services.com'<\/code><code class=\"actionscript3 plain\">)<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"actionscript3 plain\">INSERT INTO [dbo].[Confidential] VALUES (<\/code><code class=\"actionscript3 string\">'4'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'Olivier'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'3564890234785612'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 value\">98000<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'olt@dbi-services.com'<\/code><code class=\"actionscript3 plain\">)<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"actionscript3 plain\">INSERT INTO [dbo].[Confidential] VALUES (<\/code><code class=\"actionscript3 string\">'5'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'Alain'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'9897436900989342'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 value\">85900<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'ala@dbi-services.com'<\/code><code class=\"actionscript3 plain\">)<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"actionscript3 plain\">INSERT INTO [dbo].[Confidential] VALUES (<\/code><code class=\"actionscript3 string\">'6'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'Fabrice'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'9083234689021340'<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 value\">102345<\/code><code class=\"actionscript3 plain\">,<\/code><code class=\"actionscript3 string\">'fad@dbi-services.com'<\/code><code class=\"actionscript3 plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>I will create some masks for confidential columns with the following script:<\/p>\n<div>\n<div id=\"highlighter_589634\" class=\"syntaxhighlighter  actionscript3\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"actionscript3 plain\">-- create data masking <\/code><code class=\"actionscript3 keyword\">for<\/code> <code class=\"actionscript3 plain\">confidential columns <\/code><code class=\"actionscript3 keyword\">with<\/code> <code class=\"actionscript3 plain\">masking functions<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"actionscript3 plain\">USE DDM_TEST<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"actionscript3 plain\">GO<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"actionscript3 plain\">ALTER Table Confidential<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"actionscript3 plain\">ALTER COLUMN Salary ADD MASKED WITH (FUNCTION = <\/code><code class=\"actionscript3 string\">'random(1, 150000)'<\/code><code class=\"actionscript3 plain\">)<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"actionscript3 plain\">ALTER Table Confidential<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"actionscript3 plain\">ALTER COLUMN CreditCard ADD MASKED WITH (FUNCTION=<\/code><code class=\"actionscript3 string\">'partial(1,\"XXXX\",2)'<\/code><code class=\"actionscript3 plain\">)<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"actionscript3 plain\">ALTER Table Confidential<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"actionscript3 plain\">ALTER COLUMN Email ADD MASKED WITH (FUNCTION=<\/code><code class=\"actionscript3 string\">'email()'<\/code><code class=\"actionscript3 plain\">)<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>I create now a user and add him to db_datareader role:<\/p>\n<div>\n<div id=\"highlighter_102725\" class=\"syntaxhighlighter  actionscript3\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"actionscript3 plain\">-- Create a user named TestDemo and add <\/code><code class=\"actionscript3 keyword\">this<\/code> <code class=\"actionscript3 plain\">user to the db_datareader role<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"actionscript3 plain\">USE DDM_TEST<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"actionscript3 plain\">go<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"actionscript3 plain\">CREATE USER TestDemo WITHOUT LOGIN<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"actionscript3 plain\">USE [DDM_TEST]<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"actionscript3 plain\">GO<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"actionscript3 plain\">ALTER ROLE [db_datareader] ADD MEMBER [TestDemo]<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"actionscript3 plain\">GO<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Let\u2019s try to visualize the Confidential table with my user:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-10905\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res1.jpg\" alt=\"DDM_res1\" width=\"300\" height=\"231\" \/><\/a><\/p>\n<p>Member of the db_datareader role are able to query the Confidential table but cannot see masked columns without masks.<br \/>\nLet\u2019s try to add my user to the db_datawriter role and rerun my query:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res2.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-10906\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res2.jpg\" alt=\"DDM_res2\" width=\"300\" height=\"296\" \/><\/a><\/p>\n<p>Same, and it\u2019s normal as db_datawriter cannot change read possibility, but the user is now able to insert data in the Confidential table like this for example:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-10903\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3.jpg\" alt=\"DDM_res3\" width=\"300\" height=\"118\" \/><\/a><\/p>\n<p>But, it cannot view in clear text data that it has inserted.<br \/>\nLet&#8217;s add my user to the db_owner database role:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res4.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-10904\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res4.jpg\" alt=\"DDM_res4\" width=\"300\" height=\"233\" \/><\/a><\/p>\n<p>He can now view masked columns.<br \/>\nIn term of permissions for data masking we have:<\/p>\n<ul>\n<li>to create table with dynamic data mask: CREATE TABLE and ALTER on schema permissions are needed<\/li>\n<li>to add, replace, remove a mask on a column:\u00a0 ALTER ANY MASK permission and ALTER permission on table are needed<\/li>\n<li>to view unmasked data on a table where a user has SELECT permission: requires UNMASK permission for the user<\/li>\n<li>CONTROL permission on a database: includes ALTER ANY MASK and UNMASK permission (admin users or roles as SYSADMIN, SERVER_ADMIN, db_owner have automatically CONTROL permission on the database)<\/li>\n<\/ul>\n<p>Happy masking \ud83d\ude09<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Last week, dbi services organized an event named \u201cSQL Server 2016: what\u2019s new?\u201d in Lausanne, Basel and Zurich. I would take the opportunity to say again a big thank you to everyone which joined us. During my session some questions concerning the new functionality Dynamic Data Masking were asked. In fact data are masked for [&hellip;]<\/p>\n","protected":false},"author":21,"featured_media":8873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,48],"tags":[926,927,25,566],"type_dbi":[],"class_list":["post-8868","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","category-technology-survey","tag-dynamic-data-masking","tag-role","tag-security","tag-sql-server-2016"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SQL Server 2016: Dynamic Data Masking and database role - dbi Blog<\/title>\n<meta name=\"description\" content=\"SQL Server 2016 dynamic data masking visualize masked data or clear data depending on database role\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server 2016: Dynamic Data Masking and database role\" \/>\n<meta property=\"og:description\" content=\"SQL Server 2016 dynamic data masking visualize masked data or clear data depending on database role\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-09-19T13:19:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-06T08:53:03+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"730\" \/>\n\t<meta property=\"og:image:height\" content=\"287\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"St\u00e9phane Savorgnano\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"St\u00e9phane Savorgnano\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/\"},\"author\":{\"name\":\"St\u00e9phane Savorgnano\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/b6bce7d75118b35bdb3b439ad6a9ca3c\"},\"headline\":\"SQL Server 2016: Dynamic Data Masking and database role\",\"datePublished\":\"2016-09-19T13:19:13+00:00\",\"dateModified\":\"2023-06-06T08:53:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/\"},\"wordCount\":326,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3-1.jpg\",\"keywords\":[\"Dynamic Data Masking\",\"role\",\"Security\",\"SQL Server 2016\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Technology Survey\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/\",\"name\":\"SQL Server 2016: Dynamic Data Masking and database role - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3-1.jpg\",\"datePublished\":\"2016-09-19T13:19:13+00:00\",\"dateModified\":\"2023-06-06T08:53:03+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/b6bce7d75118b35bdb3b439ad6a9ca3c\"},\"description\":\"SQL Server 2016 dynamic data masking visualize masked data or clear data depending on database role\",\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3-1.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3-1.jpg\",\"width\":730,\"height\":287},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server 2016: Dynamic Data Masking and database role\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/b6bce7d75118b35bdb3b439ad6a9ca3c\",\"name\":\"St\u00e9phane Savorgnano\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/88d2a790f775c52c1012ec644d883431da758f2cbcfc16067ade04d2ef625ef5?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/88d2a790f775c52c1012ec644d883431da758f2cbcfc16067ade04d2ef625ef5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/88d2a790f775c52c1012ec644d883431da758f2cbcfc16067ade04d2ef625ef5?s=96&d=mm&r=g\",\"caption\":\"St\u00e9phane Savorgnano\"},\"description\":\"St\u00e9phane Savorgnano has more than fifteen years of experience in Microsoft software development and in SQL Server database solutions. He is specialized in SQL Server installation, performance analysis, best practices, etc. St\u00e9phane Savorgnano is Microsoft Certified Solutions Associate (MCSA) and\u00a0Microsoft Certified Solutions Expert (MCSE) for SQL Server 2012. He is also Microsoft Certified Technology Specialist (MCTS) and Microsoft Certified IT Professional (MCITP) for SQL Server 2008 as well as ITIL Foundation V3 certified. Prior to joining dbi services, he was software engineer at Ciba Specialty Chemicals in Basel. St\u00e9phane Savorgnano holds a Master of Informatics from Mulhouse University (F). His branch-related experience covers Banking \/ Financial Services, Chemicals &amp; Pharmaceuticals, etc.\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/stephane-savorgnano\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL Server 2016: Dynamic Data Masking and database role - dbi Blog","description":"SQL Server 2016 dynamic data masking visualize masked data or clear data depending on database role","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/","og_locale":"en_US","og_type":"article","og_title":"SQL Server 2016: Dynamic Data Masking and database role","og_description":"SQL Server 2016 dynamic data masking visualize masked data or clear data depending on database role","og_url":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/","og_site_name":"dbi Blog","article_published_time":"2016-09-19T13:19:13+00:00","article_modified_time":"2023-06-06T08:53:03+00:00","og_image":[{"width":730,"height":287,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3-1.jpg","type":"image\/jpeg"}],"author":"St\u00e9phane Savorgnano","twitter_card":"summary_large_image","twitter_misc":{"Written by":"St\u00e9phane Savorgnano","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/"},"author":{"name":"St\u00e9phane Savorgnano","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/b6bce7d75118b35bdb3b439ad6a9ca3c"},"headline":"SQL Server 2016: Dynamic Data Masking and database role","datePublished":"2016-09-19T13:19:13+00:00","dateModified":"2023-06-06T08:53:03+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/"},"wordCount":326,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3-1.jpg","keywords":["Dynamic Data Masking","role","Security","SQL Server 2016"],"articleSection":["Database Administration &amp; Monitoring","Technology Survey"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/","url":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/","name":"SQL Server 2016: Dynamic Data Masking and database role - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3-1.jpg","datePublished":"2016-09-19T13:19:13+00:00","dateModified":"2023-06-06T08:53:03+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/b6bce7d75118b35bdb3b439ad6a9ca3c"},"description":"SQL Server 2016 dynamic data masking visualize masked data or clear data depending on database role","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3-1.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/DDM_res3-1.jpg","width":730,"height":287},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-dynamic-data-masking-and-database-role\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Server 2016: Dynamic Data Masking and database role"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/b6bce7d75118b35bdb3b439ad6a9ca3c","name":"St\u00e9phane Savorgnano","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/88d2a790f775c52c1012ec644d883431da758f2cbcfc16067ade04d2ef625ef5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/88d2a790f775c52c1012ec644d883431da758f2cbcfc16067ade04d2ef625ef5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/88d2a790f775c52c1012ec644d883431da758f2cbcfc16067ade04d2ef625ef5?s=96&d=mm&r=g","caption":"St\u00e9phane Savorgnano"},"description":"St\u00e9phane Savorgnano has more than fifteen years of experience in Microsoft software development and in SQL Server database solutions. He is specialized in SQL Server installation, performance analysis, best practices, etc. St\u00e9phane Savorgnano is Microsoft Certified Solutions Associate (MCSA) and\u00a0Microsoft Certified Solutions Expert (MCSE) for SQL Server 2012. He is also Microsoft Certified Technology Specialist (MCTS) and Microsoft Certified IT Professional (MCITP) for SQL Server 2008 as well as ITIL Foundation V3 certified. Prior to joining dbi services, he was software engineer at Ciba Specialty Chemicals in Basel. St\u00e9phane Savorgnano holds a Master of Informatics from Mulhouse University (F). His branch-related experience covers Banking \/ Financial Services, Chemicals &amp; Pharmaceuticals, etc.","url":"https:\/\/www.dbi-services.com\/blog\/author\/stephane-savorgnano\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/8868","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/21"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=8868"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/8868\/revisions"}],"predecessor-version":[{"id":25635,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/8868\/revisions\/25635"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/8873"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=8868"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=8868"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=8868"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=8868"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}