WEBVTT

00:00:00.000 --> 00:00:09.907
[MUSIC]

00:00:13.409 --> 00:00:16.496
Everybody welcome to another
exciting episode of Data Exposed.

00:00:16.496 --> 00:00:19.745
I'm your host Scott Kline, and with
me today are two individuals to talk

00:00:19.745 --> 00:00:21.295
about the data migration assistant.

00:00:21.295 --> 00:00:25.425
Now we've had you here before
about a month ago, and you're new.

00:00:25.425 --> 00:00:26.225
>> Yep.
>> Why

00:00:26.225 --> 00:00:28.555
don't you take a second to introduce
yourselves and then we'll get going.

00:00:28.555 --> 00:00:29.805
Why don't you get started?

00:00:29.805 --> 00:00:32.415
>> Yeah, so
my name is Raj Pajaradju.

00:00:32.415 --> 00:00:36.850
I'm the senior program manager
in data migration team.

00:00:36.850 --> 00:00:41.260
Our team is primarily responsible
for all kind of data migrations,

00:00:41.260 --> 00:00:43.860
from foreign platforms,

00:00:43.860 --> 00:00:48.790
from legacy SQL Servers,
to the modern SQL platforms.

00:00:48.790 --> 00:00:51.970
>> Yep, okay.
>> And I'm primarily responsible for

00:00:51.970 --> 00:00:57.010
SQL Server upgrades, as well as the
SQL Server migrations too, cloud.

00:00:57.010 --> 00:00:58.180
>> Cool, awesome.

00:00:58.180 --> 00:00:58.690
All right go ahead.

00:00:58.690 --> 00:01:01.570
>> I'm Akash [INAUDIBLE] I'm
an engineer manager on the data

00:01:01.570 --> 00:01:02.470
migration team.

00:01:02.470 --> 00:01:06.990
We're working with Raj
building these awesome tools.

00:01:06.990 --> 00:01:09.640
>> Okay, so you were hear about
a month ago to sort of introduce

00:01:09.640 --> 00:01:11.260
the data migration assistant,
correct?

00:01:11.260 --> 00:01:11.790
>> Yes.

00:01:11.790 --> 00:01:13.570
>> And this is a follow up.

00:01:13.570 --> 00:01:18.330
So last time we kind of introduced
it and talked about here's the tool,

00:01:18.330 --> 00:01:20.120
here's initially what it does.

00:01:20.120 --> 00:01:23.150
Today, what are you
going to show us?

00:01:23.150 --> 00:01:25.240
>> So welcome to the part two,
first of all.

00:01:25.240 --> 00:01:25.740
>> Part two?
>> Yeah.

00:01:25.740 --> 00:01:28.040
Part two of the data migration

00:01:28.040 --> 00:01:29.266
assistant series.

00:01:29.266 --> 00:01:32.406
In the first series,
in the first video,

00:01:32.406 --> 00:01:37.896
actually we introduced to you the
data migration assistant DMA 1.0.

00:01:37.896 --> 00:01:39.230
>> 1.0, yeah.

00:01:39.230 --> 00:01:44.060
>> Which enable the assessments
to the migrating to the sequel

00:01:44.060 --> 00:01:44.790
server platforms.

00:01:44.790 --> 00:01:45.480
>> Yep.

00:01:45.480 --> 00:01:47.350
>> And then, in this video,

00:01:47.350 --> 00:01:51.530
we're gonna be showcasing
you the data migration 2.0.

00:01:51.530 --> 00:01:53.375
>> So we're already up to 2.0?

00:01:53.375 --> 00:01:53.940
>> Yes, 2.0
>> Yes.

00:01:53.940 --> 00:01:56.950
>> Already up to 2.1,
just last week.

00:01:56.950 --> 00:01:58.110
>> Really? Zing!

00:01:58.110 --> 00:01:59.670
Okay, awesome, all right.

00:01:59.670 --> 00:02:04.610
>> So this DMA 2.0 was released
at the SQL PASS Summit.

00:02:04.610 --> 00:02:05.290
>> Yep, okay.
>> During

00:02:05.290 --> 00:02:06.730
the keynote address actually.

00:02:06.730 --> 00:02:07.480
>> Gotcha, okay.

00:02:07.480 --> 00:02:11.180
>> And then this enables
the actual migration from

00:02:11.180 --> 00:02:13.420
on premises to
the modern SQL platform.

00:02:13.420 --> 00:02:13.940
>> Okay.
>> And

00:02:13.940 --> 00:02:17.840
as well as from on premises of
the SQL Server on the Azure VM.

00:02:17.840 --> 00:02:18.843
>> Got you, okay cool.

00:02:18.843 --> 00:02:19.844
>> And today,

00:02:19.844 --> 00:02:25.460
Akash is going to give a demo how
the migration works in the DMA.

00:02:25.460 --> 00:02:26.000
>> Sweet, okay.

00:02:26.000 --> 00:02:26.620
>> Yeah.
>> Cool.

00:02:26.620 --> 00:02:29.930
>> So before we go there,
I would like to,

00:02:29.930 --> 00:02:32.560
can we go back to the vision,
I would like to

00:02:32.560 --> 00:02:37.260
talk about a recap about our
Data Migration team region.

00:02:37.260 --> 00:02:41.640
As you see, it enables customers
to move to Modern Data Platform

00:02:41.640 --> 00:02:46.780
to gain a competitive advantage
through business insights.

00:02:46.780 --> 00:02:49.445
As you know,
with the data analytics, and

00:02:49.445 --> 00:02:52.408
as well as the initial
learning advancements,

00:02:52.408 --> 00:02:56.050
that completely changes the way
that we welcome the data.

00:02:56.050 --> 00:03:01.260
You know data insights is a very
critical aspect for the business.

00:03:01.260 --> 00:03:06.830
And currently,
the business is specified

00:03:06.830 --> 00:03:11.890
to do gain insights into the data
and as well as use that data

00:03:11.890 --> 00:03:15.860
to really transform the way that
they work with their customers.

00:03:15.860 --> 00:03:18.830
They way that they show
the experiences to the customers.

00:03:18.830 --> 00:03:19.870
>> Okay.
>> So their applications and

00:03:19.870 --> 00:03:20.860
their operations.

00:03:20.860 --> 00:03:23.570
>> Right.
>> And so Microsoft data platform is

00:03:23.570 --> 00:03:26.030
in the forefront of
the data evolution, right?

00:03:26.030 --> 00:03:31.520
>> So at data migration team, our
goal is to enable these customers to

00:03:31.520 --> 00:03:33.670
migrate to the modern platform so

00:03:33.670 --> 00:03:39.750
that the customers can really focus
on gaining the competitive advantage

00:03:39.750 --> 00:03:41.000
through the business insights
>> Yeah.

00:03:41.000 --> 00:03:42.450
>> So that's kind of our goal.

00:03:42.450 --> 00:03:43.050
>> Okay.
>> So

00:03:43.050 --> 00:03:47.750
aligning with our goal, now we have
this data migration assistant,

00:03:48.860 --> 00:03:54.560
mainly reduces the effort before
you do upgrade to the SQL Servers.

00:03:54.560 --> 00:03:58.050
So it has two workflows,
one is the assessment, and

00:03:58.050 --> 00:03:59.375
the other one is the migration.

00:03:59.375 --> 00:03:59.890
>> Okay.

00:03:59.890 --> 00:04:05.370
>> So in the assessment workflow
we really automate the previously

00:04:05.370 --> 00:04:10.750
manual and
as well as very overwhelming process

00:04:10.750 --> 00:04:15.120
of checking your database's static
code for the break-in changes.

00:04:15.120 --> 00:04:16.570
>> Yeah, and we saw that last time.

00:04:16.570 --> 00:04:19.060
The booster says here, so if you're
upgrading from this version to this

00:04:19.060 --> 00:04:21.320
version you need the break-in
changes and what we recommend.

00:04:21.320 --> 00:04:22.120
>> Yes.

00:04:22.120 --> 00:04:23.300
>> So in the migration workflow,

00:04:23.300 --> 00:04:27.680
what we did is that now people
can migrate their data,

00:04:27.680 --> 00:04:31.170
their schema and their SQL server
logins and Windows logins.

00:04:31.170 --> 00:04:33.560
>> Okay.
>> To the modern SQL server versions

00:04:33.560 --> 00:04:36.430
as well as the SQL server
running on the cloud VM.

00:04:36.430 --> 00:04:37.240
>> Cloud VM, okay.

00:04:37.240 --> 00:04:38.940
>> That is something that our
cache is going to demo you.

00:04:38.940 --> 00:04:40.900
>> So it's a,
kind of a two-part process.

00:04:40.900 --> 00:04:42.450
Here's the assessment. Right?

00:04:42.450 --> 00:04:42.790
And

00:04:42.790 --> 00:04:45.930
then if we want to migrate,
go ahead and migrate, right?

00:04:45.930 --> 00:04:47.230
Schema and data.

00:04:47.230 --> 00:04:48.180
Logins and, yep.

00:04:48.180 --> 00:04:49.370
>> Data, yep.
>> Cool.

00:04:49.370 --> 00:04:50.150
Awesome.

00:04:50.150 --> 00:04:52.822
Wow, that was a lot
of work in one month.

00:04:52.822 --> 00:04:54.170
>> [LAUGH] Exactly.

00:04:54.170 --> 00:04:58.040
>> And in fact, we even shipped 2.1
just after pass within two weeks.

00:04:58.040 --> 00:05:01.130
We got a lot of asks from customers
where they were saying that hey,

00:05:01.130 --> 00:05:03.980
this tool works great when
I was linking databases.

00:05:03.980 --> 00:05:06.210
But if I have to assess
like hundreds of databases,

00:05:06.210 --> 00:05:08.570
then I need something like
an automation script.

00:05:08.570 --> 00:05:10.832
So we immediately enabled
a command for assessment, and

00:05:10.832 --> 00:05:13.740
we auto-shipped that in 2.1, and
I'm going to do more of that.

00:05:13.740 --> 00:05:14.570
>> Sweet, okay, word.

00:05:14.570 --> 00:05:16.600
Right, is it demo time?

00:05:16.600 --> 00:05:19.300
>> This is demo time,
the exciting period actually.

00:05:19.300 --> 00:05:20.370
>> Okay.
Cool.

00:05:20.370 --> 00:05:24.570
>> So yeah,
let me open the migration assistant.

00:05:24.570 --> 00:05:29.460
So this is already available in
download center the same link.

00:05:29.460 --> 00:05:32.443
Existing customers can
just use the refresh MSI.

00:05:32.443 --> 00:05:35.540
>> Yeah, so I think you need to
escape from your presentation.

00:05:35.540 --> 00:05:37.130
Yeah, there we go.

00:05:37.130 --> 00:05:39.490
And then, there we go, perfect.

00:05:39.490 --> 00:05:40.590
>> Okay, there we have it.

00:05:40.590 --> 00:05:42.520
So, now,
last time that I showed this demo,

00:05:42.520 --> 00:05:43.940
this migration was coming soon.

00:05:43.940 --> 00:05:44.950
Now it's already there.

00:05:44.950 --> 00:05:47.100
So let me start a migration project.

00:05:47.100 --> 00:05:49.390
Let's call it GetToSQL again.

00:05:49.390 --> 00:05:50.430
And create.

00:05:50.430 --> 00:05:53.778
>> Did you do just the migration or
do you have to do,

00:05:53.778 --> 00:05:56.157
like you selected the migration?

00:05:56.157 --> 00:05:58.680
Does it do the assessment
by default?

00:05:58.680 --> 00:06:01.470
>> Good question.
So basically we always recommend

00:06:01.470 --> 00:06:05.330
to do the assessment at first, to
find out all those breaking changes.

00:06:05.330 --> 00:06:08.390
And then come up with a plan
to fix those breaking changes.

00:06:08.390 --> 00:06:12.860
Once you migrate your database
to the target version,

00:06:12.860 --> 00:06:15.530
then you can be able to apply those
fixes before you open up your

00:06:15.530 --> 00:06:16.350
databases to the [INAUDIBLE].

00:06:16.350 --> 00:06:18.840
>> Right, so the migration is
not gonna also do an assessment?

00:06:18.840 --> 00:06:21.630
>> No, we do not enforce
assessment during migration.

00:06:21.630 --> 00:06:22.610
>> Okay.
>> But we advise you to do

00:06:22.610 --> 00:06:23.540
an assessment before that.

00:06:23.540 --> 00:06:25.500
>> These are two independent
workflows at this point, but

00:06:25.500 --> 00:06:27.380
we always recommend to go
with the assessment at first.

00:06:27.380 --> 00:06:28.070
>> First right.

00:06:28.070 --> 00:06:29.080
Yeah, that makes sense.

00:06:29.080 --> 00:06:34.760
>> So in this particular scenario
I'm going to demo migrating

00:06:34.760 --> 00:06:39.140
server that I have on premise to
a SQL Azure VM that I have in cloud.

00:06:39.140 --> 00:06:42.066
And when we say migration,
the current work flow,

00:06:42.066 --> 00:06:45.070
it supports entire server
tp server migration.

00:06:45.070 --> 00:06:47.130
So it will migrate
all your databases.

00:06:47.130 --> 00:06:48.320
It will migrate all your logins.

00:06:48.320 --> 00:06:51.240
It will make sure all the logins
are mapped correctly even if there

00:06:51.240 --> 00:06:53.780
are already some logins
already migrated before.

00:06:53.780 --> 00:06:56.330
And then the apps should be just
able to connect to this new

00:06:56.330 --> 00:06:57.220
database and work.

00:06:57.220 --> 00:06:58.770
That's the database over here.

00:06:58.770 --> 00:07:00.470
>> So the app just needs to
change the connection string?

00:07:00.470 --> 00:07:02.510
>> Change the connection string and
should be able to work.

00:07:02.510 --> 00:07:05.780
So let me select an on premise
instance I have over here.

00:07:05.780 --> 00:07:10.220
And it supports both Windows and
SQL authentication.

00:07:10.220 --> 00:07:12.690
We do enforce encryption, but
if you want, you can remove it.

00:07:12.690 --> 00:07:14.910
We advise do always use that.

00:07:14.910 --> 00:07:18.740
It also specifies what credential
this account with which I'm

00:07:18.740 --> 00:07:20.490
connecting is required
on the source server.

00:07:20.490 --> 00:07:22.610
So it requires a control
server permission.

00:07:22.610 --> 00:07:24.570
On this sole server instance.

00:07:24.570 --> 00:07:27.360
Now let me select my target server
which is this part of the server

00:07:27.360 --> 00:07:31.030
which is nothing but a SQL
server sitting on a VM cloud but

00:07:31.030 --> 00:07:35.190
it is connected through express
route to our [INAUDIBLE].

00:07:35.190 --> 00:07:38.889
So we want to make sure that we have
the VM connected to the on premise

00:07:38.889 --> 00:07:41.468
network through either VPN or
express now or

00:07:41.468 --> 00:07:42.940
any other technologies.

00:07:42.940 --> 00:07:43.810
>> So, it's domain you

00:07:43.810 --> 00:07:44.700
want into your [INAUDIBLE]
>> Exactly.

00:07:44.700 --> 00:07:45.240
>> Otherwise,

00:07:45.240 --> 00:07:48.900
you wouldn't be able to migrate
like logins and people like that.

00:07:48.900 --> 00:07:50.300
>> Yeah.
>> Yes, exactly and

00:07:50.300 --> 00:07:50.940
at the same time,

00:07:50.940 --> 00:07:52.910
it also tells you what your
mission is needed in your target.

00:07:52.910 --> 00:07:54.700
So, what do you mean
system server role.

00:07:54.700 --> 00:07:55.940
So, let me select Next.

00:07:55.940 --> 00:07:58.250
At this point it was scanned
through all the databases and

00:07:58.250 --> 00:08:00.300
gave me a list of all
the databases over here.

00:08:00.300 --> 00:08:04.870
Now on this screen I can specify the
way it will migrate, it will just

00:08:04.870 --> 00:08:07.720
use simple backup plan, which
already has SQL service support.

00:08:07.720 --> 00:08:10.970
So it asks me for
a shadow location where

00:08:10.970 --> 00:08:13.570
the source server has permission
to take it back up and

00:08:13.570 --> 00:08:16.334
the target has permission
to restore it from there.

00:08:16.334 --> 00:08:19.470
Me and the user running MDMA
doesn't need your permission and

00:08:19.470 --> 00:08:21.110
then ask me for this folder so

00:08:21.110 --> 00:08:23.820
I can provide a folder location
that I already have here.

00:08:23.820 --> 00:08:25.050
Which I already created.

00:08:25.050 --> 00:08:26.210
Preferably a network share.

00:08:26.210 --> 00:08:29.920
However; if needed, you can
always chose this copy database

00:08:29.920 --> 00:08:32.380
option where you can provide
two separate locations.

00:08:32.380 --> 00:08:35.220
And in this case the MDMA
will do the copy operation.

00:08:35.220 --> 00:08:38.160
But at the same time now that
a user on MDMA will need

00:08:38.160 --> 00:08:39.510
permission on this for results.

00:08:39.510 --> 00:08:41.870
>> Okay.
>> We recommend not to do that

00:08:41.870 --> 00:08:44.960
because it just introduces
another step of failure.

00:08:46.110 --> 00:08:47.790
And it just slows down.

00:08:47.790 --> 00:08:52.150
So the scenario where customers
might want to do that is if they

00:08:52.150 --> 00:08:55.090
don't have a single folder
where both source and

00:08:55.090 --> 00:08:56.900
data can have access to it.

00:08:56.900 --> 00:08:58.470
Then they can do this copy over.

00:08:58.470 --> 00:09:00.720
>> Yeah, so
it'll copy it to the one location,

00:09:00.720 --> 00:09:04.270
then MDMA will copy it to the other
location where the cloud server.

00:09:05.360 --> 00:09:09.740
What about copying to
Azure Blob Storage, for example.

00:09:09.740 --> 00:09:13.400
And I guess that depends on
the type of backup we're doing.

00:09:13.400 --> 00:09:15.370
>> Yeah, this is a full
database backup, actually.

00:09:15.370 --> 00:09:16.160
>> Okay.
>> And currently,

00:09:16.160 --> 00:09:19.865
we're not taking the backups
to the cloud URL.

00:09:19.865 --> 00:09:21.572
>> Okay.
>> So it is just kind of back ups

00:09:21.572 --> 00:09:23.835
happen to the local log and
the network.

00:09:23.835 --> 00:09:26.155
>> Initially, remember I mentioned
that the scenario supports for

00:09:26.155 --> 00:09:28.495
this express connector to.

00:09:28.495 --> 00:09:30.998
So we expect the same
network share or

00:09:30.998 --> 00:09:33.730
air drive which would be
>> Yeah.

00:09:33.730 --> 00:09:35.430
>> In the future,
we will have scenarios,

00:09:35.430 --> 00:09:37.340
where we are going to
take a backup into blob.

00:09:37.340 --> 00:09:38.735
>> So let's say you can go to SQL

00:09:38.735 --> 00:09:39.420
[INAUDIBLE]
>> SQL.

00:09:39.420 --> 00:09:40.820
>> Even when you're
not even connected.

00:09:40.820 --> 00:09:41.430
>> Okay.
>> So,

00:09:41.430 --> 00:09:44.193
that's what we will work in future,
but today it doesn't support it.

00:09:44.193 --> 00:09:45.276
>> Okay.
>> At the same time, now,

00:09:45.276 --> 00:09:48.379
I can just provide this one location
and say next, but at the same time,

00:09:48.379 --> 00:09:50.967
I can even go to database and
tweak these settings,

00:09:50.967 --> 00:09:52.393
like change the database name.

00:09:52.393 --> 00:09:55.046
If you notice with the same
location got copied over here.

00:09:55.046 --> 00:09:57.708
I can change the data file and
the log file locations.

00:09:57.708 --> 00:09:59.239
For now, I won't change anything.

00:09:59.239 --> 00:10:01.850
I'll just go with the defaults
that DM has selected for me.

00:10:01.850 --> 00:10:03.590
And let me click on Next.

00:10:03.590 --> 00:10:06.235
Now here is where it will apply all
the settings for each database,

00:10:06.235 --> 00:10:08.657
do all the validations like
[INAUDIBLE] already exist or not.

00:10:08.657 --> 00:10:10.389
Add the permissions, correct or not.

00:10:10.389 --> 00:10:11.998
We'll try to do a [INAUDIBLE]
only restore and

00:10:11.998 --> 00:10:13.434
see whether the restore
will succeed or

00:10:13.434 --> 00:10:15.040
not in the future once
the backup is done.

00:10:15.040 --> 00:10:16.710
So it will do all those checks.

00:10:16.710 --> 00:10:20.000
And now, once a check succeeds
it lists on all the logins.

00:10:20.000 --> 00:10:23.447
Now for each login, on this source
server, it tells me the login type,

00:10:23.447 --> 00:10:27.123
the default that it is, the status
on the whether it's enabled or

00:10:27.123 --> 00:10:27.706
disabled.

00:10:27.706 --> 00:10:32.674
And at the same time,
gives its own insights,

00:10:32.674 --> 00:10:36.830
whether this login is
ready to move or not.

00:10:36.830 --> 00:10:39.010
It says that all these
logins are ready to move.

00:10:39.010 --> 00:10:42.120
But if I scroll down,
there are these four logins.

00:10:42.120 --> 00:10:43.790
One SQL, four Windows logins.

00:10:43.790 --> 00:10:47.194
And it says that this login already
exists on the target server.

00:10:47.194 --> 00:10:47.970
>> Okay.

00:10:47.970 --> 00:10:50.520
>> Because for
example over here I'm the user and

00:10:50.520 --> 00:10:52.100
I'm the user on the target machine.

00:10:52.100 --> 00:10:55.050
But it's MDM,
it doesn't select them by default.

00:10:55.050 --> 00:10:57.308
However, you can choose
to migrate this.

00:10:57.308 --> 00:10:59.955
And what [INAUDIBLE] will do
is it will migrate the logins,

00:10:59.955 --> 00:11:02.051
it will keep your target
logins as they are but

00:11:02.051 --> 00:11:05.194
it will migrate the securables and
it will map the orphaned users and

00:11:05.194 --> 00:11:07.980
then it might [CROSSTALK]
>> Okay, so it won't remove

00:11:07.980 --> 00:11:12.152
the logins, but it will all
the securables and things like that.

00:11:12.152 --> 00:11:15.474
>> Yes, they will be re-mapped to
the already existing logins on

00:11:15.474 --> 00:11:16.610
the target machine.

00:11:16.610 --> 00:11:19.752
So we don't break the existing
applications on the target server,

00:11:19.752 --> 00:11:20.587
if there are any.

00:11:20.587 --> 00:11:23.344
And at the same time there
are some which the SQL and

00:11:23.344 --> 00:11:26.282
we say that hey you cannot just
migrate, these are disabled.

00:11:26.282 --> 00:11:28.913
And at this point, I just click
the Start Migration button, and

00:11:28.913 --> 00:11:30.550
here is where the magic happens.

00:11:30.550 --> 00:11:34.810
So, initially what it will do is it
will migrate all the databases in

00:11:34.810 --> 00:11:35.320
Outlook.

00:11:35.320 --> 00:11:37.790
And once all the databases
are migrated,

00:11:37.790 --> 00:11:39.020
we'll start migrating
all the logins.

00:11:39.020 --> 00:11:40.810
Because to map all the users,

00:11:40.810 --> 00:11:43.700
it needs all these databases
to be present to do it.

00:11:43.700 --> 00:11:45.830
And it does all
the databases in parallel.

00:11:45.830 --> 00:11:48.617
The current degree is eight that
we have set the config file, but

00:11:48.617 --> 00:11:51.250
the users can change it based
on the on your source and

00:11:51.250 --> 00:11:52.350
the target server.

00:11:52.350 --> 00:11:55.521
And you can have more migrations
helping you parallel.

00:11:55.521 --> 00:11:57.470
And now it will start
migrating all the logins.

00:11:57.470 --> 00:12:01.920
The beauty of this workflow is the
login migration, database migration,

00:12:01.920 --> 00:12:04.070
even though you see over
here have linked together,

00:12:04.070 --> 00:12:06.140
they are not tied to each other,
they're independent.

00:12:06.140 --> 00:12:09.310
So for example, I can create
a migration workflow and say,

00:12:09.310 --> 00:12:12.740
hey I have my own automation
scripts to migrate my databases.

00:12:12.740 --> 00:12:14.430
I just need this to migrate logins.

00:12:14.430 --> 00:12:16.290
You can migrate your
database the way you want.

00:12:16.290 --> 00:12:18.540
You can come here,
deselect all databases, and

00:12:18.540 --> 00:12:21.030
just say these are the logins I
need to migrate and move forward.

00:12:21.030 --> 00:12:24.170
Same thing applies for databases,
and you can also pick and choose.

00:12:24.170 --> 00:12:27.550
So this is usually scenario where
we notice that many people,

00:12:27.550 --> 00:12:31.200
they are done with partial migration
and now they are stuck like here.

00:12:31.200 --> 00:12:34.018
I have some logins here,
some logins there, some DBs here,

00:12:34.018 --> 00:12:34.860
some over there.

00:12:34.860 --> 00:12:36.410
What should I do at this point?

00:12:36.410 --> 00:12:39.165
Can come to and will resolve
all those logins for you.

00:12:39.165 --> 00:12:40.793
>> Okay.
>> So that's the kind of scenario

00:12:40.793 --> 00:12:41.751
where you.

00:12:41.751 --> 00:12:46.060
>> What happens if either one of the
database migrations, or something

00:12:46.060 --> 00:12:50.830
fails, it's in parallel, so it's not
an all or nothing, I'm assuming.

00:12:50.830 --> 00:12:54.340
If one migration fails for whatever
reason, the rest will migrate and

00:12:54.340 --> 00:12:56.800
then tell you,
hey this one failed because of x.

00:12:56.800 --> 00:12:57.330
>> Yes.

00:12:57.330 --> 00:12:59.230
>> They can continue with
data storage migration.

00:12:59.230 --> 00:12:59.730
>> Okay.
>> Yes.

00:12:59.730 --> 00:13:01.537
It's the best effort this point, so

00:13:01.537 --> 00:13:04.043
if one failed,
we still continue because each DB,

00:13:04.043 --> 00:13:05.850
each login is independent.
>> Okay.

00:13:05.850 --> 00:13:06.630
>> And, you will,

00:13:06.630 --> 00:13:07.850
as you show over here.

00:13:07.850 --> 00:13:10.561
I don't have the export report yet,
because the migration is not

00:13:10.561 --> 00:13:13.121
complete, but once everything
is done, I can export it, and

00:13:13.121 --> 00:13:15.288
it will have all the detailed
report of what failed,

00:13:15.288 --> 00:13:17.423
what succeeded to show
something in the UI itself.

00:13:17.423 --> 00:13:18.110
>> Okay, cool.

00:13:18.110 --> 00:13:21.590
>> So, the good thing here is that
when it comes to the data migration

00:13:21.590 --> 00:13:24.220
site, you're just not
migrating your databases.

00:13:24.220 --> 00:13:27.300
It is about the other

00:13:27.300 --> 00:13:30.060
server objects which
the applications are dependent on.

00:13:30.060 --> 00:13:32.910
For, example, in this case,
the logins, right?

00:13:32.910 --> 00:13:35.430
And then in the future releases we
are going to add more server objects

00:13:35.430 --> 00:13:38.340
to it, SQL agent jobs,
SSAS packages.

00:13:38.340 --> 00:13:40.903
A lot of these applications are
dependent on some of these objects

00:13:40.903 --> 00:13:42.684
which are sitting outside
of your database.

00:13:42.684 --> 00:13:44.630
>> Yep.
>> We want to make sure that we

00:13:44.630 --> 00:13:48.830
provide a comprehensive solution,
a one stop solution where

00:13:48.830 --> 00:13:51.620
it's going to take care of
all your migration needs.

00:13:51.620 --> 00:13:52.310
>> Okay.

00:13:52.310 --> 00:13:53.200
>> Yep
>> Very nice.

00:13:53.200 --> 00:13:54.880
>> And
while the migration is happening

00:13:54.880 --> 00:13:56.180
I've got some exciting news for you.

00:13:56.180 --> 00:14:01.040
When it comes to, it's been like 3
months we released our, you know,

00:14:01.040 --> 00:14:02.730
DMA 1.0 version
>> Yep.

00:14:02.730 --> 00:14:06.643
>> So far we got around 60k
cores that are assisted,

00:14:06.643 --> 00:14:09.748
60,000 cores that are assisted.

00:14:09.748 --> 00:14:14.630
>> And around 70,000 databases
that run our system so

00:14:14.630 --> 00:14:16.660
far with our DM assessment.

00:14:16.660 --> 00:14:17.530
>> Really?

00:14:17.530 --> 00:14:20.530
>> It's been only three weeks that
we released the migration workflow.

00:14:20.530 --> 00:14:24.867
We already see around 700
cores that are migrated to

00:14:24.867 --> 00:14:27.220
the latest platforms.

00:14:27.220 --> 00:14:29.780
And that comes down to
around 400 databases.

00:14:29.780 --> 00:14:32.521
>> So people are actually
downloading and using this tool to

00:14:32.521 --> 00:14:34.846
do an assessment and to migrate and-
>> Yeah, and

00:14:34.846 --> 00:14:38.249
then to look at the total number
of downloads is 7,000 so far.

00:14:38.249 --> 00:14:39.029
>> 7,000 downloads?

00:14:39.029 --> 00:14:40.070
>> Yeah, since August.

00:14:40.070 --> 00:14:40.954
>> Total, or?

00:14:40.954 --> 00:14:41.828
>> Total since August.

00:14:41.828 --> 00:14:45.600
>> Okay, since August,
okay, very nice.

00:14:45.600 --> 00:14:48.486
>> So this migration may take some
time, so what I will do is while

00:14:48.486 --> 00:14:51.596
this continue, because at this
point it is mapping all the users,

00:14:51.596 --> 00:14:54.690
assigning roles and
memberships [INAUDIBLE] step two.

00:14:54.690 --> 00:14:58.310
So let me jump to the command
line interface and

00:14:58.310 --> 00:14:59.990
we can come back here and
look at the result.

00:14:59.990 --> 00:15:04.840
If we just show mostly everything
[INAUDIBLE] we can come here again.

00:15:04.840 --> 00:15:09.317
So with 2.1 version of DMA
if you go to the folder

00:15:09.317 --> 00:15:14.113
where DMA gets the install,
which is Program Files >

00:15:14.113 --> 00:15:19.480
Data Migration Assistant,
you will find DmaCmd, dma*.

00:15:19.480 --> 00:15:22.844
So you will find DmaCmd.exe
as well as a Dma.exe,

00:15:22.844 --> 00:15:25.620
which is the UI version, and
this is the command line version.

00:15:25.620 --> 00:15:30.170
As with any command line tool,
you can just type /?, or help and

00:15:30.170 --> 00:15:34.830
it will give you details of how
to use this particular utility.

00:15:34.830 --> 00:15:37.460
So if you look at the flags over
here, it just asks for the same

00:15:37.460 --> 00:15:40.570
thing that you provided in the UI,
just an assessment name, a list of

00:15:40.570 --> 00:15:43.730
all databases where you should
treat each database independently.

00:15:43.730 --> 00:15:47.430
So you can provide connection
strings to database you need because

00:15:47.430 --> 00:15:51.240
this is an automation repair,
you can run it in unattended mode.

00:15:51.240 --> 00:15:53.900
The target platform,
evaluate compatibility issues or

00:15:53.900 --> 00:15:57.690
not given their recommendations or
you can choose both if you want to.

00:15:57.690 --> 00:16:00.148
And this is a new thing
that we have in cmdlet,

00:16:00.148 --> 00:16:02.564
you can export your
results in JSON format.

00:16:02.564 --> 00:16:05.024
And I'll show you why this is very
much important actually when it

00:16:05.024 --> 00:16:06.210
comes to automation script.

00:16:06.210 --> 00:16:08.340
So in this particular
case of course and

00:16:08.340 --> 00:16:11.250
then it provides you more examples
like how to run the tool for

00:16:11.250 --> 00:16:14.310
a single database, multiple
databases, SQL authentication, and

00:16:14.310 --> 00:16:16.090
gives you some examples for
a quick start.

00:16:16.090 --> 00:16:19.650
What I have done is, internally,
while working with different teams

00:16:19.650 --> 00:16:23.880
inside Microsoft, we actually
created a PowerShell script,

00:16:23.880 --> 00:16:27.130
which wraps around this
particular utility.

00:16:27.130 --> 00:16:28.520
So right now,

00:16:28.520 --> 00:16:31.990
I've just hard coded what I need
as my input arguments over here.

00:16:31.990 --> 00:16:35.240
And in this particular demo, I'm
going to assess these nine databases

00:16:35.240 --> 00:16:38.630
that I have to evaluate for
compatibility issues, and

00:16:38.630 --> 00:16:41.270
output the results in a JSON format.

00:16:41.270 --> 00:16:45.367
Once the results are available,
I have an import JSON script over

00:16:45.367 --> 00:16:49.333
here, which is going to import
this into a SQL table in a SQL DB.

00:16:49.333 --> 00:16:49.980
>> Interesting, okay.
>> And then,

00:16:49.980 --> 00:16:52.850
you can ask all sorts of questions
that you need on that table and

00:16:52.850 --> 00:16:54.490
get all kinds of insights from them.

00:16:54.490 --> 00:16:57.622
>> So basically it gives you
a consolidated view of the and SQL.

00:16:57.622 --> 00:17:00.580
>> Yep, very nice, okay.

00:17:00.580 --> 00:17:04.430
>> So let me just start
running the script for now.

00:17:04.430 --> 00:17:09.866
>> Now I notice that those,
the list of connection strings,

00:17:09.866 --> 00:17:13.040
they're just space separated?

00:17:13.040 --> 00:17:15.470
>> Yes, it is space separated, yes.

00:17:15.470 --> 00:17:19.260
Because beginning internally doesn't
create your product assessment.

00:17:19.260 --> 00:17:21.080
It treats database independently.

00:17:21.080 --> 00:17:23.480
So, you can have two database
from two different servers.

00:17:23.480 --> 00:17:25.790
So it asks you for
connection stream for each of them.

00:17:25.790 --> 00:17:29.870
And then once it assesses all
[INAUDIBLE] it's going to import

00:17:29.870 --> 00:17:34.630
the results into a table in SQL
Server, and let me show the results.

00:17:34.630 --> 00:17:37.580
So usually where we have seen
where this is useful is think of

00:17:37.580 --> 00:17:40.990
an enterprise scenario where I have
hundreds and thousands of databases.

00:17:40.990 --> 00:17:43.050
Any one instance is
equal to instances.

00:17:43.050 --> 00:17:46.010
It becomes really difficult when
it comes to migration projects.

00:17:46.010 --> 00:17:49.110
The entire planning part to decide
which database to go with first,

00:17:49.110 --> 00:17:51.780
which are ready to migrate,
which are not ready to migrate,

00:17:51.780 --> 00:17:52.780
is a huge exercise.

00:17:52.780 --> 00:17:54.260
>> Yeah, you're managing hundreds or

00:17:54.260 --> 00:17:57.400
thousands or
tens of thousands of databases.

00:17:57.400 --> 00:17:58.480
How do you keep track over it?

00:17:58.480 --> 00:18:01.410
>> And the tool doesn't really
solve this massive scale scenario.

00:18:01.410 --> 00:18:03.730
So now you can run it using
such a PowerShell script.

00:18:03.730 --> 00:18:05.830
You can let it run for
nights and days.

00:18:05.830 --> 00:18:08.870
And once all the report is there in
the SQL Server, then you can build,

00:18:08.870 --> 00:18:11.530
let's say, a Power BI report on top
of it, and write your queries and

00:18:11.530 --> 00:18:12.330
get your answers from it.

00:18:12.330 --> 00:18:14.040
>> Okay, so-
>> We are writing a detailed

00:18:14.040 --> 00:18:18.100
blog on some of these user cases
how customers can really use this

00:18:18.100 --> 00:18:21.770
utility and then come up with
some kind of a consolidated view.

00:18:21.770 --> 00:18:25.120
As well as a lot of the customers
are asking what are my low-hanging

00:18:25.120 --> 00:18:25.630
fruits?

00:18:25.630 --> 00:18:28.380
Which databases that I can
migrate with less effort?

00:18:28.380 --> 00:18:31.020
So those kind of views
that we can generate and

00:18:31.020 --> 00:18:35.270
I go writing there on active blog or
their migration assistant blog.

00:18:35.270 --> 00:18:37.420
>> Okay, good scenario,
type of scenario, okay, great.

00:18:37.420 --> 00:18:39.682
>> I can go to
blogs.microsoft.com/datamigration

00:18:39.682 --> 00:18:42.620
and all our blogs are [INAUDIBLE]
with release notes and everything.

00:18:42.620 --> 00:18:47.140
So now, since the script is already
done, let me actually go to a,

00:18:47.140 --> 00:18:51.090
this is the particular table
that create a report data and

00:18:51.090 --> 00:18:54.600
a simple query like for example I
need to know how to do as mine,

00:18:54.600 --> 00:18:56.330
not even the ones that I ran before.

00:18:56.330 --> 00:18:58.798
I just need to know
the list of databases and

00:18:58.798 --> 00:19:00.864
order them in the number of issues.

00:19:00.864 --> 00:19:02.790
For example,
these are number of issues or

00:19:02.790 --> 00:19:05.680
just order them by the number of
impacted objects because it will

00:19:05.680 --> 00:19:07.190
help me in planning for example.

00:19:07.190 --> 00:19:10.760
>> Very simple query, so let me
run both the queries for example.

00:19:10.760 --> 00:19:13.380
>> Let me connect it to this server.

00:19:15.070 --> 00:19:17.180
>> You need to go to
the database there.

00:19:17.180 --> 00:19:21.867
>> Yeah.
[INAUDIBLE] Okay, so for example,

00:19:21.867 --> 00:19:26.408
it says that, let me expand this.

00:19:39.730 --> 00:19:44.040
>> So basically, it gave all
the list of the SQL Servers,

00:19:44.040 --> 00:19:46.101
a list of the databases and

00:19:46.101 --> 00:19:50.695
then list of those issues that
are raised it through DMA and

00:19:50.695 --> 00:19:55.517
then also use [CROSSTALK] change
>> Whether it is a blatant change,

00:19:55.517 --> 00:19:58.511
whether it is another
deprecated feature, or is.

00:19:58.511 --> 00:20:03.530
>> So, your script here actually
did an assessment at the same time?

00:20:03.530 --> 00:20:04.640
>> Yes.
>> So you sort of forced

00:20:04.640 --> 00:20:05.450
an assessment.

00:20:05.450 --> 00:20:07.960
>> Hm.
>> And then did the migration.

00:20:07.960 --> 00:20:08.760
Or did you do a migration first?

00:20:08.760 --> 00:20:09.570
>> No.
I didn't do a migration.

00:20:09.570 --> 00:20:10.620
It just.did an assessment.

00:20:10.620 --> 00:20:11.404
>> You just did an assessment?

00:20:11.404 --> 00:20:12.195
>> It actually populated.

00:20:12.195 --> 00:20:14.750
The reason is, what happened is
I had this thing which I didn't

00:20:14.750 --> 00:20:15.348
come in doubt.

00:20:15.348 --> 00:20:19.000
And it just cleared all the data for
me.

00:20:19.000 --> 00:20:21.109
So let me just quickly
run the assessment and

00:20:21.109 --> 00:20:23.848
then let me run those queries and
show you some insights.

00:20:23.848 --> 00:20:28.406
>> So can you also use this then to
say to do migration as well then?

00:20:28.406 --> 00:20:31.075
>> No, today no, but we will do.

00:20:31.075 --> 00:20:35.100
>> Okay, so the command line only
does migration, or an assessment.

00:20:35.100 --> 00:20:37.791
>> So it does compatibility
assessment where it tells

00:20:37.791 --> 00:20:39.291
you the breaking changes and

00:20:39.291 --> 00:20:42.678
also you see your feature
recommendations assessment as well.

00:20:42.678 --> 00:20:46.395
So you would know what features that
you can really leverage when going

00:20:46.395 --> 00:20:49.242
to the target you're
going to benefit from.

00:20:49.242 --> 00:20:52.662
>> Okay, so the same query is, I.

00:20:52.662 --> 00:20:53.825
Look at this, for example.

00:20:53.825 --> 00:20:54.445
It says that,

00:20:54.445 --> 00:20:57.165
hey raise error this particular DB-
>> Yep.

00:20:57.165 --> 00:20:58.245
>> To move from 90 to 10.

00:20:58.245 --> 00:21:00.155
There's only one issue.

00:21:00.155 --> 00:21:01.805
>> And even when I can move to
130 compatibility level just

00:21:01.805 --> 00:21:03.205
one issue fix it and you're done.

00:21:03.205 --> 00:21:05.007
>> Yeah.
>> Whereas the costliest database is

00:21:05.007 --> 00:21:08.230
to get to SQL one that I have,
which has around 16 issues.

00:21:08.230 --> 00:21:10.950
However, if I try to order them
based on the number of impacted

00:21:10.950 --> 00:21:13.770
objects, which is the actual
amount of work that I need to do,

00:21:13.770 --> 00:21:15.010
it's the other way around.

00:21:15.010 --> 00:21:17.607
Not the other way around, but
it says this particular empty has

00:21:17.607 --> 00:21:19.426
the most number of
objects needed to fix it.

00:21:19.426 --> 00:21:22.067
Whereas get to SQL even
the number of issues were more.

00:21:22.067 --> 00:21:23.555
The number of objects are less.

00:21:23.555 --> 00:21:26.245
Now this is just a very
simple query that I run, but

00:21:26.245 --> 00:21:29.965
imagine with all of this data that
you get in the structured format.

00:21:29.965 --> 00:21:31.627
It can build all sorts of reports,

00:21:31.627 --> 00:21:34.790
like we have seen internal teams
giving a score to this database.

00:21:34.790 --> 00:21:36.180
>> Yeah.
>> Ranking them in an order.

00:21:36.180 --> 00:21:37.560
>> Right.
>> Giving a score,

00:21:37.560 --> 00:21:38.960
something they call,
like rating the score.

00:21:38.960 --> 00:21:40.350
Like, how ready is this to more.

00:21:40.350 --> 00:21:41.560
>> Yup.
>> For the latest platform.

00:21:41.560 --> 00:21:43.960
And then build on that,
you do get an entire plan.

00:21:43.960 --> 00:21:45.320
>> Well, that's true,
too, cause you know?

00:21:45.320 --> 00:21:47.940
I could look at this, or maybe
take it out and throw a Power BI.

00:21:47.940 --> 00:21:49.010
>> Yeah.
>> In front of it, right?

00:21:49.010 --> 00:21:50.290
>> Exactly.
>> On the dashboard and go,

00:21:50.290 --> 00:21:52.290
here's a pretty way to
look at this right.

00:21:52.290 --> 00:21:55.818
But what's nice here is that
here's a great way, very quickly,

00:21:55.818 --> 00:21:57.047
to get an assessment.

00:21:57.047 --> 00:21:58.620
So I get the same
information through a tool.

00:21:58.620 --> 00:22:00.070
>> Right.
>> Or an assessment tool.

00:22:00.070 --> 00:22:02.917
>> Yes.
>> If I'm a hardcore PowerShell guy

00:22:02.917 --> 00:22:05.820
or command, I can do this as well.

00:22:05.820 --> 00:22:06.960
>> It really helps customers to

00:22:06.960 --> 00:22:09.660
prioritize their migrations,
basically.

00:22:09.660 --> 00:22:12.870
>> One of the biggest issues but
I love the fact that I have a way to

00:22:12.870 --> 00:22:16.880
get this and visualize the results,
that's very cool.

00:22:16.880 --> 00:22:19.900
>> More importantly in the end
where it leaves one dot two,

00:22:19.900 --> 00:22:21.490
you get a lot of
feedback from the tools.

00:22:21.490 --> 00:22:24.230
So, we have a section and a form
where people can send feedback.

00:22:24.230 --> 00:22:26.490
And we got a lot of ours from
customers where they were asking for

00:22:26.490 --> 00:22:29.590
this, so we said why not,
let's provide this.

00:22:29.590 --> 00:22:32.130
>> Cool,
let's go back to the assessment,

00:22:32.130 --> 00:22:32.980
see if the assessment's done.

00:22:32.980 --> 00:22:33.660
Migrations.

00:22:33.660 --> 00:22:36.490
>> Yeah, seems like the migrations
are all done at this point.

00:22:36.490 --> 00:22:38.810
All the logins migrated
successfully, and

00:22:38.810 --> 00:22:41.140
of course I can export this to.

00:22:41.140 --> 00:22:44.510
>> So at this point,
we give, as a CSV report.

00:22:44.510 --> 00:22:48.090
To really store the status
of the anti-migration.

00:22:48.090 --> 00:22:51.330
If you want to go back and
review it latter point of time.

00:22:51.330 --> 00:22:55.068
You can always use this CS report
to really find out what has

00:22:55.068 --> 00:22:58.360
been migrated and
what has been failed, alright?

00:22:58.360 --> 00:23:00.310
>> Okay, sweet.

00:23:00.310 --> 00:23:03.700
>> Let me open
the migrationresults.csv.

00:23:05.050 --> 00:23:07.220
It will have more detail
inside sentences.

00:23:07.220 --> 00:23:10.420
>> Right.
>> Usual way I use this report is I

00:23:10.420 --> 00:23:12.840
just go to the header.

00:23:12.840 --> 00:23:15.120
Even if it's a CSV I
just open it in Excel.

00:23:15.120 --> 00:23:19.670
You can put a filter on it, save it
as XLXX and then you have all this.

00:23:19.670 --> 00:23:21.310
>> You can use
the power of the Excel.

00:23:23.000 --> 00:23:24.750
>> So basically you almost get
the same thing you got in the SQL

00:23:24.750 --> 00:23:25.332
results.

00:23:25.332 --> 00:23:26.993
>> Exactly.

00:23:26.993 --> 00:23:28.110
>> Yes. Yes.

00:23:28.110 --> 00:23:28.990
>> This is very powerful.

00:23:28.990 --> 00:23:29.890
I love this.

00:23:29.890 --> 00:23:33.335
So not only can we do the assessment
in different ways in different ways

00:23:33.335 --> 00:23:36.270
now to visualize that and make it
like you said, make it very easy to,

00:23:37.950 --> 00:23:41.290
yeah, prioritize which
one do I wanna migrate.

00:23:41.290 --> 00:23:44.010
But now I can also do
the migration as well.

00:23:44.010 --> 00:23:45.670
>> That's correct.
>> Very cool.

00:23:45.670 --> 00:23:46.880
>> Gentlemen this is fantastic,

00:23:46.880 --> 00:23:48.490
I really appreciate your
time thanks for coming.

00:23:48.490 --> 00:23:50.932
We look for version three
in like next week [LAUGH].

00:23:50.932 --> 00:23:53.262
>> [LAUGH]
>> I'm kidding, but great work.

00:23:53.262 --> 00:23:55.000
We looked forward to
having you back, and

00:23:55.000 --> 00:23:57.045
seeing what other awesome
stuff you're doing.

00:23:57.045 --> 00:23:58.013
>> Sure.
>> Thanks for coming.

00:23:58.013 --> 00:23:59.560
>> Thank you.
>> Thanks so much, see you again.

00:23:59.560 --> 00:24:03.355
>> If they have any feedback,
you said that like 7000 downloads,

00:24:03.355 --> 00:24:04.390
right already.

00:24:04.390 --> 00:24:05.492
>> Yes.

00:24:05.492 --> 00:24:08.470
>> So, if there's any feedback
what's the best way for them to,

00:24:08.470 --> 00:24:11.390
>> So we have have this LES the DL.

00:24:11.390 --> 00:24:14.180
The email address,
dmafeedback.microsoft.com.

00:24:14.180 --> 00:24:16.140
They can send an email to it.

00:24:16.140 --> 00:24:18.750
But also in the tool there is
a feature called feedback.

00:24:18.750 --> 00:24:20.383
They can submit the feedback
from there as well.

00:24:20.383 --> 00:24:21.467
>> Awesome, good, good.

00:24:21.467 --> 00:24:23.852
All right, so
everybody start downloading and

00:24:23.852 --> 00:24:26.720
start migrating your databases,
that's what we want.

00:24:26.720 --> 00:24:28.380
>> All right.
>> Hey, thanks for coming everybody.

00:24:28.380 --> 00:24:30.830
And everybody thanks for watching,
and we'll see you next time.

00:24:30.830 --> 00:24:31.380
>> Thank you.
>> Thank you.

00:24:31.380 --> 00:24:31.880
Bye.

00:24:31.880 --> 00:24:41.880
[MUSIC]

