ssms18还原数据

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.

在本文中,我们将讨论静态数据屏蔽,这是SSMS中SQL数据库的新功能。 以前,静态数据屏蔽功能仅适用于Azure SQL DB。

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.

数据库管理员负责数据库的安全性和合规性问题。 在正常的工作流程中,我们曾经为应用程序提供了多个环境,例如生产,登台,UAT,开发和沙盒。 DBA用生产数据库备份的备份刷新较低的环境(阶段,测试,UAT等)是一项常规任务。 有时我们也需要与外部供应商共享数据库备份。 该数据库可能包含重要信息,例如个人身份信息(PII数据),例如电子邮件地址,联系信息,身份证号等。我们可能还有其他敏感信息,例如银行帐号,信用卡号,CVV等。不想任何人访问。 我们还需要符合GDPR,PCI和SOX法规遵从性。

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.

如果我们将数据库还原到较低的环境,则所有数据都将传输到较低的环境,这将使关键数据处于危险之中,因为我们没有在该级别启用安全性或加密功能。 在恢复数据库之前,可能需要屏蔽或混洗数据。

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.

考虑以下示例,其中我们的生产数据库具有敏感的信用卡信息,并且我们已将数据库还原到开发,UAT和沙箱环境。

You can see here that data is transferred to all environments, which makes our data accessible to a large audience and at risk too.

您可以在此处看到数据已传输到所有环境,这使得我们的数据可为广大受众访问,并且也存在风险。

In SQL Server 2016, we come across a new solution ‘Dynamic Data Masking’ 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.

在SQL Server 2016中,我们遇到了一个新的解决方案“动态数据屏蔽”,以防止未经授权的用户访问已定义的敏感信息。 我们需要定义缩减规则以掩盖数据。 当任何用户请求数据时,SQL Server都会检查其访问权限,如果没有必要的权限,则将获取被屏蔽的数据。 在此过程中,源数据没有任何变化。 但这不能满足我们上面描述的情况。

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.

SSMS 18.0包含SQL数据库的静态数据屏蔽功能。 以前,它仅适用于Azure SQL DB。 静态数据屏蔽会创建数据库的副本,并在其上应用数据转换规则。 我们可以将该屏蔽的数据库备份到较低的环境,以便敏感数据不会传输到另一端。 自SQL Server 2012起,我们就可以对数据库使用此功能。

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.

在上图中,我们可以看到没有使用静态数据屏蔽将敏感数据信息传输到其他环境。

We can use the Static Data Masking for the various purpose as below

我们可以将静态数据屏蔽用于以下各种目的

  • Preparing database environments other than production 准备生产以外的数据库环境
  • Database development 数据库开发
  • Database troubleshooting 数据库故障排除
  • Sharing data with third-party vendors 与第三方供应商共享数据

工作的例子 (Worked example)

Let us understand static data masking using an example.

让我们使用一个示例来了解静态数据屏蔽。

First, create a database ‘StaticDemo’ 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

首先,与表一起创建数据库“ StaticDemo”。 使用以下查询将示例数据插入其中。 该表包含我们要使用此功能屏蔽的DOB,电子邮件地址和信用卡号。 要创建示例,请参阅附录A中的脚本。

Right click on the database name -> Tasks-> Mask Database (Preview)

右键单击数据库名称->任务->掩码数据库(预览)

This launches the Static Data Masking (Preview) wizard as shown here.

如此处所示,这将启动“静态数据屏蔽(预览)”向导。

In this wizard, you can see Step1: Masking Configuration. Under ‘Masking Configuration’ we can either choose to mask all columns in the database. Ideally, we do not want to mask all columns of the database.

在此向导中,您可以看到“步骤1:屏蔽配置”。 在“屏蔽配置”下,我们可以选择屏蔽数据库中的所有列。 理想情况下,我们不想掩盖数据库的所有列。

Below this, we can filter columns as well. We can see all tables eligible for this under the filtered columns as well…

在此之下,我们也可以过滤列。 我们还可以在过滤列下看到所有符合此条件的表…

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.

在过滤的列中,我们可以进行内联搜索,这意味着一旦在文本框中写了一些内容,便会得到包含具有这些名称的列的表。 例如,在下图中,我们键入email,它提供了表格和该列的详细信息。

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.

如果我们为该表选择所有列,则会看到不适合此数据屏蔽的列的错误。 我们在这里可以看到,标识列不符合静态数据屏蔽的条件。

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 ‘shuffle’ and there is a configure option against each column selected.

现在,只需选择我们要在其上应用静态数据屏蔽的列。 我们可以看到,对于所有选定的列,它都将操作显示为“随机播放”,并且针对每个选定的列都有一个configure选项。

There are 5 masking functions available.

有5种屏蔽功能可用。

  1. Null: it replaces the data for that particular column with NULL values Null :它将特定列的数据替换为NULL值
  2. Single Value masking: in this masking, we specify a single value and that value will be copied to all data rows for a particular column 单值屏蔽 :在此屏蔽中,我们指定一个值,该值将被复制到特定列的所有数据行中
  3. Shuffle: In this masking function, values are shuffled to new rows
  4. 随机播放 :在此屏蔽功能中,值随机播放到新行
  5. Group Shuffle: in this shuffle, it binds several columns together in a shuffling group
  6. 分组混洗在这种混洗中,它将多个列绑定到一个混洗组中
  7. String Composite: we define string format and values will be replaced as per the specified string 字符串复合:我们定义字符串格式,并将根据指定的字符串替换值

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

默认情况下,它选择随机混编掩盖功能。 我们可以从下拉列表中进行更改。 让我们如下更改数据

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.

对于字符串组合,我们需要定义字符串格式。 为此,请单击配置,它将打开弹出屏幕。

Let us define the string and click on ‘OK’. I will leave an extra ‘\’ here to see how it behaves during the static data masking activity.

让我们定义字符串,然后单击“确定”。 我将在此处留下一个额外的'\',以查看其在静态数据屏蔽活动期间的行为。

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.

在步骤2中,我们可以选择克隆.bak文件的保存备份位置。 默认情况下,它是在实例级别设置的默认位置,但是,我们可以根据需要在此处更改位置。

Next step is to specify the name of the masked database in the text box shown below.

下一步是在下面显示的文本框中指定被屏蔽数据库的名称。

Let us click on to start the static data masking process. We get the below error message

让我们单击以开始静态数据屏蔽过程。 我们收到以下错误消息

Let me explain the error message.

让我解释一下错误信息。

It asks to remove the below artifacts manually.

它要求手动删除以下工件。

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.

我故意产生此错误是为了让您有更多的了解。 出于测试目的,我也已经为此数据库执行过此静态数据屏蔽,因此它要求我们删除该屏蔽的数据库以及用于克隆操作的备份文件。

  • Long escape character ‘\’ at the end: 结尾处的长转义字符“ \”:

This is due to the ‘\’ placed during the string masking function for the DOB column. Therefore, go to configure option against the DOB column and remove the ‘\’ at the end.

这是由于在DOB列的字符串掩码功能期间放置了“ \”。 因此,转到“ DOB”列的“ configure”选项并在末尾删除“ \”。

After removing the ‘\’ character, we can see sample value as well below the pattern.

删除“ \”字符后,我们可以在模式下方看到样本值。

Let go back and click on Ok to apply the static data masking. We can see the message ‘Masking complete’.

让我们返回并单击确定以应用静态数据屏蔽。 我们可以看到“掩膜完成”消息。

We also get a message to clean up the backup file used for the cloning operation.

我们还会收到一条消息,提示您清理用于克隆操作的备份文件。

Let us view the table on both the Original database and the masked database.

让我们在原始数据库和屏蔽数据库上查看表。

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.

您会注意到,在数据上,我们应用了静态数据屏蔽功能的列有所不同。 我们可以根据需要更改和应用静态数据屏蔽功能。 例如,让我将“将电子邮件发送到”功能更改为以下功能。

And we can see the difference in the masked database.

我们可以看到掩蔽数据库中的差异。

配置选项: (Configuration options:)

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 ‘Save Config’ and provide a location along with filename to save it. We can use ‘load config’ to load an existing configuration XML file.

我们可以将屏蔽配置保存到XML文件中。 以后可以使用此XML文件直接应用屏蔽功能,而无需再次进行配置。 单击“保存配置”,然后提供一个位置以及文件名进行保存。 我们可以使用“ load config”加载现有的配置XML文件。

屏蔽日志: (Masking log:)

‘Static Data Masking’ 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

“静态数据屏蔽”会在文档文件夹内创建一个日志文件。 我们可以在配置向导的底部看到该特定操作的日志文件名

In the document folder, there is a folder ‘Static Data Masking’ and we can see several log file. However, each log file shows one operation of the data masking activity.

在document文件夹中,有一个文件夹“ Static Data Masking”,我们可以看到几个日志文件。 但是,每个日志文件都显示一个数据屏蔽活动的操作。

Open the log file and we can see the detailed progress of the operation. In the screenshot, we can see high-level operation below.

打开日志文件,我们可以看到操作的详细进度。 在屏幕截图中,我们可以在下面看到高级操作。

  • Begin database clone 开始数据库克隆
  • Backup Original database 备份原始数据库
  • Create a new database from the database backup. 从数据库备份创建一个新数据库。
  • Fetch and adjust Database schema, column lengths 获取和调整数据库架构,列长度
  • Applies masking for the specified table and columns 对指定的表和列应用掩码
  • Bring Clone database online 在线克隆数据库

Note:

注意:

We cannot revert up to the original state in the masked static database, however, we do not apply changes in the original database.

我们无法还原到屏蔽的静态数据库中的原始状态,但是,我们不对原始数据库进行更改。

结论: (Conclusion:)

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.

静态数据屏蔽是数据库管理员保护数据库中敏感信息的有用功能。 我们可以轻松地屏蔽数据库,并使用该副本在其他数据库环境中还原数据库。

附录A (Appendix A)

Use USE [StaticDemo]
Go
IF EXISTS(SELECT 1 FROM sys.tables WHERE object_id = OBJECT_ID('Employee'))
BEGIN;DROP TABLE [Employee];
END;
GOCREATE TABLE [Employee] ([EmployeeID] INTEGER NOT NULL IDENTITY(1, 1),[EmpName] VARCHAR(255) NULL,[DOB] VARCHAR(255),[Email] VARCHAR(255) NULL,[CreditCardNo] VARCHAR(255) NULL,PRIMARY KEY ([EmployeeID])
);
GO
USE [StaticDemo]
GO
SET IDENTITY_INSERT [dbo].[Employee] ON
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (3, N'Caldwell, Dean X.', N'23/08/2019', N'mauris@egestasDuisac.net', N'5246688797204612')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (9, N'Mathis, Selma K.', N'16/11/2019', N'magna.Suspendisse@turpisvitaepurus.edu', N'5228441867682248')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (10, N'Fuentes, Timothy K.', N'27/09/2019', N'posuere.vulputate@tempusloremfringilla.edu', N'5346056688214018')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (21, N'Campos, Sebastian V.', N'25/06/2018', N'imperdiet.ullamcorper@Phasellus.com', N'5354517406110472')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (22, N'Roberts, Derek O.', N'21/07/2019', N'egestas@ridiculusmusDonec.com', N'5448881645595598')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (26, N'Hunt, Jameson Q.', N'06/07/2018', N'consectetuer.adipiscing@parturientmontes.net', N'5505261570780350')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (29, N'Barton, Christopher C.', N'26/02/2019', N'sodales@aliquamadipiscinglacus.net', N'522424 0049547475')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (34, N'Conley, Claudia A.', N'18/06/2019', N'natoque@ametornarelectus.com', N'5257752452733327')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (35, N'Landry, Quinn H.', N'07/07/2019', N'Curabitur.consequat@feugiatLoremipsum.ca', N'5574656001233356')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (39, N'Mcfadden, Renee M.', N'05/06/2019', N'In.nec@vestibulummassa.net', N'5229812555358607')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (45, N'Page, Barry Q.', N'18/06/2019', N'neque@quama.org', N'543064 7777301604')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (48, N'Bender, Ann J.', N'05/07/2018', N'Curae@Nunc.edu', N'539149 6157766466')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (54, N'Baldwin, Henry F.', N'26/09/2019', N'interdum.feugiat@duisemper.com', N'5366588629530057')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (62, N'Rowland, Kuame R.', N'17/12/2018', N'pharetra@urnajusto.net', N'5550473610425243')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (64, N'Buchanan, Valentine L.', N'20/06/2018', N'penatibus.et@mattisornare.edu', N'5320584446775707')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (69, N'Lane, Lev N.', N'13/02/2018', N'Sed.eu@sed.org', N'5225433269768363')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (73, N'Vazquez, Fletcher A.', N'25/09/2018', N'congue@ultricessitamet.net', N'524435 8831269094')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (76, N'Tran, Mercedes I.', N'21/11/2019', N'in@arcueu.org', N'5124269795801134')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (80, N'Blackwell, Galvin K.', N'05/05/2018', N'sodales@eratVivamusnisi.edu', N'5329686891198607')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (88, N'Horne, Matthew V.', N'17/10/2019', N'tempor@Proin.edu', N'5145008412588038')
GO
INSERT [dbo].[Employee] ([EmployeeID], [EmpName], [DOB], [Email], [CreditCardNo]) VALUES (89, N'Madden, Sigourney F.', N'01/06/2018', N'sed.sem@eleifendnon.com', N'5325330604541316')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
INSERT [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')
GO
SET IDENTITY_INSERT [dbo].[Employee] OFF
GO

翻译自: https://www.sqlshack.com/static-data-masking-in-ssms-18/

ssms18还原数据

ssms18还原数据_SSMS 18中的静态数据屏蔽相关推荐

  1. django 静态数据_如何在Django中使用静态数据?

    django 静态数据 Static Data means those data items that we cannot want to change, we want to use them as ...

  2. 对C++ static作用——修饰 数据成员(改变为静态数据成员)、 成员函数(改变为静态成员函数)

    **************************C++中的static的用法******************************** *************************** ...

  3. matlab如何导入多文本数据,将文本文件中的混合数据导入表

    样本文件概述 样本文件 outages.csv 包含表示美国电力中断的数据.文件的前几行如下: Region,OutageTime,Loss,Customers,RestorationTime,Cau ...

  4. 从大数据应用案例中理解大数据的应用价值

    现在的社会是一个高速发展的社会,科技发达,信息流通,人们之间的交流越来越密切,生活也越来越方便,大数据就是这个高科技时代的产物. 阿里巴巴创办人马云来台演讲中就提到,未来的时代将不是IT时代,而是DT ...

  5. 在 Web 数据控件中显示二进制数据54

    简介 前面的教程中 , 我们介绍了将二进制数据与应用程序的基础数据模型相关联的两种方法 , 并使用FileUpload 控件从浏览器向 Web 服务器的文件系统上载.我们还将了解怎样将上载的二进制数据 ...

  6. html使用xml数据岛,html中的xml数据岛记录编辑与添加_xml技巧

    HTML中的数据岛中的记录集 HTML中的XML数据岛记录编辑与添加 酒店名称: 地址: 主页: 电子邮件: 电话: 级别: " οnclick="theXMLisland.rec ...

  7. oracle分页数据,在Oracle中得到分页数据

    在Oracle中得到分页数据 得到DataSet的值 例子如下: /// /// 得到Colletion分页数据 /// public DataSet GetList(int PageIndex, i ...

  8. java json转二进制数据_JSON字符串中的二进制数据 . 比Base64更好的东西

    UTF-8的问题在于它不是最节省空间的编码 . 此外,一些随机二进制字节序列是无效的UTF-8编码 . 因此,您不能将随机二进制字节序列解释为某些UTF-8数据,因为它将是无效的UTF-8编码 . 这 ...

  9. matlab导入word数据,如何将Excel数据导入MATLAB中?/excel数据导入word模板

    如何将Excel数据导入MATLAB中? 从excel中导入,可以用xlsread()函数. 例如: A=xlsread('C:\Users\Administrator\Desktop\07-29预. ...

最新文章

  1. JSON入门基础知识
  2. apache 修改最大连接数
  3. UA MATH564 概率论VI 数理统计基础1
  4. javascript总for of和for in的区别?
  5. java mybtis关联查询,7.MyBatis 关联查询(一对一)
  6. ASP.NET深入浅出系列3- Page类
  7. java获取本机ip地址和tomcat端口号
  8. 软考计算机英语词汇,软考计算机专业英语常用词汇(首字母I-O)
  9. 易烊千玺代言雀巢咖啡;美国食品科技公司获3.5亿美元C轮融资;都乐“菠萝废物”开发皮革替代品...
  10. vmware 运行xp 蓝屏
  11. debug断点调试进不去
  12. gba口袋妖怪c语言源代码,查看“精灵宝可梦 火红·叶绿”的源代码
  13. 【CXY】JAVA基础 之 GUI
  14. 通过python的requests库和socks代理调用接口API(接码平台)
  15. dir-616 c1语言包,D-Link DIR616无线路由器设置教程
  16. 2020之后IT技术的应用思考
  17. html网页文件保存rss订阅,博客RSS订阅一些优化方法
  18. 阿里云轻量应用服务器流量计算方法
  19. 自家的智能家居方案研究
  20. Druid数据源MySql语句,添加租户(tenant_id)id

热门文章

  1. Chromium内核原理之网络栈HTTP Cache
  2. 深入理解Android(二):Java虚拟机Dalvik
  3. 三 .数据库(表操作)
  4. css简单的数学运算
  5. JAVA中如何判断一个输入是数字(小数和整数)还是字符串?
  6. Python多线程报错之RuntimeError
  7. QString string int double char 相互转化
  8. 请问asp.net网页里能显示tiff格式的图片吗?
  9. LeetCode(181)——超过经理收入的员工(MySQL)
  10. 前端—每天5道面试题(4)