{"id":39456,"date":"2018-12-06T10:39:03","date_gmt":"2018-12-06T10:39:03","guid":{"rendered":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/?p=39456"},"modified":"2019-12-03T15:27:03","modified_gmt":"2019-12-03T15:27:03","slug":"static-data-masking-in-ssms-18","status":"publish","type":"post","link":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/","title":{"rendered":"Static Data Masking in SSMS 18"},"content":{"rendered":"<p>\n  In this article we are going to talk about Static Data Masking, a new feature for the SQL Databases in SSMS. Static Data Masking feature previously was available only for the Azure SQL DB.\n<\/p>\n<p><!--more --><\/p>\n<p>\n  Database administrators are responsible for database security and compliance issues. In a normal workflow, we used to have multiple environments for applications such as Production, Staging, UAT, Dev, and Sandbox. It is a regular task for the DBA to refresh the lower (staging, test, UAT etc.) environments with a backup of the production database backup. Sometimes we need to share the database backup with the external vendors as well. The database may contain critical information such as Personally Identifiable Information (PII data) such as email address, contact information, national id number etc.  We might have other sensitive information such as bank account number, credit card number, CVV etc. which we do not want anyone to access.  We need to be compliant with GDPR, PCI, and SOX regulatory compliance as well.\n<\/p>\n<p>\n  If we restore the database to lower environment, all of the data gets transferred to the lower environment which put our critical data at a risk since we do not have security or encryption enabled at that level.  It may be a requirement to mask or shuffle the data prior to a database restore.\n<\/p>\n<p>\n  Consider the below example, where our production database has sensitive credit card information and we have performed a database restore to dev, UAT and sandbox environment.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-28.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-28.png\"\/><\/noscript>\n<\/p>\n<p>\n  You can see here that data is transferred to all environments, which makes our data accessible to a large audience and at risk too.\n<\/p>\n<p>\n  In SQL Server 2016, we come across a new solution \u2018Dynamic Data Masking\u2019 to prevent unauthorized users to access the defined sensitive information. We need to define curtails rules to mask the data. When any user request for the data, SQL Server checks his access and if he is not having necessary permission, he gets masked data. In this process, there are no changes in the source data. But this does not satisfy our case described above.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/static-data-masking-2.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/static-data-masking-2.png\"\/><\/noscript>\n<\/p>\n<p>\n  SSMS 18.0 contains the Static Data Masking feature for the SQL Databases. Previously it was available for the Azure SQL DB only. Static data masking creates a copy of the database and applies the data transformation rules on it.  We can backup this masked database to lower environments so that sensitive data is not transferred to the other end. We can use this features for the databases since SQL Server 2012.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/static-data-masking-3.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/static-data-masking-3.png\"\/><\/noscript>\n<\/p>\n<p>\n  In the above diagram, we can see that there is no sensitive data information is transferred to the other environments using the static data masking.\n<\/p>\n<p>\n  We can use the Static Data Masking for the various purpose as below\n<\/p>\n<ul>\n<li>\n    Preparing database environments other than production\n  <\/li>\n<li>\n    Database development\n  <\/li>\n<li>\n    Database troubleshooting\n  <\/li>\n<li>\n    Sharing data with third-party vendors\n  <\/li>\n<\/ul>\n<h2>Worked example<\/h2>\n<p>\n  Let us understand static data masking using an example.\n<\/p>\n<p>\n  First, create a database \u2018StaticDemo\u2019 along with the table. Insert sample data into it using the below query. This table contains DOB, Email address and the credit card no which we want to mask using this feature. To create the example, see the script in Appendix A\n<\/p>\n<p>\n  Right click on the database name -&gt; Tasks-&gt; Mask Database (Preview)\n<\/p>\n<p>\n  <a rel=\"lightbox [31]\" href=\"\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-31.png\"><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-31.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-31.png\"\/><\/noscript><\/a>\n<\/p>\n<p>\n  This launches the Static Data Masking (Preview) wizard as shown here.\n<\/p>\n<p>\n  In this wizard, you can see Step1: Masking Configuration. Under \u2018Masking Configuration\u2019 we can either choose to mask all columns in the database. Ideally, we do not want to mask all columns of the database.\n<\/p>\n<p>\n  Below this, we can filter columns as well. We can see all tables eligible for this under the filtered columns as well&#8230;\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-32a.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-32a.png\"\/><\/noscript>\n<\/p>\n<p>\n  In the filtered columns, we can do an inline search that means as soon as we write something in the text box, we get tables containing columns with those names. For example, in below image, we type email and it gives the table and that column details.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-33.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-33.png\"\/><\/noscript>\n<\/p>\n<p>\n  If we select all columns for this table, we can see the error for the columns which are not suitable for this data masking. We can see here that identity columns are not eligible for the static data masking.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-34.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-34.png\"\/><\/noscript>\n<\/p>\n<p>\n  Now, just select the columns on which we want to apply static data masking.  We can see that for all the selected columns, it shows the actions as \u2018shuffle\u2019 and there is a configure option against each column selected.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-35.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-35.png\"\/><\/noscript>\n<\/p>\n<p>\n  There are 5 masking functions available.\n<\/p>\n<ol>\n<li><strong>Null<\/strong>:  it replaces the data for that particular column with NULL values\n<\/li>\n<li><strong>Single Value masking<\/strong>: in this masking, we specify a single value and that value will be copied to all data rows for a particular column\n<\/li>\n<li><strong>Shuffle<\/strong>: In this masking function, values are shuffled to new rows\n<\/li>\n<li><strong>Group Shuffle:<\/strong> in this shuffle, it binds several columns together in a shuffling group\n<\/li>\n<li><strong>String Composite:<\/strong> we define string format and values will be replaced as per the specified string\n<\/li>\n<\/ol>\n<p>\n  By default, it selects for the shuffle masking function. We can change it from the drop-down list. Let us change it as below for our data\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/static-data-masking-4.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/static-data-masking-4.png\"\/><\/noscript>\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-36.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-36.png\"\/><\/noscript>\n<\/p>\n<p>\n  For the string composite, we need to define the string format. To do so, click on the configure and it opens up the pop-up screen.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/static-data-masking-5.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/static-data-masking-5.png\"\/><\/noscript>\n<\/p>\n<p>\n  Let us define the string and click on \u2018OK\u2019. I will leave an extra \u2018\\\u2019 here to see how it behaves during the static data masking activity.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-37.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-37.png\"\/><\/noscript>\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-38.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-38.png\"\/><\/noscript>\n<\/p>\n<p>\n  In step 2, we can choose the save the backup location for the clone .bak file. By default, it is the default location set up at the instance level, however, we can change the location here as per our requirement.\n<\/p>\n<p>\n  Next step is to specify the name of the masked database in the text box shown below.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-39.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-39.png\"\/><\/noscript>\n<\/p>\n<p>\n  Let us click on to start the static data masking process. We get the below error message\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-40.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-40.png\"\/><\/noscript>\n<\/p>\n<p>\n  Let me explain the error message.\n<\/p>\n<p>\n  It asks to remove the below artifacts manually.\n<\/p>\n<ul>\n<li>\n    Partially masked database \u2018StaticDemo_Masked\u2019<\/p>\n<p>    <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-41.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-41.png\"\/><\/noscript>\n  <\/li>\n<li>\n    Backup file used for cloning operation location at \u2018\u2026\u2019 <\/p>\n<p>    <a rel=\"lightbox [42]\" href=\"\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-42.png\"><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-42.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-42.png\"\/><\/noscript><\/a>\n  <\/li>\n<\/ul>\n<p>\n  I generated this error intentionally to give you more understanding.  I have performed this static data masking for this database prior as well for testing purpose, so it asks us to remove that masked databases along with the backup file used for cloning operation manually.\n<\/p>\n<ul>\n<li>\n    Long escape character \u2018\\\u2019 at the end:\n  <\/li>\n<\/ul>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-43a.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-43a.png\"\/><\/noscript>\n<\/p>\n<p>\n  This is due to the \u2018\\\u2019 placed during the string masking function for the DOB column. Therefore, go to configure option against the DOB column and remove the \u2018\\\u2019 at the end.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-44a.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-44a.png\"\/><\/noscript>\n<\/p>\n<\/p>\n<p>\n  After removing the \u2018\\\u2019 character, we can see sample value as well below the pattern.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-45a.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-45a.png\"\/><\/noscript>\n<\/p>\n<p>\n  Let go back and click on Ok to apply the static data masking. We can see the message \u2018Masking complete\u2019.\n<\/p>\n<p>\n  We also get a message to clean up the backup file used for the cloning operation.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-46.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-46.png\"\/><\/noscript>\n<\/p>\n<p>\n  Let us view the table on both the Original database and the masked database.\n<\/p>\n<p>\n  <a rel=\"lightbox [47]\" href=\"\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-47.png\"><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-47.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-47.png\"\/><\/noscript><\/a>\n<\/p>\n<p>\n  You can notice the difference, in the data, for the column on which we applied the static data masking functions.  We can change and apply the static data masking function as per our requirements. For example, let me change the Email to below function.\n<\/p>\n<p>\n  <a rel=\"lightbox [48]\" href=\"\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-48.png\"><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-48.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-48.png\"\/><\/noscript><\/a>\n<\/p>\n<p>\n  And we can see the difference in the masked database.\n<\/p>\n<p>\n  <a rel=\"lightbox [49]\" href=\"\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-49.png\"><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-49.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-49.png\"\/><\/noscript><\/a>\n<\/p>\n<h2>Configuration options:<\/h2>\n<p>\n  We can save the masking configuration to an XML file. This XML file can be used later to apply the masking functions directly without doing configuration again. Click on the \u2018Save Config\u2019 and provide a location along with filename to save it. We can use \u2018load config\u2019 to load an existing configuration XML file.\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-50.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-50.png\"\/><\/noscript>\n<\/p>\n<h2>Masking log:<\/h2>\n<p>\n  \u2018Static Data Masking\u2019 creates a log file inside the document folder. We can see the log file name for that particular operation at the bottom of the configuration wizard\n<\/p>\n<p>\n  <img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-51.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-51.png\"\/><\/noscript>\n<\/p>\n<p>\n  In the document folder, there is a folder \u2018Static Data Masking\u2019 and we can see several log file. However, each log file shows one operation of the data masking activity.\n<\/p>\n<p>\n  <a rel=\"lightbox [52]\" href=\"\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-52.png\"><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-52.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-52.png\"\/><\/noscript><\/a>\n<\/p>\n<p>\n  Open the log file and we can see the detailed progress of the operation. In the screenshot, we can see high-level operation below.\n<\/p>\n<ul>\n<li>\n    Begin database clone\n  <\/li>\n<li>\n    Backup Original database\n  <\/li>\n<li>\n    Create a new database from the database backup.\n  <\/li>\n<li>\n    Fetch and adjust Database schema, column lengths\n  <\/li>\n<li>\n    Applies masking for the specified table and columns\n  <\/li>\n<li>\n    Bring Clone database online\n  <\/li>\n<\/ul>\n<p>\n  <a rel=\"lightbox [25]\" href=\"\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-53-e1544018712774.png\"><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-53.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-53.png\"\/><\/noscript><\/a>\n<\/p>\n<p>\n  <a rel=\"lightbox [26]\" href=\"\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-54-e1544018634764.png\"><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-src=\"\/wp-content\/uploads\/2018\/12\/word-image-54.png\"\/><noscript><img decoding=\"async\" style=\"margin: 0px auto; display: block;\" src=\"\/wp-content\/uploads\/2018\/12\/word-image-54.png\"\/><\/noscript><\/a>\n<\/p>\n<p>\n  Note:\n<\/p>\n<p>\n  We cannot revert up to the original state in the masked static database, however, we do not apply changes in the original database.\n<\/p>\n<h2>Conclusion:<\/h2>\n<p>\n  Static data masking is a useful feature for the database administrator to protect the sensitive information in the database. We can easily mask databases and use that copy to restore the database on the other database environments.\n<\/p>\n<h2>Appendix A<\/h2>\n<pre class=\"lang:tsql\">Use USE [StaticDemo]\r\nGo\r\nIF EXISTS(SELECT 1 FROM sys.tables WHERE object_id = OBJECT_ID('Employee'))\r\nBEGIN;\r\n    DROP TABLE [Employee];\r\nEND;\r\nGO\r\n\r\nCREATE TABLE [Employee] (\r\n    [EmployeeID] INTEGER NOT NULL IDENTITY(1, 1),\r\n    [EmpName] VARCHAR(255) NULL,\r\n    [DOB] VARCHAR(255),\r\n    [Email] VARCHAR(255) NULL,\r\n    [CreditCardNo] VARCHAR(255) NULL,\r\n    PRIMARY KEY ([EmployeeID])\r\n);\r\nGO\r\nUSE [StaticDemo]\r\nGO\r\nSET IDENTITY_INSERT [dbo].[Employee] ON \r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (1, N'Buchanan, Arden U.', N'03\/03\/2019', N'montes.nascetur.ridiculus@ut.edu', N'5245775526640157')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (2, N'Carver, Tad G.', N'28\/09\/2018', N'lorem.auctor@ridiculus.net', N'532 43650 34682 695')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (3, N'Caldwell, Dean X.', N'23\/08\/2019', N'mauris@egestasDuisac.net', N'5246688797204612')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (4, N'Wong, Ulric I.', N'20\/06\/2019', N'montes.nascetur@elitsed.ca', N'547708 3774292741')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (5, N'Boyle, Chase M.', N'07\/10\/2019', N'ac.mattis.velit@parturientmontesnascetur.com', N'5412 4097 7923 3968')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (6, N'Bush, Tatiana B.', N'17\/01\/2018', N'Donec.feugiat@Namac.org', N'527627 089427 9483')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (7, N'Glover, Tasha L.', N'16\/08\/2018', N'et.netus@Namac.net', N'536 82370 20615 699')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (8, N'Hodges, Calvin I.', N'21\/12\/2018', N'mauris.Morbi@gravidaAliquam.edu', N'559 17945 94958 441')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (9, N'Mathis, Selma K.', N'16\/11\/2019', N'magna.Suspendisse@turpisvitaepurus.edu', N'5228441867682248')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (10, N'Fuentes, Timothy K.', N'27\/09\/2019', N'posuere.vulputate@tempusloremfringilla.edu', N'5346056688214018')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (11, N'Sanchez, Alexander B.', N'01\/09\/2019', N'libero.lacus.varius@loremfringillaornare.co.uk', N'5521582922069592')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (12, N'Blackburn, Chandler W.', N'19\/11\/2019', N'convallis@Vestibulumut.net', N'532795 698123 1366')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (13, N'Pugh, Craig I.', N'26\/04\/2018', N'tincidunt.neque.vitae@elitpede.edu', N'549 21386 03141 377')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (14, N'Burks, Wylie Y.', N'07\/06\/2019', N'faucibus.ut@vitaenibhDonec.co.uk', N'5424 9213 5956 2216')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (15, N'Charles, Leonard Y.', N'30\/04\/2019', N'Aliquam.vulputate.ullamcorper@pede.edu', N'542874 997111 6384')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (16, N'Alvarado, Ezekiel U.', N'19\/06\/2019', N'sit.amet.ante@ligulaAenean.ca', N'5194535164124752')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (17, N'Davis, Alice Y.', N'15\/02\/2018', N'semper.rutrum@liberoDonec.net', N'5575 5555 9300 3350')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (18, N'Gomez, Kirby T.', N'16\/10\/2018', N'pellentesque.eget@magnaa.com', N'527612 285968 0850')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (19, N'Morrison, Whilemina R.', N'09\/05\/2019', N'Quisque.tincidunt@anteblandit.co.uk', N'5474808598088096')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (20, N'Holden, Lucius B.', N'09\/01\/2019', N'ac.arcu@idante.co.uk', N'548391 126676 5463')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (21, N'Campos, Sebastian V.', N'25\/06\/2018', N'imperdiet.ullamcorper@Phasellus.com', N'5354517406110472')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (22, N'Roberts, Derek O.', N'21\/07\/2019', N'egestas@ridiculusmusDonec.com', N'5448881645595598')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (23, N'Cantu, Rhiannon A.', N'28\/07\/2019', N'leo.Vivamus@et.ca', N'535 55813 46994 584')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (24, N'Peters, Wendy H.', N'24\/08\/2019', N'nibh.Phasellus@arcuvelquam.net', N'547045 1220456052')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (25, N'Dean, Ulla S.', N'23\/12\/2017', N'Quisque.fringilla@venenatisvelfaucibus.net', N'525 54236 67705 334')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (26, N'Hunt, Jameson Q.', N'06\/07\/2018', N'consectetuer.adipiscing@parturientmontes.net', N'5505261570780350')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (27, N'Tyson, Raphael M.', N'30\/11\/2018', N'porttitor.tellus.non@fames.co.uk', N'555 89458 10660 069')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (28, N'Harding, Cullen T.', N'19\/05\/2019', N'Suspendisse.ac@nullaat.net', N'5430 7406 7098 3253')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (29, N'Barton, Christopher C.', N'26\/02\/2019', N'sodales@aliquamadipiscinglacus.net', N'522424 0049547475')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (30, N'Lyons, Vladimir N.', N'09\/11\/2018', N'in.cursus.et@et.org', N'5365 5380 2045 1446')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (31, N'Chang, Kelly G.', N'08\/10\/2018', N'risus.Nunc.ac@tinciduntnunc.co.uk', N'537 08182 39436 658')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (32, N'Moody, Branden J.', N'17\/05\/2018', N'consequat@justoeuarcu.edu', N'533271 721813 4358')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (33, N'Hodge, Stone H.', N'27\/02\/2018', N'odio.semper@sagittisDuisgravida.net', N'526832 053760 3357')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (34, N'Conley, Claudia A.', N'18\/06\/2019', N'natoque@ametornarelectus.com', N'5257752452733327')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (35, N'Landry, Quinn H.', N'07\/07\/2019', N'Curabitur.consequat@feugiatLoremipsum.ca', N'5574656001233356')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (36, N'Anthony, Sonya T.', N'09\/08\/2019', N'ligula.Aliquam@tempus.co.uk', N'5148165455025752')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (37, N'Norris, Ingrid K.', N'08\/03\/2019', N'risus@convallisconvallisdolor.edu', N'541434 518297 8047')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (38, N'Wilkins, Arden Q.', N'29\/03\/2018', N'Etiam.ligula.tortor@risusvarius.org', N'518394 8051131595')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (39, N'Mcfadden, Renee M.', N'05\/06\/2019', N'In.nec@vestibulummassa.net', N'5229812555358607')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (40, N'Whitaker, Brynne A.', N'11\/12\/2017', N'rutrum.lorem@fringillaestMauris.edu', N'549384 3874921345')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (41, N'Nixon, Hilda V.', N'14\/10\/2018', N'adipiscing@sociis.ca', N'524265 908384 0249')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (42, N'Petersen, Brooke H.', N'02\/11\/2019', N'libero.Integer.in@eros.net', N'5393792909312403')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (43, N'Mccall, Hall O.', N'06\/12\/2017', N'lobortis@loremauctorquis.co.uk', N'5449 4354 6280 8607')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (44, N'Owens, Vladimir W.', N'02\/11\/2019', N'urna.Nullam@Sed.com', N'5177 3665 3992 5140')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (45, N'Page, Barry Q.', N'18\/06\/2019', N'neque@quama.org', N'543064 7777301604')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (46, N'Reynolds, Unity P.', N'19\/05\/2018', N'sodales.at.velit@odiovelest.com', N'554 09826 27291 243')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (47, N'Bray, Wilma P.', N'15\/04\/2018', N'vitae.odio@Aliquam.edu', N'531884 0402511963')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (48, N'Bender, Ann J.', N'05\/07\/2018', N'Curae@Nunc.edu', N'539149 6157766466')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (49, N'Ford, Colby L.', N'25\/07\/2018', N'Duis.risus@cursusNunc.org', N'529489 914591 9055')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (50, N'Rose, Yoko S.', N'18\/10\/2019', N'lorem.ut@eratvel.net', N'512436 282655 2329')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (51, N'Barnett, Hector M.', N'07\/03\/2018', N'posuere.vulputate.lacus@velnislQuisque.co.uk', N'5323724082733191')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (52, N'Bass, Walker Y.', N'11\/12\/2017', N'non.magna.Nam@in.com', N'5125996694947225')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (53, N'Hopkins, Iola U.', N'19\/06\/2018', N'consequat.enim@pretiumnequeMorbi.net', N'5303 2948 9560 5923')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (54, N'Baldwin, Henry F.', N'26\/09\/2019', N'interdum.feugiat@duisemper.com', N'5366588629530057')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (55, N'Hood, Dieter H.', N'08\/11\/2018', N'vestibulum.nec@Namconsequatdolor.edu', N'5343 6475 2631 7766')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (56, N'Baxter, Linda W.', N'06\/05\/2018', N'enim.Nunc.ut@ullamcorper.org', N'555447 873634 1519')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (57, N'Dickerson, Damian N.', N'01\/03\/2019', N'arcu.Curabitur@Aenean.edu', N'525290 100682 8118')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (58, N'Giles, Marvin Q.', N'18\/08\/2018', N'Sed.nulla.ante@Sed.org', N'5314024247063589')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (59, N'Hart, Gloria S.', N'10\/09\/2019', N'egestas.a.dui@nibh.net', N'533773 458018 7638')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (60, N'Mercer, Chava C.', N'29\/10\/2018', N'Vivamus.nisi.Mauris@consectetuer.com', N'5267242797077877')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (61, N'Gutierrez, Zenaida O.', N'03\/05\/2018', N'at@luctus.edu', N'533823 980645 1148')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (62, N'Rowland, Kuame R.', N'17\/12\/2018', N'pharetra@urnajusto.net', N'5550473610425243')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (63, N'Sandoval, Macon R.', N'01\/11\/2018', N'vehicula.risus.Nulla@maurisrhoncusid.ca', N'540320 1862799133')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (64, N'Buchanan, Valentine L.', N'20\/06\/2018', N'penatibus.et@mattisornare.edu', N'5320584446775707')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (65, N'Mclaughlin, Leilani F.', N'27\/11\/2018', N'sollicitudin.adipiscing@idnuncinterdum.com', N'543 69175 11155 580')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (66, N'Martin, Troy W.', N'20\/12\/2017', N'ultrices.sit.amet@Nuncut.com', N'527 41178 74192 552')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (67, N'Hyde, Cyrus M.', N'18\/05\/2018', N'sagittis.semper.Nam@pedePraesenteu.org', N'521 54245 03430 706')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (68, N'Houston, Shellie V.', N'08\/09\/2018', N'a.tortor@lectuspede.ca', N'514046 7125625906')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (69, N'Lane, Lev N.', N'13\/02\/2018', N'Sed.eu@sed.org', N'5225433269768363')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (70, N'Duffy, Sasha M.', N'20\/10\/2018', N'velit@Fuscemi.co.uk', N'5339 4286 1856 4169')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (71, N'Adkins, Derek Q.', N'25\/11\/2018', N'mus.Proin.vel@sitametorci.co.uk', N'539667 7760415410')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (72, N'Salinas, Burton R.', N'28\/12\/2017', N'Integer.vulputate@Mauriseu.ca', N'543676 8514183685')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (73, N'Vazquez, Fletcher A.', N'25\/09\/2018', N'congue@ultricessitamet.net', N'524435 8831269094')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (74, N'Glass, Felicia J.', N'14\/02\/2019', N'arcu.Vestibulum.ante@Duisrisus.org', N'533387 135360 0514')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (75, N'Freeman, Murphy N.', N'13\/10\/2019', N'lobortis.ultrices@dictumeuplacerat.org', N'527 81146 43757 480')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (76, N'Tran, Mercedes I.', N'21\/11\/2019', N'in@arcueu.org', N'5124269795801134')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (77, N'Reeves, Keelie X.', N'10\/05\/2019', N'eu.nulla.at@molestieSed.co.uk', N'5203678866041194')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (78, N'Maddox, Clarke W.', N'31\/08\/2019', N'dolor.quam@atlacus.com', N'545738 0967570147')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (79, N'Rollins, Anika T.', N'05\/06\/2019', N'dui@FuscefeugiatLorem.co.uk', N'5495 9631 7754 4558')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (80, N'Blackwell, Galvin K.', N'05\/05\/2018', N'sodales@eratVivamusnisi.edu', N'5329686891198607')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (81, N'Carroll, Rajah P.', N'08\/11\/2019', N'in.consectetuer@ridiculusmus.net', N'523141 287058 0088')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (82, N'Walsh, Dean G.', N'29\/11\/2017', N'euismod@Fuscefermentumfermentum.net', N'5102 4092 0585 1081')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (83, N'Castaneda, Mollie J.', N'25\/02\/2018', N'malesuada.vel.venenatis@egetvarius.net', N'528749 0594475671')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (84, N'Molina, Cullen F.', N'22\/09\/2018', N'sapien.molestie@malesuadafames.co.uk', N'540486 818801 5367')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (85, N'Johns, Tana P.', N'05\/10\/2019', N'eros.nec@egestasSed.co.uk', N'532560 361102 4314')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (86, N'Dominguez, Madonna K.', N'11\/01\/2018', N'tristique.pellentesque.tellus@Sednec.edu', N'5140945496209228')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (87, N'Blanchard, Caldwell Z.', N'26\/07\/2019', N'laoreet.ipsum@sitamet.co.uk', N'535977 4081766525')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (88, N'Horne, Matthew V.', N'17\/10\/2019', N'tempor@Proin.edu', N'5145008412588038')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (89, N'Madden, Sigourney F.', N'01\/06\/2018', N'sed.sem@eleifendnon.com', N'5325330604541316')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (90, N'Riley, Hoyt X.', N'08\/05\/2018', N'velit.in.aliquet@laoreetposuereenim.org', N'514961 8684833197')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (91, N'Cash, Steven Y.', N'01\/02\/2019', N'nec.quam@vitae.edu', N'522 56130 85447 520')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (92, N'Gallegos, Kaseem K.', N'24\/12\/2017', N'elit.fermentum@tellusnon.net', N'5272 0388 5279 7323')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (93, N'Hale, Kenneth S.', N'12\/08\/2019', N'sit.amet@placerataugueSed.ca', N'546264 2263958257')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (94, N'Browning, Suki H.', N'27\/04\/2018', N'In.tincidunt.congue@Fuscemilorem.org', N'545983 175708 9282')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (95, N'Osborne, Maile K.', N'23\/06\/2018', N'fringilla.est.Mauris@ligulaNullam.com', N'5583760808921244')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (96, N'Whitley, Davis P.', N'31\/01\/2019', N'tincidunt.tempus@duiCras.co.uk', N'546009 6552392268')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (97, N'Morin, Igor P.', N'04\/06\/2018', N'Nunc@sempereratin.co.uk', N'514336 8731704811')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (98, N'Hart, Rina R.', N'17\/06\/2018', N'sit@aliquameuaccumsan.net', N'546188 436953 7632')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (99, N'Mccormick, Amal K.', N'15\/10\/2019', N'Cum.sociis.natoque@Sedpharetra.edu', N'5145 0523 0519 3704')\r\nGO\r\nINSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (100, N'Garrison, Halla K.', N'09\/01\/2019', N'euismod.urna@accumsansedfacilisis.co.uk', N'559463 0705979628')\r\nGO\r\nSET IDENTITY_INSERT [dbo].[Employee] OFF\r\nGO<\/pre>\n<div id=\"see_more\"><\/div>\n<p><script> <\/p>\n<p>display_see_more(text='mask', video='mask', banner='mask', banner_link='mask'); <\/p>\n<p><\/script><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>In this article we are going to talk about Static Data Masking, a new feature for the SQL Databases in SSMS. Static Data Masking feature previously was available only for the Azure SQL DB.<!-- AddThis Advanced Settings generic via filter on wp_trim_excerpt --><!-- AddThis Share Buttons generic via filter on wp_trim_excerpt --><\/p>\n","protected":false},"author":48,"featured_media":39457,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[424,23],"tags":[],"class_list":["post-39456","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-masking","category-sql-server-management-studio"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Static Data Masking in SSMS 18<\/title>\n<meta name=\"description\" content=\"In this article we&#039;ll talk about Static Data Masking, a new feature for the SQL Databases in SSMS, it was available only for the Azure SQL DB.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Static Data Masking in SSMS 18\" \/>\n<meta property=\"og:description\" content=\"In this article we&#039;ll talk about Static Data Masking, a new feature for the SQL Databases in SSMS, it was available only for the Azure SQL DB.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/\" \/>\n<meta property=\"og:site_name\" content=\"SQL Shack - articles about database auditing, server performance, data recovery, and more\" \/>\n<meta property=\"article:published_time\" content=\"2018-12-06T10:39:03+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-03T15:27:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-28.png\" \/>\n\t<meta property=\"og:image:width\" content=\"945\" \/>\n\t<meta property=\"og:image:height\" content=\"558\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Rajendra Gupta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rajendra Gupta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/static-data-masking-in-ssms-18\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/static-data-masking-in-ssms-18\\\/\"},\"author\":{\"name\":\"Rajendra Gupta\",\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/#\\\/schema\\\/person\\\/e89dad17f72ffe88a2f28ef1bc03faa9\"},\"headline\":\"Static Data Masking in SSMS 18\",\"datePublished\":\"2018-12-06T10:39:03+00:00\",\"dateModified\":\"2019-12-03T15:27:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/static-data-masking-in-ssms-18\\\/\"},\"wordCount\":1431,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/static-data-masking-in-ssms-18\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.sqlshack.com\\\/wp-content\\\/uploads\\\/2018\\\/12\\\/word-image-28.png\",\"articleSection\":[\"Data masking\",\"SQL Server Management Studio (SSMS)\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/static-data-masking-in-ssms-18\\\/\",\"url\":\"https:\\\/\\\/www.sqlshack.com\\\/static-data-masking-in-ssms-18\\\/\",\"name\":\"Static Data Masking in SSMS 18\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/static-data-masking-in-ssms-18\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/static-data-masking-in-ssms-18\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.sqlshack.com\\\/wp-content\\\/uploads\\\/2018\\\/12\\\/word-image-28.png\",\"datePublished\":\"2018-12-06T10:39:03+00:00\",\"dateModified\":\"2019-12-03T15:27:03+00:00\",\"description\":\"In this article we'll talk about Static Data Masking, a new feature for the SQL Databases in SSMS, it was available only for the Azure SQL DB.\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.sqlshack.com\\\/static-data-masking-in-ssms-18\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/static-data-masking-in-ssms-18\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.sqlshack.com\\\/wp-content\\\/uploads\\\/2018\\\/12\\\/word-image-28.png\",\"contentUrl\":\"https:\\\/\\\/www.sqlshack.com\\\/wp-content\\\/uploads\\\/2018\\\/12\\\/word-image-28.png\",\"width\":945,\"height\":558},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/#website\",\"url\":\"https:\\\/\\\/www.sqlshack.com\\\/\",\"name\":\"SQL Shack - articles about database auditing, server performance, data recovery, and more\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.sqlshack.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/#organization\",\"name\":\"SQL Shack\",\"url\":\"https:\\\/\\\/www.sqlshack.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.sqlshack.com\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/sqlshack-default.png\",\"contentUrl\":\"https:\\\/\\\/www.sqlshack.com\\\/wp-content\\\/uploads\\\/2019\\\/03\\\/sqlshack-default.png\",\"width\":1200,\"height\":630,\"caption\":\"SQL Shack\"},\"image\":{\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.sqlshack.com\\\/#\\\/schema\\\/person\\\/e89dad17f72ffe88a2f28ef1bc03faa9\",\"name\":\"Rajendra Gupta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bfc3d06e67ce655a515c889e0cb14acb5cb807327b25f5dbdefcf02924a22bec?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bfc3d06e67ce655a515c889e0cb14acb5cb807327b25f5dbdefcf02924a22bec?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bfc3d06e67ce655a515c889e0cb14acb5cb807327b25f5dbdefcf02924a22bec?s=96&d=mm&r=g\",\"caption\":\"Rajendra Gupta\"},\"description\":\"Hi! I am Rajendra Gupta, Database Specialist and Architect, helping organizations implement Microsoft SQL Server, Azure, Couchbase, AWS solutions fast and efficiently, fix related issues, and Performance Tuning with over 14 years of experience. I am the author of the book \\\"DP-300 Administering Relational Database on Microsoft Azure\\\". I published more than 650 technical articles on MSSQLTips, SQLShack, Quest, CodingSight, and SeveralNines. I am the creator of one of the biggest free online collections of articles on a single topic, with his 50-part series on SQL Server Always On Availability Groups. Based on my contribution to the SQL Server community, I have been recognized as the prestigious Best Author of the Year continuously in 2019, 2020, and 2021 (2nd Rank) at SQLShack and the MSSQLTIPS champions award in 2020. Personal Blog: https:\\\/\\\/www.dbblogger.com I am always interested in new challenges so if you need consulting help, reach me at rajendra.gupta16@gmail.com View all posts by Rajendra Gupta\",\"url\":\"https:\\\/\\\/www.sqlshack.com\\\/author\\\/rajendra-gupta\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Static Data Masking in SSMS 18","description":"In this article we'll talk about Static Data Masking, a new feature for the SQL Databases in SSMS, it was available only for the Azure SQL DB.","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:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/","og_locale":"en_US","og_type":"article","og_title":"Static Data Masking in SSMS 18","og_description":"In this article we'll talk about Static Data Masking, a new feature for the SQL Databases in SSMS, it was available only for the Azure SQL DB.","og_url":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/","og_site_name":"SQL Shack - articles about database auditing, server performance, data recovery, and more","article_published_time":"2018-12-06T10:39:03+00:00","article_modified_time":"2019-12-03T15:27:03+00:00","og_image":[{"width":945,"height":558,"url":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-28.png","type":"image\/png"}],"author":"Rajendra Gupta","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Rajendra Gupta","Est. reading time":"19 minutes"},"schema":{"@context":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/#article","isPartOf":{"@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/"},"author":{"name":"Rajendra Gupta","@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/#\/schema\/person\/e89dad17f72ffe88a2f28ef1bc03faa9"},"headline":"Static Data Masking in SSMS 18","datePublished":"2018-12-06T10:39:03+00:00","dateModified":"2019-12-03T15:27:03+00:00","mainEntityOfPage":{"@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/"},"wordCount":1431,"commentCount":0,"publisher":{"@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/#organization"},"image":{"@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/#primaryimage"},"thumbnailUrl":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-28.png","articleSection":["Data masking","SQL Server Management Studio (SSMS)"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/","url":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/","name":"Static Data Masking in SSMS 18","isPartOf":{"@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/#primaryimage"},"image":{"@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/#primaryimage"},"thumbnailUrl":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-28.png","datePublished":"2018-12-06T10:39:03+00:00","dateModified":"2019-12-03T15:27:03+00:00","description":"In this article we'll talk about Static Data Masking, a new feature for the SQL Databases in SSMS, it was available only for the Azure SQL DB.","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/static-data-masking-in-ssms-18\/#primaryimage","url":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-28.png","contentUrl":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-content\/uploads\/2018\/12\/word-image-28.png","width":945,"height":558},{"@type":"WebSite","@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/#website","url":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/","name":"SQL Shack - articles about database auditing, server performance, data recovery, and more","description":"","publisher":{"@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/#organization","name":"SQL Shack","url":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/#\/schema\/logo\/image\/","url":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-content\/uploads\/2019\/03\/sqlshack-default.png","contentUrl":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-content\/uploads\/2019\/03\/sqlshack-default.png","width":1200,"height":630,"caption":"SQL Shack"},"image":{"@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/#\/schema\/person\/e89dad17f72ffe88a2f28ef1bc03faa9","name":"Rajendra Gupta","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/secure.gravatar.com\/avatar\/bfc3d06e67ce655a515c889e0cb14acb5cb807327b25f5dbdefcf02924a22bec?s=96&d=mm&r=g","url":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/secure.gravatar.com\/avatar\/bfc3d06e67ce655a515c889e0cb14acb5cb807327b25f5dbdefcf02924a22bec?s=96&d=mm&r=g","contentUrl":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/secure.gravatar.com\/avatar\/bfc3d06e67ce655a515c889e0cb14acb5cb807327b25f5dbdefcf02924a22bec?s=96&d=mm&r=g","caption":"Rajendra Gupta"},"description":"Hi! I am Rajendra Gupta, Database Specialist and Architect, helping organizations implement Microsoft SQL Server, Azure, Couchbase, AWS solutions fast and efficiently, fix related issues, and Performance Tuning with over 14 years of experience. I am the author of the book \"DP-300 Administering Relational Database on Microsoft Azure\". I published more than 650 technical articles on MSSQLTips, SQLShack, Quest, CodingSight, and SeveralNines. I am the creator of one of the biggest free online collections of articles on a single topic, with his 50-part series on SQL Server Always On Availability Groups. Based on my contribution to the SQL Server community, I have been recognized as the prestigious Best Author of the Year continuously in 2019, 2020, and 2021 (2nd Rank) at SQLShack and the MSSQLTIPS champions award in 2020. Personal Blog: https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.dbblogger.com I am always interested in new challenges so if you need consulting help, reach me at rajendra.gupta16@gmail.com View all posts by Rajendra Gupta","url":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/author\/rajendra-gupta\/"}]}},"_links":{"self":[{"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/posts\/39456","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/users\/48"}],"replies":[{"embeddable":true,"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/comments?post=39456"}],"version-history":[{"count":15,"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/posts\/39456\/revisions"}],"predecessor-version":[{"id":44156,"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/posts\/39456\/revisions\/44156"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/media\/39457"}],"wp:attachment":[{"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/media?parent=39456"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/categories?post=39456"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/www.sqlshack.com\/wp-json\/wp\/v2\/tags?post=39456"}],"curies":[{"name":"wp","href":"https:\/\/cold-voice-b72a.comc.workers.dev:443\/https\/api.w.org\/{rel}","templated":true}]}}