├── LICENSES
├── CODE_OF_CONDUCT.md
├── LICENSE
├── LICENSE-CODE
├── README.md
└── SECURITY.md
├── README.md
├── SECURITY.md
├── graphics
└── microsoftlogo.png
├── slides
├── SQL Server 2019 Modern Data Platform.pptx
├── SQL Server Ground to Cloud.pptx
├── SQL Server on the Microsoft Azure Platform.pptx
└── g2c.pdf
└── sqlgroundtocloud
├── 00-prerequisites.md
├── 01-IntroductionAndWorkshopMethodology.md
├── 02-ModernizingYourDataEstateWithSQLServer2019.md
├── 03-WorkingWithBigDataAndDataScienceBigDataClustersForSQLServer2019.md
├── 04-SQLServerOnTheMicrosoftAzurePlatform.md
├── 05-MigratingToAzureSQL.md
└── 06-WhatToUseWhen.md
/LICENSES/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Microsoft Open Source Code of Conduct
2 |
3 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
4 |
5 | Resources:
6 |
7 | - [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/)
8 | - [Microsoft Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/)
9 | - Contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with questions or concerns
10 |
--------------------------------------------------------------------------------
/LICENSES/LICENSE:
--------------------------------------------------------------------------------
1 | Attribution 4.0 International
2 |
3 | =======================================================================
4 |
5 | Creative Commons Corporation ("Creative Commons") is not a law firm and
6 | does not provide legal services or legal advice. Distribution of
7 | Creative Commons public licenses does not create a lawyer-client or
8 | other relationship. Creative Commons makes its licenses and related
9 | information available on an "as-is" basis. Creative Commons gives no
10 | warranties regarding its licenses, any material licensed under their
11 | terms and conditions, or any related information. Creative Commons
12 | disclaims all liability for damages resulting from their use to the
13 | fullest extent possible.
14 |
15 | Using Creative Commons Public Licenses
16 |
17 | Creative Commons public licenses provide a standard set of terms and
18 | conditions that creators and other rights holders may use to share
19 | original works of authorship and other material subject to copyright
20 | and certain other rights specified in the public license below. The
21 | following considerations are for informational purposes only, are not
22 | exhaustive, and do not form part of our licenses.
23 |
24 | Considerations for licensors: Our public licenses are
25 | intended for use by those authorized to give the public
26 | permission to use material in ways otherwise restricted by
27 | copyright and certain other rights. Our licenses are
28 | irrevocable. Licensors should read and understand the terms
29 | and conditions of the license they choose before applying it.
30 | Licensors should also secure all rights necessary before
31 | applying our licenses so that the public can reuse the
32 | material as expected. Licensors should clearly mark any
33 | material not subject to the license. This includes other CC-
34 | licensed material, or material used under an exception or
35 | limitation to copyright. More considerations for licensors:
36 | wiki.creativecommons.org/Considerations_for_licensors
37 |
38 | Considerations for the public: By using one of our public
39 | licenses, a licensor grants the public permission to use the
40 | licensed material under specified terms and conditions. If
41 | the licensor's permission is not necessary for any reason--for
42 | example, because of any applicable exception or limitation to
43 | copyright--then that use is not regulated by the license. Our
44 | licenses grant only permissions under copyright and certain
45 | other rights that a licensor has authority to grant. Use of
46 | the licensed material may still be restricted for other
47 | reasons, including because others have copyright or other
48 | rights in the material. A licensor may make special requests,
49 | such as asking that all changes be marked or described.
50 | Although not required by our licenses, you are encouraged to
51 | respect those requests where reasonable. More_considerations
52 | for the public:
53 | wiki.creativecommons.org/Considerations_for_licensees
54 |
55 | =======================================================================
56 |
57 | Creative Commons Attribution 4.0 International Public License
58 |
59 | By exercising the Licensed Rights (defined below), You accept and agree
60 | to be bound by the terms and conditions of this Creative Commons
61 | Attribution 4.0 International Public License ("Public License"). To the
62 | extent this Public License may be interpreted as a contract, You are
63 | granted the Licensed Rights in consideration of Your acceptance of
64 | these terms and conditions, and the Licensor grants You such rights in
65 | consideration of benefits the Licensor receives from making the
66 | Licensed Material available under these terms and conditions.
67 |
68 |
69 | Section 1 -- Definitions.
70 |
71 | a. Adapted Material means material subject to Copyright and Similar
72 | Rights that is derived from or based upon the Licensed Material
73 | and in which the Licensed Material is translated, altered,
74 | arranged, transformed, or otherwise modified in a manner requiring
75 | permission under the Copyright and Similar Rights held by the
76 | Licensor. For purposes of this Public License, where the Licensed
77 | Material is a musical work, performance, or sound recording,
78 | Adapted Material is always produced where the Licensed Material is
79 | synched in timed relation with a moving image.
80 |
81 | b. Adapter's License means the license You apply to Your Copyright
82 | and Similar Rights in Your contributions to Adapted Material in
83 | accordance with the terms and conditions of this Public License.
84 |
85 | c. Copyright and Similar Rights means copyright and/or similar rights
86 | closely related to copyright including, without limitation,
87 | performance, broadcast, sound recording, and Sui Generis Database
88 | Rights, without regard to how the rights are labeled or
89 | categorized. For purposes of this Public License, the rights
90 | specified in Section 2(b)(1)-(2) are not Copyright and Similar
91 | Rights.
92 |
93 | d. Effective Technological Measures means those measures that, in the
94 | absence of proper authority, may not be circumvented under laws
95 | fulfilling obligations under Article 11 of the WIPO Copyright
96 | Treaty adopted on December 20, 1996, and/or similar international
97 | agreements.
98 |
99 | e. Exceptions and Limitations means fair use, fair dealing, and/or
100 | any other exception or limitation to Copyright and Similar Rights
101 | that applies to Your use of the Licensed Material.
102 |
103 | f. Licensed Material means the artistic or literary work, database,
104 | or other material to which the Licensor applied this Public
105 | License.
106 |
107 | g. Licensed Rights means the rights granted to You subject to the
108 | terms and conditions of this Public License, which are limited to
109 | all Copyright and Similar Rights that apply to Your use of the
110 | Licensed Material and that the Licensor has authority to license.
111 |
112 | h. Licensor means the individual(s) or entity(ies) granting rights
113 | under this Public License.
114 |
115 | i. Share means to provide material to the public by any means or
116 | process that requires permission under the Licensed Rights, such
117 | as reproduction, public display, public performance, distribution,
118 | dissemination, communication, or importation, and to make material
119 | available to the public including in ways that members of the
120 | public may access the material from a place and at a time
121 | individually chosen by them.
122 |
123 | j. Sui Generis Database Rights means rights other than copyright
124 | resulting from Directive 96/9/EC of the European Parliament and of
125 | the Council of 11 March 1996 on the legal protection of databases,
126 | as amended and/or succeeded, as well as other essentially
127 | equivalent rights anywhere in the world.
128 |
129 | k. You means the individual or entity exercising the Licensed Rights
130 | under this Public License. Your has a corresponding meaning.
131 |
132 |
133 | Section 2 -- Scope.
134 |
135 | a. License grant.
136 |
137 | 1. Subject to the terms and conditions of this Public License,
138 | the Licensor hereby grants You a worldwide, royalty-free,
139 | non-sublicensable, non-exclusive, irrevocable license to
140 | exercise the Licensed Rights in the Licensed Material to:
141 |
142 | a. reproduce and Share the Licensed Material, in whole or
143 | in part; and
144 |
145 | b. produce, reproduce, and Share Adapted Material.
146 |
147 | 2. Exceptions and Limitations. For the avoidance of doubt, where
148 | Exceptions and Limitations apply to Your use, this Public
149 | License does not apply, and You do not need to comply with
150 | its terms and conditions.
151 |
152 | 3. Term. The term of this Public License is specified in Section
153 | 6(a).
154 |
155 | 4. Media and formats; technical modifications allowed. The
156 | Licensor authorizes You to exercise the Licensed Rights in
157 | all media and formats whether now known or hereafter created,
158 | and to make technical modifications necessary to do so. The
159 | Licensor waives and/or agrees not to assert any right or
160 | authority to forbid You from making technical modifications
161 | necessary to exercise the Licensed Rights, including
162 | technical modifications necessary to circumvent Effective
163 | Technological Measures. For purposes of this Public License,
164 | simply making modifications authorized by this Section 2(a)
165 | (4) never produces Adapted Material.
166 |
167 | 5. Downstream recipients.
168 |
169 | a. Offer from the Licensor -- Licensed Material. Every
170 | recipient of the Licensed Material automatically
171 | receives an offer from the Licensor to exercise the
172 | Licensed Rights under the terms and conditions of this
173 | Public License.
174 |
175 | b. No downstream restrictions. You may not offer or impose
176 | any additional or different terms or conditions on, or
177 | apply any Effective Technological Measures to, the
178 | Licensed Material if doing so restricts exercise of the
179 | Licensed Rights by any recipient of the Licensed
180 | Material.
181 |
182 | 6. No endorsement. Nothing in this Public License constitutes or
183 | may be construed as permission to assert or imply that You
184 | are, or that Your use of the Licensed Material is, connected
185 | with, or sponsored, endorsed, or granted official status by,
186 | the Licensor or others designated to receive attribution as
187 | provided in Section 3(a)(1)(A)(i).
188 |
189 | b. Other rights.
190 |
191 | 1. Moral rights, such as the right of integrity, are not
192 | licensed under this Public License, nor are publicity,
193 | privacy, and/or other similar personality rights; however, to
194 | the extent possible, the Licensor waives and/or agrees not to
195 | assert any such rights held by the Licensor to the limited
196 | extent necessary to allow You to exercise the Licensed
197 | Rights, but not otherwise.
198 |
199 | 2. Patent and trademark rights are not licensed under this
200 | Public License.
201 |
202 | 3. To the extent possible, the Licensor waives any right to
203 | collect royalties from You for the exercise of the Licensed
204 | Rights, whether directly or through a collecting society
205 | under any voluntary or waivable statutory or compulsory
206 | licensing scheme. In all other cases the Licensor expressly
207 | reserves any right to collect such royalties.
208 |
209 |
210 | Section 3 -- License Conditions.
211 |
212 | Your exercise of the Licensed Rights is expressly made subject to the
213 | following conditions.
214 |
215 | a. Attribution.
216 |
217 | 1. If You Share the Licensed Material (including in modified
218 | form), You must:
219 |
220 | a. retain the following if it is supplied by the Licensor
221 | with the Licensed Material:
222 |
223 | i. identification of the creator(s) of the Licensed
224 | Material and any others designated to receive
225 | attribution, in any reasonable manner requested by
226 | the Licensor (including by pseudonym if
227 | designated);
228 |
229 | ii. a copyright notice;
230 |
231 | iii. a notice that refers to this Public License;
232 |
233 | iv. a notice that refers to the disclaimer of
234 | warranties;
235 |
236 | v. a URI or hyperlink to the Licensed Material to the
237 | extent reasonably practicable;
238 |
239 | b. indicate if You modified the Licensed Material and
240 | retain an indication of any previous modifications; and
241 |
242 | c. indicate the Licensed Material is licensed under this
243 | Public License, and include the text of, or the URI or
244 | hyperlink to, this Public License.
245 |
246 | 2. You may satisfy the conditions in Section 3(a)(1) in any
247 | reasonable manner based on the medium, means, and context in
248 | which You Share the Licensed Material. For example, it may be
249 | reasonable to satisfy the conditions by providing a URI or
250 | hyperlink to a resource that includes the required
251 | information.
252 |
253 | 3. If requested by the Licensor, You must remove any of the
254 | information required by Section 3(a)(1)(A) to the extent
255 | reasonably practicable.
256 |
257 | 4. If You Share Adapted Material You produce, the Adapter's
258 | License You apply must not prevent recipients of the Adapted
259 | Material from complying with this Public License.
260 |
261 |
262 | Section 4 -- Sui Generis Database Rights.
263 |
264 | Where the Licensed Rights include Sui Generis Database Rights that
265 | apply to Your use of the Licensed Material:
266 |
267 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right
268 | to extract, reuse, reproduce, and Share all or a substantial
269 | portion of the contents of the database;
270 |
271 | b. if You include all or a substantial portion of the database
272 | contents in a database in which You have Sui Generis Database
273 | Rights, then the database in which You have Sui Generis Database
274 | Rights (but not its individual contents) is Adapted Material; and
275 |
276 | c. You must comply with the conditions in Section 3(a) if You Share
277 | all or a substantial portion of the contents of the database.
278 |
279 | For the avoidance of doubt, this Section 4 supplements and does not
280 | replace Your obligations under this Public License where the Licensed
281 | Rights include other Copyright and Similar Rights.
282 |
283 |
284 | Section 5 -- Disclaimer of Warranties and Limitation of Liability.
285 |
286 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
287 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
288 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
289 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
290 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
291 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
292 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
293 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
294 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
295 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
296 |
297 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
298 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
299 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
300 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
301 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
302 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
303 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
304 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
305 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
306 |
307 | c. The disclaimer of warranties and limitation of liability provided
308 | above shall be interpreted in a manner that, to the extent
309 | possible, most closely approximates an absolute disclaimer and
310 | waiver of all liability.
311 |
312 |
313 | Section 6 -- Term and Termination.
314 |
315 | a. This Public License applies for the term of the Copyright and
316 | Similar Rights licensed here. However, if You fail to comply with
317 | this Public License, then Your rights under this Public License
318 | terminate automatically.
319 |
320 | b. Where Your right to use the Licensed Material has terminated under
321 | Section 6(a), it reinstates:
322 |
323 | 1. automatically as of the date the violation is cured, provided
324 | it is cured within 30 days of Your discovery of the
325 | violation; or
326 |
327 | 2. upon express reinstatement by the Licensor.
328 |
329 | For the avoidance of doubt, this Section 6(b) does not affect any
330 | right the Licensor may have to seek remedies for Your violations
331 | of this Public License.
332 |
333 | c. For the avoidance of doubt, the Licensor may also offer the
334 | Licensed Material under separate terms or conditions or stop
335 | distributing the Licensed Material at any time; however, doing so
336 | will not terminate this Public License.
337 |
338 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
339 | License.
340 |
341 |
342 | Section 7 -- Other Terms and Conditions.
343 |
344 | a. The Licensor shall not be bound by any additional or different
345 | terms or conditions communicated by You unless expressly agreed.
346 |
347 | b. Any arrangements, understandings, or agreements regarding the
348 | Licensed Material not stated herein are separate from and
349 | independent of the terms and conditions of this Public License.
350 |
351 |
352 | Section 8 -- Interpretation.
353 |
354 | a. For the avoidance of doubt, this Public License does not, and
355 | shall not be interpreted to, reduce, limit, restrict, or impose
356 | conditions on any use of the Licensed Material that could lawfully
357 | be made without permission under this Public License.
358 |
359 | b. To the extent possible, if any provision of this Public License is
360 | deemed unenforceable, it shall be automatically reformed to the
361 | minimum extent necessary to make it enforceable. If the provision
362 | cannot be reformed, it shall be severed from this Public License
363 | without affecting the enforceability of the remaining terms and
364 | conditions.
365 |
366 | c. No term or condition of this Public License will be waived and no
367 | failure to comply consented to unless expressly agreed to by the
368 | Licensor.
369 |
370 | d. Nothing in this Public License constitutes or may be interpreted
371 | as a limitation upon, or waiver of, any privileges and immunities
372 | that apply to the Licensor or You, including from the legal
373 | processes of any jurisdiction or authority.
374 |
375 |
376 | =======================================================================
377 |
378 | Creative Commons is not a party to its public
379 | licenses. Notwithstanding, Creative Commons may elect to apply one of
380 | its public licenses to material it publishes and in those instances
381 | will be considered the “Licensor.” The text of the Creative Commons
382 | public licenses is dedicated to the public domain under the CC0 Public
383 | Domain Dedication. Except for the limited purpose of indicating that
384 | material is shared under a Creative Commons public license or as
385 | otherwise permitted by the Creative Commons policies published at
386 | creativecommons.org/policies, Creative Commons does not authorize the
387 | use of the trademark "Creative Commons" or any other trademark or logo
388 | of Creative Commons without its prior written consent including,
389 | without limitation, in connection with any unauthorized modifications
390 | to any of its public licenses or any other arrangements,
391 | understandings, or agreements concerning use of licensed material. For
392 | the avoidance of doubt, this paragraph does not form part of the
393 | public licenses.
394 |
395 | Creative Commons may be contacted at creativecommons.org.
--------------------------------------------------------------------------------
/LICENSES/LICENSE-CODE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) Microsoft Corporation.
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE
22 |
--------------------------------------------------------------------------------
/LICENSES/README.md:
--------------------------------------------------------------------------------
1 |
2 | # Contributing
3 |
4 | This project welcomes contributions and suggestions. Most contributions require you to agree to a
5 | Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
6 | the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com.
7 |
8 | When you submit a pull request, a CLA bot will automatically determine whether you need to provide
9 | a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions
10 | provided by the bot. You will only need to do this once across all repos using our CLA.
11 |
12 | This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/).
13 | For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or
14 | contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
15 |
16 | # Legal Notices
17 |
18 | Microsoft and any contributors grant you a license to the Microsoft documentation and other content
19 | in this repository under the [Creative Commons Attribution 4.0 International Public License](https://creativecommons.org/licenses/by/4.0/legalcode),
20 | see the [LICENSE](LICENSE) file, and grant you a license to any code in the repository under the [MIT License](https://opensource.org/licenses/MIT), see the
21 | [LICENSE-CODE](LICENSE-CODE) file.
22 |
23 | Microsoft, Windows, Microsoft Azure and/or other Microsoft products and services referenced in the documentation
24 | may be either trademarks or registered trademarks of Microsoft in the United States and/or other countries.
25 | The licenses for this project do not grant you rights to use any Microsoft names, logos, or trademarks.
26 | Microsoft's general trademark guidelines can be found at http://go.microsoft.com/fwlink/?LinkID=254653.
27 |
28 | Privacy information can be found at https://privacy.microsoft.com/en-us/
29 |
30 | Microsoft and any contributors reserve all other rights, whether under their respective copyrights, patents,
31 | or trademarks, whether by implication, estoppel or otherwise.
32 |
--------------------------------------------------------------------------------
/LICENSES/SECURITY.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## Security
4 |
5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/Microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
6 |
7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets Microsoft's [Microsoft's definition of a security vulnerability](https://docs.microsoft.com/en-us/previous-versions/tn-archive/cc751383(v=technet.10)) of a security vulnerability, please report it to us as described below.
8 |
9 | ## Reporting Security Issues
10 |
11 | **Please do not report security vulnerabilities through public GitHub issues.**
12 |
13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://msrc.microsoft.com/create-report).
14 |
15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the the [Microsoft Security Response Center PGP Key page](https://www.microsoft.com/en-us/msrc/pgp-key-msrc).
16 |
17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://www.microsoft.com/msrc).
18 |
19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
20 |
21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
22 | * Full paths of source file(s) related to the manifestation of the issue
23 | * The location of the affected source code (tag/branch/commit or direct URL)
24 | * Any special configuration required to reproduce the issue
25 | * Step-by-step instructions to reproduce the issue
26 | * Proof-of-concept or exploit code (if possible)
27 | * Impact of the issue, including how an attacker might exploit the issue
28 |
29 | This information will help us triage your report more quickly.
30 |
31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://microsoft.com/msrc/bounty) page for more details about our active programs.
32 |
33 | ## Preferred Languages
34 |
35 | We prefer all communications to be in English.
36 |
37 | ## Policy
38 |
39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://www.microsoft.com/en-us/msrc/cvd).
40 |
41 |
42 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Workshop: SQL Ground-to-Cloud
4 |
5 | #### A Microsoft Workshop from the SQL Server team
6 |
7 |
8 |
9 |
About this Workshop
10 |
11 | Welcome to this Microsoft solutions workshop on SQL Server in on-premises, in-cloud and hybrid solutions. In this one-day workshop, you'll learn how SQL Server 2019 and Azure SQL help you solve real-world challenges.
12 |
13 | The Modules in this workshop lead you through conceptual and hands-on topics ranging from the newest technical features in SQL Server to its implementation in all the platforms it runs on. You'll learn not only specific technologies, but how to assemble them into a complete solution based on customer needs and requests.
14 |
15 | You'll start by learning about the latest improvements in SQL Server 2019, work with the Big Data Clusters configuration, and then learn about the ways you can leverage SQL in Microsoft Azure (and how to get there) - all with a focus on how to extrapolate what you have learned to create other solutions for your organization. You'll end the day with a "What to Use When" module explaining how to create your own solutions.
16 |
17 | This Workshop contains lecture and hands on lab work, and is particularly useful for Solution Architects, Data Architects, Application Architects, Technical Sellers, and Application Developers. A laptop, Microsoft Azure account, and experience with SQL is considered a prerequisite.
18 |
19 | This README.MD file explains how the workshop is laid out, what you will learn, and the technologies you will use in this solution.
20 |
21 | (You can view all of the [source files for this workshop on this GitHub site, along with other workshops as well. Open this link in a new tab to find out more.](https://github.com/microsoft/sqlworkshops-sqlg2c))
22 |
23 |
24 |
25 |
26 |
Learning Objectives
27 |
28 | In this day-long, hands-on Workshop you’ll learn how to:
29 |
30 |
31 |
32 | - Articulate the key differentiators between SQL Server on-prem, in Azure VM, in Azure SQL, and hybrid configurations
33 | - Explain the different service tiers within Azure SQL, and what to choose when
34 | - Understand how Azure SQL is secured and address security concerns
35 | - Explain hybrid configurations for Azure SQL and SQL Server in common examples
36 | - Experiment with various features of SQL Server and Azure SQL
37 | - Understand additional Azure platform features for data pipelines and security
38 | - Understand what services are available to migrate and modernize your entire SQL Server stack
39 | - Make informed decisions about how your business or customers should modernize their data estate
40 | - Use Big Data solutions
41 |
42 |
Role Applications
43 |
44 | The concepts and skills taught in this workshop form the starting points for:
45 |
46 | - Solution Architects and Developers, to understand how to put together an end to end solution.
47 | - Data Professionals and DevOps teams, to implement and operate SQL Server systems on premises and in the cloud.
48 | - Data Scientists, to understand the environment used to analyze and solve specific predictive problems.
49 |
50 |
51 |
Business Applications of this Workshop
52 |
53 | Businesses require near real-time insights from ever-larger sets of data from a variety of sources. Many have not explored the improvements made in the latest versions of SQL Server, and some are only now exploring the cloud as a computing platform. As time has progressed, a more dramatic upgrade process may be required.
54 |
55 | In addition to traditional Online Transaction Processing (OLTP) and Online Analytic Processing (OLAP) workloads, some industry examples of data processing from multiple sources of data at scale are:
56 |
57 | Industry | Example |
58 | Retail | Demand Prediction Market-Basket Analysis |
59 | Finance | Fraud detection customer segmentation |
60 | Healthcare | Fiscal control analytics Disease Prevention prediction and classification Clinical Trials optimization |
61 | Public Sector | Revenue prediction Education effectiveness analysis |
62 | Manufacturing | Predictive Maintenance Anomaly Detection |
63 | Agriculture | Food Safety analysis Crop forecasting |
64 |
65 |
66 |
67 |
68 |
69 |
70 | The information covered in this workshop includes the following technologies and topics - although you are not limited to these, they form the basis of the workshop. At the end of the workshop you will learn how to extrapolate these components into other solutions. You will cover these at an overview level, with references to much deeper training provided.
71 |
72 |
73 |
74 | Technology/Concept | Description |
75 | SQL Server 2019 improvements (on-prem and in-cloud) | Covers challenges and solutions in performance, security, availability, data virtualization, and Linux and containers in SQL Server 2019 spanning on-premise, containers, Kubernetes, and cloud platforms. |
76 | Big Data Clusters for SQL Server (on-prem and in-cloud) | Explains the architecture for Big Data Clusters for SQL Server in on-premises installations, containers, Kubernetes, and on the Microsoft Azure platform and in hybrid configurations |
77 | SQL Server Virtual Machines in Microsoft Azure | Covers the tools, processes and procedures for SQL Server Virtual Machines on the Microsoft Azure platform |
78 | Azure SQL | Covers the tools, processes and procedures for Azure SQL (Managed Instance, Single Database, and Elastic Pool) |
79 | Migrating SQL Server installations to Microsoft Azure | Explains the tools and processes to migrate on-premises SQL Server installations to the Microsoft Azure platform |
80 | "What to Use When" | Teaches a complete set of tools and processes used to determine the best architecture for a given customer scenario on the Microsoft Azure platform |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 | You'll need a local system or Virtual Machine that you are able to install software on. The workshop demonstrations use Microsoft Windows as an operating system and all examples use Windows for the workshop. Optionally, you can use a Microsoft Azure Virtual Machine (VM) to install the software on and work with the solution.
89 |
90 | You must have a Microsoft Azure account with the ability to create assets, specifically the Azure Kubernetes Service (AKS).
91 |
92 | This workshop expects that you understand data structures and working with SQL Server and computer networks. This workshop does not expect you to have any prior data science knowledge, but a basic knowledge of statistics and data science is helpful in the Data Science sections. Knowledge of SQL Server, Azure Data and AI services, Python, and Jupyter Notebooks is helpful for the Big Data Clusters feature. AI techniques are implemented in Python packages. Solution templates are implemented using Azure services, development tools, and SDKs. You should have experience working with the Microsoft Azure Platform.
93 |
94 | If you are new to these, here are a few references you can complete prior to class:
95 |
96 | - [Microsoft SQL Server](https://docs.microsoft.com/en-us/sql/relational-databases/database-engine-tutorials?view=sql-server-ver15)
97 | - [Microsoft Azure](https://docs.microsoft.com/en-us/learn/paths/azure-fundamentals/)
98 |
99 |
100 |
Setup
101 |
102 | A full prerequisites document is located here. These instructions should be completed before the workshop starts, since you will not have time to cover these in class. Remember to "Stop" any Virtual Machines from the Azure Portal when not taking the class so that you do incur charges (shutting down the machine in the VM itself is not sufficient).
103 |
104 |
105 |
106 |
Intended Audience
107 |
108 | The following roles will find this workshop useful. Others may also attend, as described in the Secondary Audience section.
109 |
110 |
111 |
112 | Primary Audience: | Solution Architects and Data Professionals tasked with implementing modern Data Systems, Big Data, Machine Learning and AI solutions |
113 | Secondary Audience: | Security Architects, Developers, and Data Scientists |
114 | Level: | 300 |
115 | Type: | In-Person or Self-Paced |
116 | Length: | 8-9 hours |
117 |
118 |
119 |
120 |
121 |
122 |
Workshop Modules and In-Class Agenda
123 |
124 | This is a modular workshop, and in each section, you'll learn concepts, technologies and processes to help you complete the solution. The times shown below are for an instructor-led course, you may also take the modules in a self-paced fashion.
125 |
126 |
127 |
128 | Module |
129 | Time |
130 | Topics |
131 |
132 | 01 - Introduction and Workshop Methodology | 9:00AM-9:15AM | Workshop introduction, logistics, setup check |
133 |
134 | 02 - Modernizing Your Data Estate with SQL Server 2019 | 9:15AM-11:15AM | This module covers challenges and solutions using the latest version of SQL Server including:
135 |
136 | - Overall SQL Server 2019
137 | - Intelligent Performance
138 | - What's New in Security
139 | - Mission Critical Availability
140 | - Data Virtualization
141 | - SQL Server Linux and Containers
142 | - What Else, Migration and Next Steps
143 |
144 | |
145 |
146 | 03 - Working with Big Data and Data Science (Big Data Clusters for SQL Server 2019) | 11:30AM-12:30PM | Abstraction levels, frameworks, architectures and components within SQL Server big data clusters |
147 |
148 | 04 - SQL Server on the Microsoft Azure Platform | 1:30PM-2:30PM | Covers the multiple ways to use SQL Server technologies on the Microsoft Azure Platform, along with the fundamentals of SQL in Azure with additional deeper resources provided. Topics covered include:
149 |
150 | - Azure SQL: SQL VMs, Single instance, Single database, Elastic pools
151 | - Fundamentals of SQL in Azure
152 | - Migration process
153 |
154 | |
155 |
156 | 05 - Migrating SQL Server to Azure | 2:45PM-3:45PM | Covers the migration workflow and tools for assessing, planning, and migrating SQL workloads to Azure that meets the business requirements. Some of the tools and topics (not exhaustive) covered are:
158 |
159 | - Azure Migrate
160 | - Data Migration Assistant
161 | - Azure Database Migration Service
162 | - Post-migration operations
163 |
164 | |
165 |
166 | 06 - What to use When | 3:45PM-5:00PM | Covers the decision process and provides tools for deciding on the proper technologies on-premises and in-cloud for a solution based on requirements and constraints. |
167 |
168 |
169 |
170 |
171 |
172 |
Related Workshops
173 |
174 | - [Other SQL Workshops by Microsoft](https://aka.ms/sqlworkshops)
175 |
176 |
177 |
178 |
Next Steps
179 |
180 | Next, Continue to Prerequisites
181 |
--------------------------------------------------------------------------------
/SECURITY.md:
--------------------------------------------------------------------------------
1 |
2 |
3 | ## Security
4 |
5 | Microsoft takes the security of our software products and services seriously, which includes all source code repositories managed through our GitHub organizations, which include [Microsoft](https://github.com/microsoft), [Azure](https://github.com/Azure), [DotNet](https://github.com/dotnet), [AspNet](https://github.com/aspnet), [Xamarin](https://github.com/xamarin), and [our GitHub organizations](https://opensource.microsoft.com/).
6 |
7 | If you believe you have found a security vulnerability in any Microsoft-owned repository that meets [Microsoft's definition of a security vulnerability](https://aka.ms/opensource/security/definition), please report it to us as described below.
8 |
9 | ## Reporting Security Issues
10 |
11 | **Please do not report security vulnerabilities through public GitHub issues.**
12 |
13 | Instead, please report them to the Microsoft Security Response Center (MSRC) at [https://msrc.microsoft.com/create-report](https://aka.ms/opensource/security/create-report).
14 |
15 | If you prefer to submit without logging in, send email to [secure@microsoft.com](mailto:secure@microsoft.com). If possible, encrypt your message with our PGP key; please download it from the [Microsoft Security Response Center PGP Key page](https://aka.ms/opensource/security/pgpkey).
16 |
17 | You should receive a response within 24 hours. If for some reason you do not, please follow up via email to ensure we received your original message. Additional information can be found at [microsoft.com/msrc](https://aka.ms/opensource/security/msrc).
18 |
19 | Please include the requested information listed below (as much as you can provide) to help us better understand the nature and scope of the possible issue:
20 |
21 | * Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.)
22 | * Full paths of source file(s) related to the manifestation of the issue
23 | * The location of the affected source code (tag/branch/commit or direct URL)
24 | * Any special configuration required to reproduce the issue
25 | * Step-by-step instructions to reproduce the issue
26 | * Proof-of-concept or exploit code (if possible)
27 | * Impact of the issue, including how an attacker might exploit the issue
28 |
29 | This information will help us triage your report more quickly.
30 |
31 | If you are reporting for a bug bounty, more complete reports can contribute to a higher bounty award. Please visit our [Microsoft Bug Bounty Program](https://aka.ms/opensource/security/bounty) page for more details about our active programs.
32 |
33 | ## Preferred Languages
34 |
35 | We prefer all communications to be in English.
36 |
37 | ## Policy
38 |
39 | Microsoft follows the principle of [Coordinated Vulnerability Disclosure](https://aka.ms/opensource/security/cvd).
40 |
41 |
42 |
--------------------------------------------------------------------------------
/graphics/microsoftlogo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/sqlworkshops-sqlg2c/ba18ed184b915c3d8841cb17e39f73c60c9a1265/graphics/microsoftlogo.png
--------------------------------------------------------------------------------
/slides/SQL Server 2019 Modern Data Platform.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/sqlworkshops-sqlg2c/ba18ed184b915c3d8841cb17e39f73c60c9a1265/slides/SQL Server 2019 Modern Data Platform.pptx
--------------------------------------------------------------------------------
/slides/SQL Server Ground to Cloud.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/sqlworkshops-sqlg2c/ba18ed184b915c3d8841cb17e39f73c60c9a1265/slides/SQL Server Ground to Cloud.pptx
--------------------------------------------------------------------------------
/slides/SQL Server on the Microsoft Azure Platform.pptx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/sqlworkshops-sqlg2c/ba18ed184b915c3d8841cb17e39f73c60c9a1265/slides/SQL Server on the Microsoft Azure Platform.pptx
--------------------------------------------------------------------------------
/slides/g2c.pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/microsoft/sqlworkshops-sqlg2c/ba18ed184b915c3d8841cb17e39f73c60c9a1265/slides/g2c.pdf
--------------------------------------------------------------------------------
/sqlgroundtocloud/00-prerequisites.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Workshop: SQL Ground-to-Cloud
4 |
5 | #### A Microsoft Workshop from the SQL Server team
6 |
7 |
8 |
9 |
00 Prerequisites
10 |
11 | The *Workshop: SQL Ground-to-Cloud* workshop is taught using the following components, which you will install and configure in the sections that follow.
12 |
13 | > NOTE: If you take this Workshop in person, you may be provided with a complete environment, or have different instructions. The invitation where you registered for the Workshop will be followed up with details for that environment, otherwise assume that you need to complete all of the following steps to complete the Workshop. The Labs in this Workshop are optional, all screenshots and Notebooks are provided for you to follow along if you cannot meet these requirements.
14 |
15 | For this workshop, you will use Microsoft Windows as the base workstation, although Apple and Linux operating systems can be used in production. You can download a Windows 10 Workstation Image for VirtualBox, Hyper-V, VMWare, or Parallels for free here to use in the course. You must be able to install software on the system you will use for the course, so a Virtual Machine is often a good choice. This Workshop was built and designed for a server or VM to run SQL Server with at least 8Gb RAM and 4 CPUs.
16 |
17 | Note that you will need to be able to run the Docker program on your workstation, so [Nested Virtualization must be enabled on the system](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/nested-virtualization), or your physical workstation must be able to run Hyper-V images.
18 |
19 | Other requirements include:
20 |
21 | - **Microsoft Azure**: This Workshop uses the Microsoft Azure platform to host various components, and optionally you can deploy a system there to act as a workstation. You can use a free Azure account, an MSDN Account, your own account, or potentially one provided for you, as long as you can create about $100.00 (U.S.) worth of assets.
22 |
23 | > Note that all following activities must be completed prior to class - there will not be time to perform these operations during the workshop.
24 |
25 |
Activity 1: Set up a Microsoft Azure Account
26 |
27 | You have multiple options for setting up Microsoft Azure account to complete this workshop. You can [use a free account](https://azure.microsoft.com/en-us/free/), a Microsoft Developer Network (MSDN) account, a personal or corporate account, or in some cases a pass may be provided by the instructor. (Note: for most classes, the MSDN account is best)
28 |
29 | **Unless you are explicitly told you will be provided an account by the instructor in the invitation to this workshop, you must have your Microsoft Azure account set up before you arrive at class.**
30 |
31 |
Option 1 - Free Account
32 |
33 | The free account gives you twelve months of time, and a limited amount of resources. Set this up prior to coming to class, and ensure you can access it from the system you will bring to the class.
34 |
35 | - [Open this resource, and click the "Start Free" button you see there](https://azure.microsoft.com/en-us/free/)
36 |
37 | **NOTE: You can only use the Free subscription once, and it expires in 12 months. Set up your account per the instructions below, but ensure that you "Stop" any VM's in the Portal to ensure that you do not exceed the cost limits on this account. You will turn it off and on in the classroom per the instructor's directions.**
38 |
39 |
Option 2 - Microsoft Developer Network Account (MSDN) Account
40 |
41 | The best way to take this workshop is to use your [Microsoft Developer Network (MSDN) benefits if you have a subscription](https://marketplace.visualstudio.com/subscriptions).
42 |
43 | - [Open this resource and click the "Activate your monthly Azure credit" button](https://azure.microsoft.com/en-us/pricing/member-offers/credit-for-visual-studio-subscribers/)
44 |
45 |
Option 3 - Use Your Own Account
46 |
47 | You can also use your own account or one provided to you by your organization, but you must be able to create a resource group and create, start, and manage a Virtual Machine and Azure SQL components.
48 |
49 |
Option 4 - Use an account provided by your instructor
50 |
51 | Your workshop invitation may have instructed you that they will provide a Microsoft Azure account for you to use. If so, you will receive instructions that it will be provided.
52 |
53 | **Unless you received explicit instructions in your workshop invitations, you must create either a free, MSDN or Personal account. You must have an account prior to the workshop.**
54 |
55 |
Activity 2: Set up your environment
56 |
57 | In order to complete this workshop you need to install the following software:
58 |
59 | 1. Install [SQL Server 2019 CTP 3.2 or later](https://www.microsoft.com/en-us/sql-server/sql-server-2019#Install) with all features, *PolyBase Query Service for External Data* enabled, and ensure you have 20GB of drive space available.
60 |
61 | 2. Install SQL Server Management Studio (SSMS) 18.2 or higher from https://docs.microsoft.com/en-us/sql/ssms/download-sql-server-management-studio-ssms. Several of the modules require features built only into SSMS.
62 |
63 | 3. Install Azure Data Studio June 2019 or higher from https://docs.microsoft.com/en-us/sql/azure-data-studio/download. T-SQL notebooks are used extensively in this course.
64 |
65 | 4. [Install Docker Desktop for Windows](https://docs.docker.com/docker-for-windows/install/).
66 |
67 | 5. Download the WideWorldImporters sample backup from https://github.com/Microsoft/sql-server-samples/releases/download/wide-world-importers-v1.0/WideWorldImporters-Full.bak
68 |
69 |
70 |
Activity 3: Clone the Workshop
71 |
72 | To complete this Workshop you will work from local files. You can either use the `git` program or a ZIP file, which you will save on your workstation.
73 |
74 |
Getting the Workshop files
75 |
76 | - You can [download the repository holding these files using this link](https://github.com/microsoft/sqlworkshops/archive/master.zip).
77 |
78 | - If you have git installed, The workshop git repository is: https://github.com/microsoft/sqlworkshops.git
79 | `git clone --config core.autocrlf=false https://github.com/microsoft/sqlworkshops.git`
80 |
81 |
Activity 4: Set up your environment for Modules 4 and 5
82 |
83 | > **Important Note!** If you are being provided an account by your instructor (see Option 4 in Activity 1), you do not need to complete this activity.
84 |
85 | Before arriving at the workshop, if you intend to complete `04-SQLServerOnTheMicrosoftAzurePlatform` and/or `05-MigratingToAzureSQL`, you must complete the prerequisites outlined [here](https://github.com/microsoft/sqlworkshops-azuresqllabs/blob/master/lab-files/Module4and5Prerequisites.md). Note that all screenshots are provided, so you can "audit" this part of the Workshop if you like.
86 |
87 |
Next Steps
88 |
89 | Next, Continue to 01 - Introduction and Workshop Methodology.
90 |
--------------------------------------------------------------------------------
/sqlgroundtocloud/01-IntroductionAndWorkshopMethodology.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Workshop: SQL Ground-to-Cloud
4 |
5 | #### A Microsoft workshop from the SQL Server team
6 |
7 |
8 |
9 |
01 - Introduction and Workshop Methodology
10 |
11 | In this workshop you'll cover using the latest SQL Server features, from on-premises to the cloud, for various solutions. You'll work through a series of modules that will lead you from working with the latest improvements in SQL Server, working with large sets of data (in on-premises, cloud, and hybrid configurations), to working with the SQL options in the Microsoft Azure cloud platform. You'll close out the workshop with a set of scenarios to discover "what to use when", with a complete set of resources to help you in your real-world implementations. Along the way you'll have Lab exercises walking you through a complete assessment and migration of an on-premises database to Azure SQL.
12 |
13 | In each module you'll get more references, which you should follow up on to learn more. Also watch for links within the text - click on each one to explore that topic.
14 |
15 |
16 |
17 |
Workshop Scenario
18 |
19 | The Workshop follows the process of evaluating a solution from "Ground To Cloud" - using various phases in a defined process:
20 |
21 | - 01 **Discovery**: The original statement of the problem from the customer
22 | - 02 **Envisioning**: A "blue-sky" description of what success in the project would look like. Often phrased as *"I can..."* statements
23 | - 03 **Architecture Design Session** (ADS): An initial layout of the technology options and choices for a preliminary solution
24 | - 04 **Proof-Of-Concept** (POC): After the optimal solution technologies and processes are selected, a POC is set up with a small representative example of what a solution might look like, as much as possible. If available, a currently-running solution in a parallel example can be used
25 | - 05 **Implementation**: Implementing a phased-in rollout of the completed solution based on findings from the previous phases
26 | - 06 **Handoff**: A post-mortem on the project with a discussion of future enhancements
27 |
28 | In these modules you'll work through each of these phases for a fictional company called [Wide World Importers](https://docs.microsoft.com/en-us/sql/samples/wide-world-importers-what-is?view=sql-server-2017) (WWI) - a wholesale novelty goods importer and distributor operating from the San Francisco bay area in the United States. WWI will need to integrate their operations with other companies, such as [The Contoso company](https://docs.microsoft.com/en-us/microsoft-365/enterprise/contoso-overview), a multi-national business with headquarters in Paris, France, and [Adventure Works Cycles](https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008/ms124825(v=sql.100) ) - a large, multinational company that manufactures and sells metal and composite bicycles to North American, European and Asian commercial markets. Another company, [Tailspin Toys](http://tailspintoys.azurewebsites.net/), is the developer of several popular toys and online video games. Founded in 2010, and acquired shortly after by Wide World Importers, the company has experienced exponential growth since releasing the first installment of their most popular game franchise to include online multiplayer gameplay. They have since built upon this success by adding online capabilities to the majority of their game portfolio.
29 |
30 | Each of these companies have different challenges, and you'll get hands-on experience in the Labs with each of them.
31 |
32 | At the end of the Workshop, you'll be presented with additional needs from each of these companies, and get tools, processes and other assets that you can use to design your own unique solution. By the end of this Workshop, you'll have everything you need to repeat this process in real-world production scenarios.
33 |
34 |
35 |
36 |
Workshop Methodolgy
37 |
38 | This is a modular workshop, designed to be used in a linear fashion - you'll start at Module 1 and work your way through to the last one. You can, however, use these modules independently in many cases, and the Workshop exercises point off to Labs, which can often be taken independently as well.
39 |
40 | If you are working through the Workshop with an instructor, you'll get additional instructions on the Workshop and you may be provided with a special environment for the class. You'll be notified if that's the case when you sign up for the Workshop. Otherwise, if you are following along on your own, Make sure you check out the prerequisite page before you start. You'll need all of the items loaded there before you can proceed with the Workshop Labs. If you plan to just read through the Workshop, the Labs are optional.
41 |
42 |
43 |
44 |
Workshop Modules and Agenda
45 |
46 | This is a modular workshop, and in each section, you'll learn concepts, technologies and processes to help you complete the solution. The times shown below are for an instructor-led course, you may also take the modules in a self-paced fashion.
47 |
48 |
49 |
50 | Module |
51 | Time |
52 | Topics |
53 |
54 | 01 - Introduction and Workshop Methodology | 9:00AM-9:15AM | Workshop introduction, logistics, setup check |
55 |
56 | 02 - Modernizing Your Data Estate with SQL Server 2019 | 9:15AM-11:15AM | This module covers challenges and solutions using the latest version of SQL Server including:
57 |
58 | - Overall SQL Server 2019
59 | - Intelligent Performance
60 | - What's New in Security
61 | - Mission Critical Availability
62 | - Data Virtualization
63 | - SQL Server Linux and Containers
64 | - What Else, Migration and Next Steps
65 |
66 | |
67 |
68 | 03 - Working with Big Data and Data Science (Big Data Clusters for SQL Server 2019) | 11:30AM-12:30PM | Abstraction levels, frameworks, architectures and components within SQL Server big data clusters |
69 |
70 | 04 - SQL Server on the Microsoft Azure Platform | 1:30PM-2:30PM | Covers the multiple ways to use SQL Server technologies on the Microsoft Azure Platform, along with the fundamentals of SQL in Azure with additional deeper resources provided. Topics covered include:
71 |
72 | - Azure SQL: SQL VMs, Single instance, Single database, Elastic pools
73 | - Fundamentals of SQL in Azure
74 | - Migration process
75 |
76 | |
77 |
78 | 05 - Migrating SQL Server to Azure | 2:45PM-3:45PM | Covers the migration workflow and tools for assessing, planning, and migrating SQL workloads to Azure that meets the business requirements. Some of the tools and topics (not exhaustive) covered are:
80 |
81 | - Azure Migrate
82 | - Data Migration Assistant
83 | - Azure Database Migration Service
84 | - Post-migration operations
85 |
86 | |
87 |
88 | 06 - What to use When | 3:45PM-5:00PM | Covers the decision process and provides tools for deciding on the proper technologies on-premises and in-cloud for a solution based on requirements and constraints. |
89 |
90 |
91 |
92 |
93 |
94 |
Next Steps
95 |
96 | Next, Continue to 02 - Modernizing Your Data Estate with SQL Server 2019.
97 |
98 |
99 |
100 |
101 |
--------------------------------------------------------------------------------
/sqlgroundtocloud/02-ModernizingYourDataEstateWithSQLServer2019.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Workshop: SQL Ground-to-Cloud
4 |
5 | #### A Microsoft workshop from the SQL Server team
6 |
7 |
8 |
9 |
02 - Modernizing Your Data Estate with SQL Server 2019
10 |
11 | SQL Server 2019 is a modern data platform designed to tackle the challenges of today's data professional. SQL Server 2019 is not just an upgrade option from previous releases of SQL Server.
12 |
13 | The WideWorldImporters company has been evaluating upgrading several SQL Server 2008 instances along with some instances of SQL Server 2012, 2014, and even 2016. WideWorldImporters wants to know whether SQL Server 2019 will solve some of the challenges they face including:
14 |
15 | - Improving query performance without having to make application changes
16 | - Classifying key data columns and being able to audit access to these columns to meet the needs of GDPR compliance.
17 | - Providing better database availability when applications use long-running transactions.
18 | - Allowing the WideWorldImporters team to access data from sources like Oracle, Azure SQL Database, and Azure CosmosDB without having to develop expensive ETL jobs.
19 | - The database team at WideWorldImporters has evaluated SQL Server on Linux but SQL Server 2017 didn't include Replication, a feature they need for their application. They would like to evaluate how SQL Server Replication on Linux works. They also want to understand more about container technology and how it can be used with SQL Server
20 | - WideWorldImporters also would like to know other capabilities exist in SQL Server 2019 that might help them before more efficient and extend the capabilities of T-SQL.
21 | - WideWorldImporters also would like to learn more about how they can plan and execute a migration to SQL Server 2019 and reduce their risk for upgrades.
22 | - WideWorldImporters is also evaluating Azure SQL so wants to know what features in SQL Server 2019 also work in Azure.
23 |
24 | In this workshop module, you will see the capabilities in SQL Server 2019 that can provide solutions for these challenges.
25 |
26 | > **NOTE**: Make sure you check out the prerequisite page before you start. You'll need all of the items loaded there before you can proceed with the workshop. Instructor led workshops may have provided all the resources in the prerequisites.
27 |
28 |
29 |
30 |
Activity: SQL Server 2019 Lab
31 |
32 | In this activity, you will complete a series of modules from the **SQL Server 2019 Lab**.
33 |
34 | Instructor led workshops will use modules from the SQL Server 2019 lab along with the PowerPoint slides SQL Server 2019 Modern Data Platform. Instructor led labs may not go through all modules in the SQL Server 2019 lab.
35 |
36 |
Activity Steps
37 |
38 | To complete this module, go to [https://github.com/microsoft/sqlworkshops/blob/master/sql2019lab/README.md](https://github.com/microsoft/sqlworkshops-sql2019lab).
39 |
40 | When you are done with the SQL Server 2019 lab you have completed Module 02 of the SQL Server Ground to Cloud Workshop! Proceed to the next module using the link in Next Steps below.
41 |
42 |
43 |
44 |
For Further Study
45 |
46 |
52 |
53 |
54 |
55 |
Next Steps
56 |
57 | Next, Continue to 03 - Working with Big Data Clusters on SQL Server 2019.
58 |
--------------------------------------------------------------------------------
/sqlgroundtocloud/03-WorkingWithBigDataAndDataScienceBigDataClustersForSQLServer2019.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Workshop: SQL Ground-to-Cloud
4 |
5 | #### A Microsoft workshop from the SQL Server team
6 |
7 |
8 |
9 |
03 - Working with Big Data and Data Science - Big Data Clusters for SQL Server 2019
10 |
11 | In this Module of the Workshop you'll cover using SQL Server on-premises and in-cloud configurations, as well as hybrid applications as a solution for data processing. In each section you'll get more references, which you should follow up on to learn more. Also watch for links within the text - click on each one to explore that topic. The end of this module contains several helpful references you can use in this course and in production.
12 |
13 | (Make sure you check out the prerequisite page before you start. You'll need all of the items loaded there before you can proceed with the workshop.)
14 |
15 | In this module you'll cover working with Data Science workloads with a focus on larger sets of data. Starting in SQL Server 2019, big data clusters allows for large-scale, near real-time processing of data over the HDFS file system and other data sources. It also leverages the Apache Spark framework which is integrated into one environment for management, monitoring, and security of your environment. This means that organizations can implement everything from queries to analysis to Machine Learning and Artificial Intelligence within SQL Server, over large-scale, heterogeneous data. SQL Server big data clusters can be implemented fully on-premises, in the cloud using a Kubernetes service such as Azure's AKS, and in a hybrid fashion. This allows for full, partial, and mixed security and control as desired.
16 |
17 | > Note: This is a complex topic, so you can find a complete workshop on this topic here.
19 |
20 |
21 |
22 |
3.1 Data Science and Big Data Processing
23 |
24 | Businesses require near real-time insights from ever-larger sets of data from a variety of sources. Large-scale data ingestion requires scale-out storage and processing in ways that allow fast response times. In addition to simply querying this data, organizations want full analysis and even predictive capabilities over their data. Machine Learning, Artificial Intelligence, and Deep Learning techniques all require large sets of data for training their models to be effective. Two technologies have emerged as the primary methods for processing large sets of data, using a scale-out paradigm - Hadoop and Spark.
25 |
26 | Hadoop uses a set of computing nodes that position the workload over distributed data nodes:
27 |
28 | 
29 |
30 | Spark is a technology that uses various libraries to make processing over distributed storage more efficient and faster:
31 |
32 |
33 | 
34 |
35 |
36 | Both of these technologies assume many nodes (computers), and since you only need the computation elements (not all the drivers and other components of a full computer or Virtual Machine), Container technologies work well for this solution.
37 |
38 |
39 |
40 |
41 |
42 | To control containers, a technology called Kubernetes is used for deployment, management and storage of a grouping of containers, called a Cluster.
43 |
44 |
45 | 
46 |
3.2 SQL Server 2019 Big Data Clusters Architecture
47 |
48 | Using the technologies described above, SQL Server uses a Kubernetes Cluster to deploy multiple components for SQL Server processing, distributed queries using PolyBase, Spark, and Storage on HDFS for a complete environment to work with large sets of data, and includes Machine Learning, Artificial Intelligence and Deep Learning capabilities.
49 |
50 |
51 |
52 |
53 |
54 | A SQL Server Big Data Cluster (BDC) can be deployed to multiple environments, in-cloud and on-premises:
55 |
56 | - In a Cloud Service (Such as the Azure Kubernetes Service or AKS)
57 | - On premises (using KubeADM)
58 |
59 | These architectures are not mutually exclusive - you can install some components on-premises, and others as a service. Your connections can interconnect across these environments.
60 |
61 |
3.3 SQL Server 2019 Big Data Clusters Programming
62 |
63 | In addition to traditional OLTP workloads, the SQL Server Big Data Cluster has three other uses that work with data at scale.
64 |
65 | Data Virtualization with SQL Server Big Data Clusters
66 |
67 | Using the Data Virtualization capability of PolyBase in SQL Server Big Data Clusters you create External Tables for data outside the Cluster. These External Table definitions are stored in the database on the SQL Server Master Instance within the cluster. When queried by the user, the queries are engaged from the SQL Server Master Instance through the Compute Pool in the SQL Server BDC, which holds Kubernetes Nodes containing the Pods running SQL Server Instances. These Instances send the query to the PolyBase Connector at the target data system, which processes the query based on the type of target system. The results are processed and returned through the PolyBase Connector to the Compute Pool and then on to the Master Instance, and then on to the user.
68 |
69 |
70 |
71 |
72 |
73 | This process allows not only a query to disparate systems, but also those remote systems can hold extremely large sets of data. Normally you are querying a subset of that data, so the results are all that are sent back over the network. These results can be joined with internal tables for a single view, and all from within the same Transact-SQL statements.
74 |
75 | Data Marts with SQL Server Big Data Clusters
76 |
77 | Ad-hoc queries over larges sets of normalized data are very useful for many scenarios. There are times when you would like to bring the data into storage, so that you can create denormalized representations of datasets, aggregated data, and other purpose-specific data tasks.
78 |
79 | Using the Data Virtualization capability (PolyBase), the IT team creates External Tables using PolyBase statements. These External Table definitions are stored in the database on the SQL Server Master Instance within the cluster. When queried by the user, the queries are engaged from the SQL Server Master Instance through the Compute Pool in the SQL Server BDC, which holds Kubernetes Nodes containing the Pods running SQL Server Instances. These Instances send the query to the PolyBase Connector at the target data system, which processes the query based on the type of target system. The results are processed and returned through the PolyBase Connector to the Compute Pool and then on to the Master Instance, and the PolyBase statements can specify the target of the Data Pool. The SQL Server Instances in the Data Pool store the data in a distributed fashion across multiple databases, called Shards.
80 |
81 |
82 |
83 |
84 |
85 | Data Science and Apache Spark with SQL Server Big Data Clusters
86 |
87 | There are various uses for a large cluster of data processing systems for Machine Learning and AI applications. One primary use-case is the creation of the Features and Labels used in various ML and AI algorithms. Large sets of data stored in the Data Pool allow Python, R and Spark calls and libraries are available for this task in BDC. This process is often called Data Engineering.
88 |
89 | The SQL Server Master Instance in the BDC installs with Machine Learning Services, which allow creation, training, evaluation and persisting of Machine Learning Models. Data from all parts of the BDC are available, and Data Science oriented languages and libraries in R, Python and Java are enabled. In this scenario, the Data Scientist creates the R or Python code, and the Transact-SQL Developer wraps that code in a Stored Procedure. This code can be used to train, evaluate and create Machine Learning Models. The Models can be stored in the Master Instance for scoring, or sent on to the App Pool where the Machine Learning Server is running, waiting to accept REST-based calls from applications.
90 |
91 | The Data Scientist has another option to create and train ML and AI models. The Spark platform within the Storage Pool is accessible through the Knox gateway, using Livy to send Spark Jobs. This gives access to the full Spark platform, using Jupyter Notebooks (included in Azure Data Studio) or any other standard tools that can access Spark through REST calls.
92 |
93 |
94 |
95 |
96 |
97 |
Activity: Big Data Clusters for SQL Server Lab Review
98 |
99 | In this lab, you will review a series of Jupyter Notebooks you can open in Azure Data Studio to work with a Big Data Cluster. It demonstrates loading data, querying SQL Server databases, accessing HDFS using PolyBase, loading data into the Data Pool, working with Spark, and implementing a Data Science Machine Learning Model in Python.
100 |
101 | Note: This lab assumes a completely installed and function SQL Server Big Data Cluster if you wish to run the Notebooks, otherwise review the completed Notebooks at the reference.
102 |
103 |
Steps
104 |
105 | Open this reference and review the notebooks you find there.
107 |
108 |
109 |
110 |
For Further Study
111 |
120 |
121 |
122 |
Next Steps
123 |
124 | Next, Continue to 04 - SQL Server on the Microsoft Azure Platform.
--------------------------------------------------------------------------------
/sqlgroundtocloud/04-SQLServerOnTheMicrosoftAzurePlatform.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Workshop: SQL Ground-to-Cloud
4 |
5 | #### A Microsoft workshop from the SQL Server team
6 |
7 |
8 |
9 |
04 - SQL Server on the Microsoft Azure Platform
10 |
11 | In the previous modules, you learned about SQL Server 2019, big data, and more. In this module, you'll learn more about Azure SQL, including the benefits, the options, and how to get there. Near the end of the module, you'll learn how to assess your on-premises estate, through an example with the Tailspin Toys Gaming division of Wide World Importers, with tools like [Azure Migrate](https://docs.microsoft.com/en-us/azure/migrate/migrate-services-overview) and [Data Migration Assistant](https://docs.microsoft.com/en-us/sql/dma/dma-overview?view=sql-server-2017). The module is broken up into the following sections:
12 |
13 | [4.1](#4.1): Introduction to Azure SQL
14 | [4.2](#4.2): Azure SQL Platform Benefits
15 | [4.3](#4.3): Migrating to Azure SQL
16 | [4.4](#4.4): Database Discovery and Assessment
17 |
18 | (Make sure you check out the Prerequisites page before you start. You'll need all of the items loaded there before you can proceed with the workshop.)
19 |
20 | SELF-PACED USERS ONLY: If you are using this module self-paced, carefully read through Module 4 of this workshop and the references provided before completing the lab in Module 4.4. You can also check out the [slides that will be presented in a live workshop](https://github.com/microsoft/sqlworkshops/blob/master/SQLGroundToCloud/slides/SQL%20Server%20on%20the%20Microsoft%20Azure%20Platform.pptx). Then, continue to Module 5.
21 |
22 | > **Note**:
23 | > While all the deployment options will be referenced, the focus of this module is on **Azure SQL Managed Instance**, with some details that are also related to **Azure SQL Database (single database)**.
24 |
25 |
26 |
27 |
28 |
29 | In this section, you'll learn about the different Azure SQL deployment options and service tiers available for Tailspin Toys Gaming, a division of Wide World Importers that focuses on online gameplay. You'll start with understanding Tailspin Toys Gaming's scenario deeper, so you can determine which options are best suited to their business needs.
30 |
31 | ### Scenario Review: Tailspin Toys Gaming
32 |
33 | Tailspin Toys is the developer of several popular online video games. Founded in 2010, and acquired shortly after by Wide World Importers, the company has experienced exponential growth since releasing the first installment of their most popular game franchise to include online multiplayer gameplay. They have since built upon this success by adding online capabilities to the majority of their game portfolio.
34 |
35 | Adding online gameplay has greatly increased popularity of their games, but the rapid increase in demand for their services has made supporting the current setup problematic. To facilitate online gameplay, they host gaming services on-premises using rented hardware. For each game, their gaming services setup consists of three virtual machines running the gaming software and five game databases hosted on a single SQL Server 2008 R2 instance. In addition to the dedicated gaming VMs and databases, they also host authentication and gateway VMs and databases, which are shared by all their games. At its foundation, Tailspin Toys is a game development company, made up primarily of software developers. The few dedicated database and infrastructure resources they do have are struggling to keep up with their ever-increasing workload.
36 |
37 | Tailspin Toys is hoping that migrating their services from on-premises to the cloud can help to alleviate some of their infrastructure management issues, while simultaneously helping them to refocus their efforts on delivering business value by releasing new and improved games. They are looking for a proof-of-concept (PoC) for migrating their gamer information web application and database into the cloud. They maintain their gamer information database, `TailspinToys`, on an on-premises SQL Server 2008 R2 database. This system is used by gamers to update their profiles, view leader boards, purchase game add-ons and more. Since this system helps to drive revenue, it is considered a business-critical application, and needs to be highly-available. They are aware that SQL Server 2008 R2 has reached end of support, and are looking at options for migrating this database into Azure. They have read about some of the advanced security and performance tuning options that are available only in Azure and would prefer to a migrate the database into a platform-as-a-service (PaaS) offering, if possible. Tailspin Toys is using the Service Broker feature of SQL Server for messaging within the `TailspinToys` database. This functionality is being used for several critical processes, and they cannot afford to lose this capability when migrating their operations database to the cloud. They have also stated that, at this time, they do not have the resources to rearchitect the solution to use an alternative message broker.
38 |
39 | > If you'd like to conduct a deep whiteboard design session for this scenario, it is available [here](https://github.com/microsoft/MCW-Migrating-SQL-databases-to-Azure/tree/master/Whiteboard%20design%20session).
40 |
41 | ### Azure SQL deployment options
42 |
43 | Tailspin Toys has requested your help in determining where and how they should land their data in Azure. This is a decision that all businesses moving to the cloud have to make, and the result will depend on their unique business requirements. Microsoft has recently introduced Azure SQL, which brings all the SQL Server products in Azure under one suite. If you're already familiar with [Azure SQL Database](https://azure.microsoft.com/en-us/services/sql-database/), this slight shift means that Azure SQL also includes [SQL Server on Virtual Machines](https://azure.microsoft.com/en-us/services/virtual-machines/sql-server/) (also referred to as Azure SQL VMs), which Microsoft is continuously investing in and enhancing the benefits associated with it.
44 |
45 |
46 | There are several different options within Azure SQL, and one visual is shown below.
47 | 
48 |
49 | > Recently, we announced [Azure SQL Database Instance Pools in preview](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-instance-pools), which provide a convenient and cost-efficient way to migrate smaller SQL instances to the cloud at scale.
50 |
51 |
52 | Every business is going to have unique requirements that make some options better for them than others. There won't necessarily be one 'correct' answer, but there are tradeoffs to consider. Let's look at some examples of Azure SQL customers and what they decided:
53 |
54 | * [**Allscripts**](https://customers.microsoft.com/en-us/story/allscripts-partner-professional-services-azure): Allscripts is a leading healthcare software manufacturer, serving physician practices, hospitals, health plans, and Big Pharma. To transform its applications frequently and host them securely and reliably, Allscripts wanted to move to Azure quickly. In just three weeks, the company lifted and shifted dozens of acquired applications running on 1,000 virtual machines to Azure with [Azure Site Recovery](https://azure.microsoft.com/en-us/services/site-recovery/). After the migration to **Azure SQL VMs**, Allscripts began to evaluate and test **Azure SQL Managed Instance**, and started to move some workloads there.
55 | * [**Komatsu**](https://customers.microsoft.com/en-us/story/komatsu-australia-manufacturing-azure): Komatsu is a manufacturing company that produces and sells heavy equipment for construction. They had multiple mainframe applications for different types of data, which they wanted to consolidate to get a holistic view. Additionally, they wanted a way reduce overhead. Because Komatsu uses a large surface area of SQL Server features, they chose to move to **Azure SQL Managed Instance**. They were able to move about 1.5 terabytes of data smoothly, and [start enjoying benefits like automatic patching and version updates, automated backups, high availability, and reduced management overhead](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-technical-overview). After migrating, they reported ~49% cost reduction and ~25-30% performance gains.
56 | * [**AccuWeather**](https://customers.microsoft.com/en-us/story/accuweather-partner-professional-services-azure): AccuWeather has been analyzing and predicting the weather for more than 55 years. They wanted access to the rich and rapidly advanced platform of Azure that includes big data, machine learning, and AI capabilities. They want to focus on building new models and applications, not managing databases. They selected **Azure SQL Database [**(single database)**](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-single-index)** to use with other services, like [Azure Data Factory](https://docs.microsoft.com/en-us/azure/data-factory/) and [Azure Machine Learning Services](https://docs.microsoft.com/en-us/azure/machine-learning/service/), to quickly and easily deploy new internal applications to make sales and customer predictions.
57 | * [**Paychex**](https://customers.microsoft.com/en-us/story/paychex-azure-sql-database-us): Paychex is a human capital management firm that serves more than 650,000 businesses across the US and Europe. They needed a way to separately manage the time and pay management for each of their businesses, and cut costs. They opted for **Azure SQL Database** [**(elastic pools)**](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-elastic-pool), which allowed them to simplify the management and enable resource sharing between separate databases to lower costs.
58 |
59 | If you want to dive deeper into the deployment options and how to choose, check out the following resources:
60 | * [Blog announcement for Azure SQL](https://techcommunity.microsoft.com/t5/Azure-SQL-Database/Unified-Azure-SQL-experience/ba-p/815368) which explains and walks through Azure SQL and some of the resulting views and experiences available in the Azure portal.
61 | * [Microsoft Customer Stories](https://customers.microsoft.com/en-us/home?sq=&ff=&p=0) for many more stories similar to the ones above. You can use this to explore various use cases, industries, and solutions.
62 | * [Choose the right deployment option in Azure SQL](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-paas-vs-sql-server-iaas) is a page in the documentation regularly updated to help provide insight into making the decisions between the Azure SQL options.
63 | * [Choosing your database migration path to Azure](https://azure.microsoft.com/mediahandler/files/resourcefiles/choosing-your-database-migration-path-to-azure/Choosing_your_database_migration_path_to_Azure.pdf) is a white paper that talks about tools for discovering, assessing, planning and migrating SQL databases to Azure. This workshop will refer to it several times, and it's a highly recommended read. Chapter 5 deeply discusses choosing the right deployment option.
64 | * [Feature comparison between SQL database, SQL managed instance, and SQL Server](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-features)
65 | * There are also tools covered later in this module that can help in recommending a deployment option.
66 |
67 |
68 | ### Azure SQL service tiers and other options
69 |
70 | Once you have an understanding of the deployment options, it's time to consider some of the details within the service tiers that are available.
71 |
72 | #### SQL Server on Virtual Machines options
73 |
74 | Azure SQL VMs don't have specific service tiers, but there are decisions to be made around which images to choose, how to configure storage and what sizes, etc. This isn't the focus of this workshop, but if you're considering Azure SQL VMs, you'll want to review the [guidance on images to choose from](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sql/virtual-machines-windows-sql-server-iaas-overview), the [quick checklist](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sql/virtual-machines-windows-sql-performance) to obtain optimal performance of Azure SQL VMs, and the guidance for [storage configuration](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sql/virtual-machines-windows-sql-server-storage-configuration).
75 |
76 | Recently, [Resource Provider](http://www.aka.ms/sqlvm_rp_documentation) was [announced](http://www.aka.ms/sqlvm_rp), which brings the functionality of Azure Marketplace images to SQL Server instances self-installed on Azure VMs.
77 |
78 | > Note: If you're specifically looking at SQL Server on RHEL Azure VMs, there's a full operations guide available [here](https://azure.microsoft.com/en-us/resources/sql-server-on-rhel-azure-vms-operations-guide/
79 | ).
80 |
81 | > Note: In an earlier module of this workshop, you learned about some of the problems SQL Server 2019 is solving. The same applies in an Azure SQL VM (if you choose 2019 as the target).
82 |
83 | #### Azure SQL Database options
84 |
85 | For Azure SQL Database, which is the focus of this module, there are several options and tiers available, and the choices will depend on the scenario.
86 |
87 | There are a few main decisions to be made, which will be explored next.
88 |
89 | *Decision 1: Choose the purchasing model*
90 | You have two options, [virtual core (vCore)-based](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tiers-vcore) (recommended) or [Database transaction unit (DTU)-based](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tiers-dtu
91 | ).
92 |
93 | The vCore-based model is recommended because it allows you to independently choose compute and storage resources, while the DTU-based model is a bundled measure of compute, storage and I/O resources, which means you have less control over paying only for what you need. This model also allows you to use [Azure Hybrid Benefit for SQL Server](https://azure.microsoft.com/pricing/hybrid-benefit/) to gain cost savings. In the [vCore model](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tiers-vcore), you pay for:
94 |
95 | * Compute resources (the service tier + the number of vCores and the amount of memory + the generation of hardware).
96 | * The type and amount of data and log storage.
97 | * Backup storage ([read-access, geo-redundant storage (RA-GRS)](https://docs.microsoft.com/en-us/azure/storage/common/storage-designing-ha-apps-with-ragrs)).
98 |
99 | For the purposes of this workshop, we'll focus on the vCore purchasing model (recommended), but you can [compare vCores and DTUs here](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-purchase-models
100 | ).
101 |
102 | *Decision 2: Choose service tier for performance and availability*
103 | There are three tiers available in the vCore model for Azure SQL Database:
104 | * **[General purpose](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tier-general-purpose)**: Most business workloads. Offers budget-oriented, balanced, and scalable compute and storage options.
105 | * **[Business critical](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tier-business-critical)**: Business applications with low-latency response requirements. Offers highest resilience to failures by using several isolated replicas. This is the only tier that can leverage [in-memory OLTP](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-in-memory) to improve performance.
106 | * **[Hyperscale](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tier-hyperscale)**: Most business workloads with highly scalable storage and read-scale requirements. *Currently only available for single databases, not managed instances*.
107 |
108 | A member of the Product Group recently released a [blog](https://azure.microsoft.com/en-gb/blog/understanding-and-leveraging-azure-sql-database-sla/) and [video](https://www.youtube.com/watch?v=l7FUNJd5TSE) explaining the SLA (service level agreements that set an expectation for uptime and performance). This resource will help you make an informed decision about which tier to move to.
109 |
110 | For a deeper explanation between the three tiers (including scenarios), you can also refer to the [service-tier characteristics](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tiers-vcore#service-tier-characteristics) in the documentation.
111 |
112 | *Decision 3: Provisioned or serverless compute?*
113 | If you choose **General Purpose within Single databases** and the **vCore-based model**, you have an additional decision to make regarding the compute that you pay for:
114 | * **Provisioned compute** is meant for more regular usage patterns with higher average compute utilization over time, or multiple databases using elastic pools.
115 | * **Serverless compute** is meant for intermittent, unpredictable usage with lower average compute utilization over time. Serverless has auto-pause and resume capabilities (with a time delay you set), meaning when your database is paused, you only pay for storage.
116 |
117 | For a deeper explanation between the two compute options (including scenarios), you can refer to the detailed [comparison in the documentation](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-serverless#comparison-with-provisioned-compute-tier).
118 |
119 | > If you're looking for compute cost saving opportunities, you can prepay for compute resources with [Azure SQL Database reserved capacity](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-reserved-capacity).
120 |
121 | *Decision 4: Choose hardware generation*
122 | The vCore model lets you choose the generation of hardware:
123 | * **Gen4**: Up to 24 logical CPUs based on Intel E5-2673 v3 (Haswell) 2.4-GHz processors, vCore = 1 PP (physical core), 7 GB per core, attached SSD
124 | * **Gen5**: Up to 80 logical CPUs based on Intel E5-2673 v4 (Broadwell) 2.3-GHz processors, vCore = 1 LP (hyper-thread), 5.1 GB per core, fast eNVM SSD
125 |
126 | Basically, Gen4 hardware offers substantially more memory per vCore. However, Gen5 hardware allows you to scale up compute resources much higher.
127 |
128 | > Note: If you choose General Purpose within Single databases and want to use the serverless compute tier, Gen5 hardware is the only option.
129 |
130 | *Summary*
131 | As you've hopefully noticed, while there are a lot of options, Azure is able to provide flexibility so you get exactly what you need, nothing less. A summary of the service tier options with some additional considerations is included below, but be sure to check out [pricing information](https://azure.microsoft.com/en-us/pricing/details/sql-database/managed/) for the latest details.
132 |
133 | 
134 |
135 |
136 | > Note: Data Migration Assistant (covered later in this module) runs scans that can help you choose some of the options as well as the SKU. [Learn more here](https://docs.microsoft.com/en-us/sql/dma/dma-sku-recommend-sql-db?view=sql-server-2017).
137 |
138 | Tailspin Toys Gaming is leaning towards Azure SQL Managed Instance, because it supports movement to Azure without changing the database features that are used (in this case, Service Broker). They think business critical is the right tier for them, as they need to maximize performance and availability. By using the vCore-based model, they're able to leverage their existing investments with Azure Hybrid Benefits (1 Enterprise license core for SQL Server = 1 Business Critical vCore). Additionally, they want to leverage the three replicas provided free with business critical, where one can be used for [read scale-out](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-read-scale-out), that is needed as the game experiences heavy read workloads.
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 | Before Tailspin Toys Gaming commits to moving to Azure SQL Managed Instance, they want to understand some of the benefits that come with running their SQL workloads in Azure.
147 |
148 |
149 | In this section, we will highlight some of the key benefits of choosing Azure for your SQL workloads. If you want to go deeper, additional reference information is available.
150 |
151 |
152 |
153 | Azure SQL Database (including single databases, elastic pools, and managed instances) is a fully managed Database Engine that automates most of the database management functions such as upgrading, patching, backups, and monitoring. Some of the built-in capabilities include:
154 | * [Business continuity](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-business-continuity) enables your business to continue operating in the face of disruption, particularly to its computing infrastructure.
155 | * [High availability](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-high-availability) of Azure SQL Database guarantees your databases are up and running 99.99% of the time, no need to worry about maintenance/downtimes.
156 | * [Automated backups](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-automated-backups) are created and use Azure read-access geo-redundant storage (RA-GRS) to provide geo-redundancy.
157 | * [Long term backup retention](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-long-term-retention) enables you to store specific full databases for up to 10 years.
158 | * [Geo-replication](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-active-geo-replication) by creating readable replicas of your database in the same or different data center (region).
159 | * [Scale](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-scale-resources) by easily adding more resources (CPU, memory, storage) without long provisioning.
160 | * Network Security
161 | * [Azure SQL Database (single database and elastic pool)](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-security-overview#network-security) provides firewalls to prevent network access to the database server until access is explicitly granted based on IP address or Azure Virtual Network traffic origin.
162 | * [Azure SQL Managed Instance](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-managed-instance-connectivity-architecture) has an extra layer of security in providing native virtual network implementation and connectivity to your on-premises environment using [Azure ExpressRoute](https://docs.microsoft.com/en-us/azure/expressroute/) or [VPN Gateway](https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-about-vpngateways).
163 | * [Advanced security](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-security-index) detects threats and vulnerabilities in your databases and enables you to secure your data.
164 | * [Automatic tuning](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-automatic-tuning) analyzes your workload and provides you the recommendations that can optimize performance of your applications by adding indexes, removing unused indexes, and automatically fixing the query plan issues.
165 | * [Built-in monitoring](https://docs.microsoft.com/en-us/azure/log-analytics/log-analytics-azure-sql) capabilities enable you to get the insights into performance of your databases and workload, and troubleshoot the performance issues.
166 | * [Built-in intelligence](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-intelligent-insights) automatically identifies the potential issues in your workload and provides you the recommendations that can [help you to fix the problems](https://azure.microsoft.com/en-us/blog/ai-helped-troubleshoot-an-intermittent-sql-database-performance-issue-in-one-day/).
167 |
168 | > Note: Many benefits typically thought of as Platform as a Service (PaaS) are surfacing in Infrastructure as a Service (IaaS). You can learn more about automated updates, automated backups, high availability, and performance provided in Azure SQL VMs [here](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/sql/virtual-machines-windows-sql-server-iaas-overview).
169 |
170 | In addition to the resources linked to above, several [slide decks](https://aka.ms/azuresqlslides) are available (with notes and animations) that you can review to learn more. You can also check out the [Core Cloud Services - Azure architecture and service guarantees](https://docs.microsoft.com/en-us/learn/modules/explore-azure-infrastructure/) module from Microsoft Learn.
171 |
172 |
173 |
174 |
175 |
176 |
177 | Tailspin Toys has spent some time with you learning more about the benefits of Azure SQL. Based on their research, they've decided to migrate the Tailspin Toys database to Azure as a PoC for migrating larger workloads.
178 |
179 | The general process for [migrating assets to Azure](https://docs.microsoft.com/en-us/azure/architecture/cloud-adoption/getting-started/migrate) (whether it's apps, infrastructure, or data) is as follows:
180 | * **Assess**: Evaluate an existing asset and establish a plan for migration of the asset.
181 | * **Migrate**: Replicate the functionality of an asset in the cloud.
182 | * **Optimize**: Balance the performance, cost, access, and operational capacity of a cloud asset.
183 | * **Secure and manage**: Ensure a cloud asset is ready for ongoing operations.
184 |
185 |
186 | In guiding Tailspin Toys through the *data* migration journey, it's helpful to leverage the following process that is specific to data:
187 | 
188 |
189 | Below you'll find a detailed survey of some of the resources and tips available for going through each phase of the migration journey to Azure (you can find a [full list of tools based on phase and target here](https://docs.microsoft.com/en-us/azure/dms/dms-tools-matrix)). The number of resources shows the dedication Microsoft and partners have to helping you move successfully to the cloud.
190 |
191 | In an effort to simplify, we recommend using the [Data migration guide](https://datamigration.microsoft.com/) which allows you to pick your source and target, and then guides you step-by-step through your specific migration journey.
192 |
193 | Additionally, you can check out the [Azure migration center](https://azure.microsoft.com/en-us/migration/) which includes detailed information about the migration journey, and the [Azure Migrate Program (AMP)](https://azure.microsoft.com/en-us/migration/migration-program/) where you can get support, migration partners, webinars, and more.
194 |
195 | With your help, Tailspin Toys Gaming decided to apply for the Azure Migrate Program, to get support and guidance from Microsoft and partners. Then, they leveraged the integration of Azure Migrate, Data Migration Assistant, and Azure Database Migration Service to migrate their databases.
196 |
197 | Once the Tailspin Toys Gaming division has migrated to Azure, the overall corporation may choose to scale the migration to Azure. In that case, [refer to guidance here](https://docs.microsoft.com/en-us/azure/architecture/cloud-adoption/migrate/azure-best-practices/contoso-migration-scale
198 | ).
199 |
200 |
201 | Below, you'll find a reference chart that explains each step in the three-phase process following the diagram above. Each phase contains steps with descriptions and helpful resources. *This chart is not meant to be consumed in its entirety here, but feel free to follow what is interesting or relevant to your needs, or refer back to it later*.
202 |
203 |
204 | | STAGE | PHASE | DESCRIPTION | RESOURCES |
205 | |----------------|-----------------------------------|----------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
206 | | Pre-migration | Discover | Inventory database assets, and application stack discovery. | [Azure Migrate](https://docs.microsoft.com/azure/migrate/migrate-overview) for managing the whole migration process |
207 | | | Assess | Assess workloads and fix recommendations. | [MAP Toolkit for inventory, assessment, and reporting](https://www.microsoft.com/en-us/download/details.aspx?id=7826) [Data workload assessment model and tool](https://github.com/Microsoft/DataMigrationTeam/tree/master/Data%20Workload%20Assessment%20Model%20and%20Tool) [Database Experimentation Assistant (DEA)](https://www.microsoft.com/en-us/download/details.aspx?id=54090) for upgrades [DMA SKU Recommender](https://docs.microsoft.com/en-us/sql/dma/dma-sku-recommend-sql-db?view=sql-server-2017) for Azure SQL |
208 | | | Convert | Convert the source schema to work in the target environment. This is only relevant for heterogeneous (non-SQL Server) migrations. | [SQL Server Migration Assistant](https://docs.microsoft.com/en-us/sql/ssma/sql-server-migration-assistant?view=sql-server-2017) |
209 | | Migration | Migrate schema, data, and objects | Migrate the source schema, and then migrate the source data to the target. | [Migrate with Azure Database Migration Services (DMS)](https://docs.microsoft.com/en-us/azure/dms/) (pull model) [Migrate to Azure with Data Migration Assistant (DMA)](https://docs.microsoft.com/en-us/sql/dma/dma-migrateonpremsqltosqldb?view=sql-server-2017) (push model) [Online migrations](https://docs.microsoft.com/en-us/azure/dms/tutorial-sql-server-managed-instance-online) with DMS [Offline migrations](https://docs.microsoft.com/en-us/azure/dms/tutorial-sql-server-to-managed-instance) with DMS [Utility](https://github.com/Microsoft/DataMigrationTeam/tree/master/IP%20and%20Scripts/MoveLogins) to move on-premises SQL Server logins to Azure SQL MI [Bulk database creation](https://github.com/Microsoft/DataMigrationTeam/tree/master/Bulk%20Database%20Creation%20with%20PowerShell) with PowerShell [Bulk schema deployment](https://github.com/Microsoft/DataMigrationTeam/tree/master/Bulk%20Schema%20Deployment%20with%20MSSQL-Scripter%20&%20PowerShell) with MSSQL-Scripter and PowerShell [Migrate SSIS](https://docs.microsoft.com/azure/dms/how-to-migrate-ssis-packages) packages to Azure SSRS can be deployed using SQL Server on an Azure VM or rewritten in Power BI Migrate [SSAS to Azure Analysis Services](https://azure.microsoft.com/en-us/resources/videos/azure-analysis-services-moving-models/)|
210 | | | Data Sync | Sync your target schema and data with the source. This is only relevant for minimal-downtime migrations. | [Azure Data Sync](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-sync-data) for syncing data bi-directionally on-prem and in Azure [Transactional replication](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-managed-instance-transactional-replication) for migrations by continuously publishing the changes |
211 | | | Cutover | Cut over from the source to the target environment. This is only relevant for minimal-downtime migrations. | [Cutover with DMS](https://docs.microsoft.com/en-us/azure/dms/tutorial-sql-server-managed-instance-online#performing-migration-cutover) |
212 | | Post-migration | Remediate applications | Iteratively make any necessary changes to your applications. | [Application migration patterns and examples](https://docs.microsoft.com/en-us/azure/architecture/cloud-adoption/migrate/azure-best-practices/contoso-migration-overview) |
213 | | | Perform tests | Iteratively run functional and performance tests. | [Data Quality Solution available from the partner QuerySurge](http://www.querysurge.com/company/partners/microsoft) |
214 | | | Optimize | Based on the tests you performed, address any performance issues, and then retest to confirm the performance improvements. | [Post-migration Validation and Optimization Guide](https://docs.microsoft.com/en-us/sql/relational-databases/post-migration-validation-and-optimization-guide) |
215 |
216 |
217 |
218 |
219 |
220 |
221 |
222 |
223 |
224 |
225 |
226 |
227 |
228 | In this series of hands-on labs (throughout Modules 4 and 5), you will implement a proof-of-concept (PoC) for migrating an on-premises SQL Server 2008 R2 database into Azure SQL Database Managed Instance (SQL MI). You will perform assessments to reveal any feature parity and compatibility issues between the on-premises SQL Server 2008 R2 database and the managed database offerings in Azure. You will then migrate the customer's on-premises gamer information, web application and database into Azure, with minimal to no down-time. Finally, you will enable some of the advanced SQL features available in SQL MI to improve security and performance in the customer's application.
229 |
230 | At the end of these hands-on labs, you will be better able to implement a cloud migration solution for business-critical applications and databases.
231 |
232 | > **Note**: These labs were modified from an existing day-long, hands-on-labs workshop to fit into this workshop. If you'd like to access the extended version of these labs refer to [MCW: Migrating SQL databases to Azure](https://github.com/microsoft/MCW-Migrating-SQL-databases-to-Azure).
233 |
234 |
235 |
236 | ## Solution architecture
237 |
238 | Below is a diagram of the solution architecture that Tailspin Toys decided to go with, and what you will build in this lab. Please study this carefully, so you understand the whole of the solution as you are working on the various components.
239 |
240 | 
241 |
242 | Throughout the solution, you will use [Azure Migrate](https://docs.microsoft.com/en-us/azure/migrate/migrate-services-overview) as the central hub to track the discovery, assessment, and migration of Tailspin Toys. The solution begins with using the [Microsoft Data Migration Assistant](https://docs.microsoft.com/en-us/sql/dma/dma-overview?view=sql-server-2017) to perform assessments of feature parity and compatibility of the on-premises SQL Server 2008 R2 database against both Azure SQL Database (Azure SQL DB) and Azure SQL Database Managed Instance (SQL MI), with the goal of migrating the `TailspinToys` database into an Azure PaaS offering with minimal or no changes. After completing the assessments and reviewing the findings, the SQL Server 2008 R2 database is migrated into SQL MI using the Azure Database Migration Service's online data migration option. This allows the database to be migrated with little to no downtime, by using a backup and transaction logs stored in an SMB network share.
243 |
244 | They'll also leverage their existing licenses to get [Azure Hybrid Benefits](https://azure.microsoft.com/en-us/pricing/hybrid-benefit/), and they'll prepay for [reserved capacity](https://azure.microsoft.com/en-us/blog/announcing-general-availability-of-azure-sql-database-reserved-capacity/
245 | ). This will help them save money from the start.
246 |
247 | The web app is deployed to an Azure App Service Web App using Visual Studio 2019. Once the database has been migrated and cutover, the `TailspinToysWeb` application is configured to talk to the SQL MI VNet through a virtual network gateway using [point-to-site VPN](https://docs.microsoft.com/en-us/azure/vpn-gateway/point-to-site-about), and its connection strings are updated to point to the new SQL MI database.
248 |
249 | >**Note**: Due to time constraints, the lab will deal with switching the app running on a Jumpbox VM locally from leveraging data in SQL Server 2008 to SQL MI (but not the deployment to Azure or integrating the App Service with the Virtual Network). In the [extended version of these labs](https://github.com/microsoft/MCW-Migrating-SQL-databases-to-Azure/blob/master/Hands-on%20lab/HOL%20step-by-step%20-%20Migrating%20SQL%20databases%20to%20Azure.md#exercise-3-update-the-web-application-to-use-the-new-sql-mi-database), or if you have time at the end of the lab, you can do that.
250 |
251 | Once in SQL MI, several features of Azure SQL Database are examined. [Advanced Data Security (ADS)](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-advanced-data-security?view=sql-server-2017) is enabled and [Data Discovery and Classification](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-data-discovery-and-classification?view=sql-server-2017) is used to better understand the data and potential compliance issues with data in the database. The ADS [Vulnerability Assessment](https://docs.microsoft.com/en-us/azure/sql-database/sql-vulnerability-assessment?view=sql-server-2017) is used to identify potential security vulnerabilities and issues in the database, and those finding are used to mitigate one finding by enabling [Transparent Data Encryption](https://docs.microsoft.com/en-us/azure/sql-database/transparent-data-encryption-azure-sql?view=sql-server-2017) in the database. [Dynamic Data Masking (DDM)](https://docs.microsoft.com/en-us/sql/relational-databases/security/dynamic-data-masking?view=sql-server-2017) is used to prevent sensitive data from appearing when querying the database. Finally, [Read Scale-out](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-read-scale-out) is used to point reports on the Tailspin Toys web app to a read-only secondary, allowing reporting, particularly for the Leaderboard statistics page, to occur without impacting the performance of the primary database.
252 |
253 | > **Note:**
254 | > If you are attending this lab as part of a day-long workshop, the activities below should be skipped (they will be demoed in class).
255 |
256 |
257 | Activities
258 |
259 | > **Note:**
260 | > If you are attending this lab as part of a day-long workshop, the activities below should be skipped (they will be demoed in class), but they are available should you want to review them again.
261 |
262 | In these activities, you'll set up Azure Migrate, and explore some of the new integrations between Microsoft's Data Migration Assistant (DMA) and Azure Database Migration Services (DMS). Before you begin the assessments, you need to restore a copy of the `TailspinToys` database in your SQL Server 2008 R2 instance. Finally, you will use the Microsoft Data Migration Assistant (DMA) to perform an assessment of the `TailspinToys` database against Azure SQL Database (Single database and Managed Instance). The assessment will provide a report about any feature parity and compatibility issues between the on-premises database and the various services.
263 |
264 | To complete the activities for this module, proceed directly to the Activities in [**Lab: Database Discovery and Assessment for Migrating to Azure**](https://github.com/microsoft/sqlworkshops-azuresqllabs/blob/master/Lab-DatabaseDiscoveryAndAssessmentForMigratingToAzure.md) for the hands-on exercises for Tailspin Toys Gaming. When are you done with these activities, come back here and continue to Module 5.
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
For Further Study
274 |
286 |
287 |
Next Steps
288 |
289 | Next, Continue to 05 - Migrating to Azure SQL.
--------------------------------------------------------------------------------
/sqlgroundtocloud/05-MigratingToAzureSQL.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Workshop: SQL Ground-to-Cloud
4 |
5 | #### A Microsoft workshop from the SQL Server team
6 |
7 |
8 |
9 |
05 - Migrate to Azure SQL
10 |
11 | In the previous module, you learned about Azure SQL, the benefits, the options, and how to get there. You reviewed how to assess your on-premises estate, and in this module you'll actually migrate to [Azure SQL Database Managed Instance](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-managed-instance).
12 |
13 |
14 | (Make sure you check out the Prerequisites page before you start. You'll need all of the items loaded there before you can proceed with the workshop.)
15 |
16 | In this module, you will use the [Azure Database Migration Service](https://azure.microsoft.com/services/database-migration/) (DMS) to migrate the `TailspinToys` database from the on-premises SQL 2008 R2 database to SQL MI. At the end of the module, you'll also explore some of the security and performance features available. The activities in this module include:
17 |
18 | [5.1](#5.1): Migrate the database to SQL Managed instance
19 | [5.2](#5.2): Improve database security with Advanced Data Security (*Bonus*)
20 | [5.3](#5.3): Use online secondary for read-only queries (*Bonus*)
21 | [5.4](#5.4): After the Migration
22 |
23 | > **Note**:
24 | > This module is mainly guided labs. Proceed as instructed in each section. You may not have the time or desire to complete 5.2 and 5.3. They are optional, supplementary sections you can review at the end or at a later time.
25 |
26 |
27 |
28 |
29 |
30 |
31 | In this section, you will use the [Azure Database Migration Service](https://azure.microsoft.com/services/database-migration/) (DMS) to migrate the `TailspinToys` database from the on-premises SQL 2008 R2 database to SQL MI. Tailspin Toys mentioned the importance of their gamer information web application in driving revenue, so for this migration you will target the [Business Critical service tier](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-service-tier-business-critical).
32 |
33 | > The Business Critical service tier is designed for business applications with the highest performance and high-availability (HA) requirements. To learn more, read the [Managed Instance service tiers documentation](https://docs.microsoft.com/azure/sql-database/sql-database-managed-instance#managed-instance-service-tiers).
34 |
35 | This is the longest exercise in the module, so take your time (estimate about 30-45 minutes).
36 |
37 | First, you will create a new SMB network share on the SqlServer2008 VM. This will be the folder used by DMS for retrieving backups of the `TailspinToys` database during the database migration process. Next, you will use the SQL Server Configuration Manager to update the service account used by the SQL Server (MSSQLSERVER) to the `sqlmiuser` account. This is done to ensure the SQL Server service has the appropriate permissions to write backups to the shared folder.
38 |
39 | You'll then use the Azure Cloud shell to retrieve the information necessary to connect to your SQL MI and SqlServer2008 VM from DMS. You will also use the Azure Cloud Shell to create an Azure Active Directory (Azure AD) application and service principal (SP) that will provide DMS access to Azure SQL MI. You will grant the SP permissions to the hands-on-lab-SUFFIX resource group.
40 |
41 | Now that your environment is prepared, you can create a new online data migration project in DMS and migrate the `TailspinToys` database. Since you perform the migration as an "online data migration," the migration wizard will continue to monitor the SMB network share for newly added log files. This allows for any updates that happen on the source database to be captured until you cut over to the SQL MI database. You'll then add a record to one of the database tables, backup the logs, and complete the migration of the `TailspinToys` database by cutting over to the SQL MI database. You will then be able to connect to the SQL MI database using SSMS, and quickly verify the migration.
42 |
43 | With the `TailspinToys` database now running on SQL MI in Azure, the next step is to make the required modifications to the TailspinToys gamer information web application.
44 |
45 |
46 |
47 |
48 |
Activities
49 |
50 | Complete activities 1-9 by following the links below. Once you're in Activity 1, you can continue to the next activity through Activity 9 (the links below all point to different parts of the same overall lab). When are you done with activities 1-9, come back here for the next section (5.2).
51 |
52 | > **Note**:
53 | > If you were provided an environment to do this workshop, you should review Activities 4 and 5, but a service principal has already been created (no action required).
54 |
55 | Activity 1: Create an SMB network share on the SQLServer2008VM
56 |
57 | Activity 2: Change MSSQLSERVER service to run under sqlmiuser account
58 |
59 | Activity 3: Create a backup of TailspinToys database
60 |
61 | Activity 4: Retrieve SQL MI, SQL Server 2008 VM, and service principal connection information **(review only - no action needed)**
62 |
63 | Activity 5: Create a service principal **(review only - no action needed)**
64 |
65 | Activity 6: Create and run an online data migration project
66 |
67 | Activity 7: Perform migration cutover
68 |
69 | Activity 8: Verify database and transaction log migration
70 |
71 | Activity 9: Update the application
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 | [Advanced Data Security](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-advanced-data-security) is a unified package for advanced SQL security capabilities. It includes functionality for discovering and classifying sensitive data, surfacing and mitigating potential database vulnerabilities, and detecting anomalous activities that could indicate a threat to your database. It provides a single go-to location for enabling and managing these capabilities.
80 |
81 | In this exercise, you'll enable Advanced Data Security, configure Data Discovery and Classification, and review the Vulnerability Assessment. At the end, you'll also receive a pointer to a Dynamic Data Masking lab extension.
82 |
83 |
84 |
Activities
85 |
86 | Complete activities 1-3 by following the links below. Once you're in Activity 1, you can continue to the next activity through Activity 3 (the links below all point to different parts of the same overall lab). When are you done with activities 1-3, come back here for the next section (5.3).
87 |
88 |
89 | Activity 1: Enable Advanced Data Security
90 |
91 | Activity 2: Configure SQL Data Discovery and Classification
92 |
93 | Activity 3: Review Advanced Data Security Vulnerability Assessment
94 |
95 |
96 |
97 |
98 | In this exercise, you will look at how you can use the automatically created online secondary for reporting, without feeling the impacts of a heavy transactional load on the primary database. Each database in the SQL MI Business Critical tier is automatically provisioned with several AlwaysON replicas to support the availability SLA. Using [**Read Scale-Out**](https://docs.microsoft.com/azure/sql-database/sql-database-read-scale-out) allows you to load balance Azure SQL Database read-only workloads using the capacity of one read-only replica.
99 |
100 |
Activities
101 |
102 | Complete activities 1-3 by following the links below. Once you're in Activity 1, you can continue to the next activity through Activity 3 (the links below all point to different parts of the same overall lab). When are you done with activities 1-3, come back here for the next section (5.4).
103 |
104 | Activity 1: View Leaderboard report in Tailspin Toys web application
105 |
106 | Activity 2: Update read only connection string
107 |
108 | Activity 3: Reload leaderboard report in the Tailspin Toys web application
109 |
110 |
111 |
112 |
113 |
114 | In this module, you used the [Azure Database Migration Service](https://azure.microsoft.com/services/database-migration/) (DMS) to migrate the `TailspinToys` database from the on-premises SQL 2008 R2 database to SQL MI. You then updated the web application to use the SQL MI created, and enabled [advanced security features](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-advanced-data-security). Finally, you set up your application to leverage the [online secondary replica](https://docs.microsoft.com/en-us/azure/sql-database/sql-database-read-scale-out) to handle heavy read workloads.
115 |
116 | Now that Tailspin Toys has completed a migration for their gaming database. They'll want to leverage the [post-migration validation and optimization guide](https://docs.microsoft.com/en-us/sql/relational-databases/post-migration-validation-and-optimization-guide?view=sql-server-2017) to ensure data completeness and uncover and resolve performance issues.
117 |
118 | If and when Tailspin Toys chooses to scale their migration to other instances and databases, they can leverage the same process you've seen in Modules 4 and 5, but should also refer to the guidance Microsoft provides on [scaling a migration to Azure](https://docs.microsoft.com/en-us/azure/architecture/cloud-adoption/migrate/azure-best-practices/contoso-migration-scale).
119 |
120 |
121 |
122 |
For Further Study
123 |
124 | - Microsoft Hands On Labs offers free self-paced lab environments as well as a request form for instructor led lab environments. As of last update, there are about eight labs available around Azure SQL (assessment, migration, app innovation, row level security, managed instance, and more).
125 | - Microsoft Demos is similar to Hands On Labs, but offers easy to set up demos that are free for certain internals and partners. As of last update, there are about seven demos available around Azure SQL.
126 | - Azure Database Migration Guide contains lots of resources that will help in guiding and supporting database migrations to Azure.
128 | - The Azure Architecture Documentation contains many migration patterns as well as full code samples, scenarios, and guidance about how to migrate on-prem estates. There are useful, detailed scenarios about rehosting to SQL MI and SQL VMs, as well as guidance of how to scale a migration, after you've done a PoC.
130 | - MCW: Migrating SQL Databases to Azure contains extended labs from what you've seen in Modules 4 and 5. There is an opportunity to see how the networking was configured, and deeper dives around the network and setup.
132 | - How to Deploy an Azure Infrastructure and Best Practices for setting up networking are also two very useful resources when moving to Azure.
135 | - Best practices for costing and sizing workloads migrated to Azure
137 | - Best practices for securing and managing workloads migrated to Azure
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
147 |
148 |
149 |
150 |
151 |
Next Steps
152 |
153 | Next, Continue to 06 - What to Use When.
--------------------------------------------------------------------------------
/sqlgroundtocloud/06-WhatToUseWhen.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | # Workshop: SQL Ground-to-Cloud
4 |
5 | #### A Microsoft workshop from the SQL Server team
6 |
7 |
8 |
9 |
06 - What to Use When: Designing a Solution
10 |
11 | In this workshop you have covered using SQL Server both on-premises and in-cloud configurations, as well as hybrid applications as a solution for data processing. The end of this Module contains several helpful references you can use in these exercises and in production.
12 |
13 | This module can be used stand-alone, and does not require any prerequisite other than a laptop and some sort of design software (such as Microsoft Visio) - although you may also just use a whiteboard or paper for your design.
14 |
15 | There are many elements in a single solution, and in this module you'll learn how to take the business scenario and determine the best resources and processes to use to satisfy the requirements while considering the constraints within the scenario.
16 |
17 | In production, there are normally 6 phases to create a solution. These can be done in-person, or through recorded documents:
18 |
19 | - 01 **Discovery**: The original statement of the problem from the customer
20 | - 02 **Envisioning**: A "blue-sky" description of what success in the project would look like. Often phrased as *"I can..."* statements
21 | - 03 **Architecture Design Session**: An initial layout of the technology options and choices for a preliminary solution
22 | - 04 **Proof-Of-Concept** (POC): After the optimal solution technologies and processes are selected, a POC is set up with a small representative example of what a solution might look like, as much as possible. If available, a currently-running solution in a prallel example can be used
23 | - 05 **Implementation**: Implementing a phased-in rollout of the completed solution based on findings from the previous phases
24 | - 06 **Handoff**: A post-mortem on the project with a discussion of future enhancements
25 |
26 | Throughout this module, you can use various templates, icons, stencils and other assets to assist you with each phase and also use these with your exercises. These assets can also be used in your production workloads: https://github.com/microsoft/sqlworkshops/tree/master/ProjectResources
27 |
28 | For this module, you'll focus on the Discovery and the Architecture Design Session phases only. If you wish to develop your solution further after the course, you can use the assets above to complete all phases.
29 |
30 |
31 |
32 |
6.1 Understand the Problem Space
33 |
34 | The first step in any project is to fully understand the problem the company needs to solve, and any requirements and constraints they have on those goals. This is often in the form of a "Problem Statement", which is a formal set of paragraphs clearly defining the circumstances, present condition, and desired outcomes for a solution. At this point you want to avoid exploring how to solve the problem, and focus on what you want to solve.
35 |
36 | Begin with as complete an examination of the company and organization as you can. Gather information from as many sources as possible, and simplify the descriptions to have specific measurements and depictions of the environment.
37 |
38 | From there, lay out the problem, and then review that with all stakeholders.
39 |
40 | After everyone agrees on the problem statement, pull out as many requirements (*goals*) for the project as you can find, and then lay in any constraints the solution has. At this point, it's acceptable to have unrealistic constraints - later you can pull those back after showing a cost/benefit ratio on each requirement and constraint.
41 |
42 |
Activity: Review Business Scenarios
43 |
44 | In this activity you will review three business scenarios, and pick one to focus on for the rest of this module. The company descriptions, project goals, and constraints have already been laid out for you.
45 |
46 | After you make your choice, copy the problem statement into your working documents (see the [Resources](https://github.com/microsoft/sqlworkshops/tree/master/ProjectResources) for examples) and make any changes or additions you want to make to the scenario. Feel free to adapt it to have more information where you want clarity - you can make assumptions about any part of the scenario. Are there sub-goals that have been left out? Any other constraints you can think of?
47 |
48 |
49 |
50 | 
51 |
52 | **AdventureWorks**
53 |
54 | [Adventure Works Cycles](https://docs.microsoft.com/en-us/previous-versions/sql/sql-server-2008/ms124825(v=sql.100) ) is a large, multinational manufacturing company. The company manufactures and sells metal and composite bicycles to North American, European and Asian commercial markets. While its base operation is located in Bothell, Washington with 290 employees, several regional sales teams are located throughout their market base.
55 |
56 | Starting in the year 2000, Adventure Works Cycles bought a small manufacturing plant, Importadores Neptuno, located in Mexico. Importadores Neptuno manufactures several critical subcomponents for the Adventure Works Cycles product line. These subcomponents are shipped to the Bothell location for final product assembly. In 2001, Importadores Neptuno, became the sole manufacturer and distributor of the touring bicycle product group.
57 |
58 | Coming off a successful fiscal year, Adventure Works Cycles is looking to broaden its market share by targeting their sales to their best customers, extending their product availability through an external Web site, and reducing their cost of sales through lower production costs. They are also looking to modernize their data estate.
59 |
60 | Project Goals
61 |
62 | - Modernize to a newer SQL version
63 | - Move to Cloud wherever possible
64 | - Cloud Integration
65 | - Increase Performance
66 | - Publish Product Catalog to the Web
67 | - Enable Business-To-Business (B2B) systems
68 |
69 | Project Constraints
70 |
71 | - Some systems must stay on-premises
72 | - In some cases, no code change is possible
73 | - The B2B system should be a "Pull" from partners
74 |
75 |
76 |
77 | 
78 |
79 | **Contoso**
80 |
81 | [The Contoso company](https://docs.microsoft.com/en-us/microsoft-365/enterprise/contoso-overview) is a multi-national business with headquarters in Paris, France. It is a conglomerate manufacturing, sales, and support organization with over 100,000 products. They are embarking on a multi-year process of migrating from company-owned datacenters to a cloud provider. They have narrowed the list of potential vendors to three, including Microsoft. They have [high security](https://docs.microsoft.com/en-us/microsoft-365/enterprise/contoso-info-protect) and [interoperability with mobile device](https://docs.microsoft.com/en-us/microsoft-365/enterprise/contoso-mdm) concerns. There is also an Open-Source (OSS) investigation at the company.
82 |
83 |
84 | Project Goals
85 |
86 | - Move everything to Cloud
87 | - Multi-Cloud strategy desired - standards-based
88 | - All client apps should be available worldwide
89 | - Server-side should be API's by default
90 | - Interest in parity for platforms (OSS Support)
91 |
92 | Project Constraints
93 |
94 | - High Security and Auditing capabilities required
95 | - International Compliance required
96 | - Access Tracking required
97 | - Must be user-friendly on mobile devices
98 |
99 |
100 |
101 |
102 |
103 | 
104 |
105 | **Wide World Importers**
106 |
107 | [Wide World Importers](https://docs.microsoft.com/en-us/sql/samples/wide-world-importers-what-is?view=sql-server-2017) (WWI) is a wholesale novelty goods importer and distributor operating from the San Francisco bay area in the United States.
108 |
109 | As a wholesaler, WWI's customers are mostly companies who resell to individuals. WWI sells to retail customers across the United States including specialty stores, supermarkets, computing stores, tourist attraction shops, and some individuals. WWI also sells to other wholesalers via a network of agents who promote the products on WWI's behalf. While all of WWI's customers are currently based in the United States, the company is intending to push for expansion into other countries.
110 |
111 | WWI buys goods from suppliers including novelty and toy manufacturers, and other novelty wholesalers. They stock the goods in their WWI warehouse and reorder from suppliers as needed to fulfil customer orders. They also purchase large volumes of packaging materials, and sell these in smaller quantities as a convenience for the customers.
112 |
113 | Recently WWI started to sell a variety of edible novelties such as "chili chocolates". The company previously did not have to handle chilled items. Now, to meet food handling requirements, they must monitor the temperature in their chiller room and any of their trucks that have chiller sections.
114 |
115 | Project Goals
116 |
117 | - Enable Big Data processing
118 | - Enable Machine Learning and Artificial Intelligence prediction capabilities
119 | - Cloud platform desired, but may need to consider on-premises options
120 |
121 | Project Constraints
122 |
123 | - Short timeframe
124 | - Unknown Data Sources
125 | - Use only API calls for the predictions
126 |
127 |
128 |
129 |
6.2 Understand the Technologies and Processes for Solving the Problem
130 |
131 | With a firm understanding of what the customer needs, you can now consider the technologies and processes at your disposal for the solution. Each technology will have benefits and considerations, so at this point you just want to list out all of your options. Everything is on the table at this phase, and ensure that you check the list you create with other professionals to ensure you have considered everything that could solve the problem.
132 |
133 |
Activity: List the Technologies and Processes for the Problem Space
134 |
135 | In this activity you will list out all of the options you have for your problem space.
136 |
137 |
Steps
138 |
139 | - Open your Architecture Design Session (ADS) document and detail all technologies you have studied in this workshop, and list them out. (Order is not important during this step)
140 | - Next, write the problem element next to each technology that it could solve
141 | - Document any processes you should follow when using each technology
142 |
143 |
144 |
145 |
6.3 The Decision Matrix
146 |
147 | Following the process, you now know the problems you want to solve, the desired outcomes for the solution, and several tools and technique options that you can use to achieve your goals. In most situations, there are several ways to solve a given problem. Sometimes the "best" solution is too costly, inconvenient or unworkable due to the requirements or constraints the customer puts on the solution.
148 |
149 | Because most solutions are fairly complex, and there are mutiple technology and process choices, considerations and requirements, a *Decision Matrix* that lists these elements is useful. It contains columns for the technology and process options you have, and the requirements and constraints as rows. Each column gets a score you assign from a low number (does not meet this requirement) to a higher one (does meet the requirement). These numbers are summed at the end of each row, per requirement. The highest number is usually the best technology for that aspect of the solution.
150 |
151 | As an example, assume you have an application that is written using T-SQL statements, and you want to store data that has high security requirements and is available online:
152 |
153 |
154 | Requirement/Constraint | SQL Server in Azure VM | Azure SQL DB | Postgres as a Service |
155 | Low Cost | 2 | 3 | 3 |
156 | Easy to Manage | 2 | 3 | 3 |
157 | Highly Securable | 3 | 3 | 2 |
158 | Fully Supports T-SQL | 3 | 3 | 0 |
159 | | | | |
160 | Score: | 10 | 12 | 8 |
161 |
162 |
163 | In this simple example, Azure SQL DB is a high candidate for your solution. (In production, there would be far more requirements and constraints, and you may need to use a 1-5 scale rather than 1-3)
164 |
165 |
Activity: Create a Decision Matrix
166 |
167 | In this activity you will use the scenario you selected from above and create a Decision Matrix using a spreadsheet.
168 |
169 |
Steps
170 |
171 | - [Open this reference and read through it](https://www.smartsheet.com/decision-matrix-templates).
172 | - Create a spreadsheet for your Decision Matrix, or download one of the samples from the reference.
173 | - Fill out the Decision Matrix based on the problem requirements and constraints using the technologies and processes you developed in the previous steps
174 |
175 |
176 |
177 |
6.4 Explain the Solution
178 |
179 | The architecture design session above is most often conducted by the technical staff with representation from the business. After the design session is complete, the findings should be condensed into an instrument (slides, notes or other graphics tool) that allow the team to explain the proposal along with a set of options. At the end of the presentation, your team should also include a description of the project, timelines, and responsibilities.
180 |
181 |
Activity: Create a Solution Presentation
182 |
183 | In this activity your team will create a solution briefing with options and timelines.
184 |
185 |
Steps
186 |
187 | - Open this reference: https://github.com/microsoft/sqlworkshops/tree/master/ProjectResources
188 | - You may use the PowerPoint template provided (6 - Handoff.pptx) or create your own briefing tool, using anything you like.
189 | - Make sure you include at least one alternative option and explain why you chose your original one.
190 | - If time permits, review the schedule documents in the Resources area and assign reasonable timelines to your soluition.
191 |
192 |
193 |
194 |
References
195 |
196 |
207 |
208 |
225 |
226 |
227 | Congratulations! You have completed this workshop on "SQL Ground-to-Cloud". You now have the tools, assets, and processes you need to extrapolate this information into other applications.
--------------------------------------------------------------------------------