SQL Server On Linux: A Guide To Re-platforming And Modernizing Your .

Transcription

SQL Server e-book seriesSQL Server on Linux:A guide to re-platformingand modernizing yourdata workloads

201 /02 /03 /An overview of SQL Serveron LinuxGetting the most out of SQLServer on LinuxTools and management04 /05 /Tools and services formigrations and upgradesConclusion

3Who shouldread this e-book?This e-book is for database architects,administrators, and developers looking formore flexibility, better performance, andincreased security with their data platform.By reading this e-book, you’ll learn howSQL Server on Linux enables you to harnessthe latest capabilities of SQL Server on yourchoice of platform—not only Windowsand Linux, but containers, too. This e-bookcovers preparing your Linux system forSQL Server installation, managing a mixedenvironment, and migrating your existingdata and databases into SQL Server onLinux—with technical details on how to putthese procedures into practice.

An overview of SQL Server on LinuxAn overviewof SQL Serveron Linux“With SQL Server onLinux, data and analyticsleaders now have achoice of operatingsystems, and willincreasingly choose SQLServer on Linux, ratherthan rival products, foran array of use cases.”Source: Gartner’s Microsoft DBMS Buyers Benefitfrom SQL Server on Linux Four Ways.Innovation and modernization starts withyour data platform. At the same time, asdata platforms transform and branch out,identifying the best platform for pushingyour work forward can be a formidabletask. Customers are increasinglydemanding more flexibility when it comesto their choice of platform, programminglanguages, and infrastructure so they’reable to get the maximum impact fromtheir data estate. Flexibility with your dataplatform enables you to build intelligentapplications with any data and languageon any operating system and in the cloud.Achieving this goal, however, dependsupon a modern data estate solution thatcan solve the issues of managing thediverse data and the associated needs.Microsoft is committed to providinga high-quality, enterprise-leveldatabase platform that enables youto choose the best operating systemor combination of operating systemsfor your environment—whether thatenvironment’s preferred operating systemis open source, proprietary, or a mixtureof both. The deployment options for SQLServer, which was traditionally previouslyon Windows only, have now expanded toLinux and containers platforms.4

An overview of SQL Server on LinuxSQL Server 2017 continues the evolutionof SQL Server on the platform of yourchoice, improving and enhancing datamanagement and data-driven applicationsthrough new capabilities and support formore Linux distributions, including Red HatEnterprise Linux (RHEL), Ubuntu, and SUSEEnterprise Linux (SLES), as well as containerplatforms like Docker and Kubernetes.Companies can deploy on the platform—or combination of platforms—that makesthe most sense for their business. Thesame is true for programming languages,too. Companies using Oracle, PostgreSQL,DB2, Sybase, and other systems runningon Linux can now migrate to the SQLServer 2017, an industry-leading RelationalDatabase Management System (RDBMS),and use the operating system of theirchoice without the requirement to installWindows Server operating system.Engineers who are most comfortable withC#, Java, Ruby, or another coding languagecan build apps using the best languageand platform for the job, and then host theapps on any cloud provider or on-premisesserver that suits their needs using SQLServer 2017.SQL Server 2017 is engineered to handlerelational and non-relational data, graphdata coming from diverse data sources, and5run any type of application including opensource applications. In this e-book, you’llget an operational view of this RDBMS,with a focus on leveraging SQL Servercapabilities to deliver powerful insightsin ways that open-source developersand IT specialists need and expect. Inaddition to now-standard features likeadvanced analytics and end-to-endbusiness intelligence, SQL Server 2017provides in-memory performance acrossworkloads, mission-critical high availability,and unparalleled security features andcompliance with privacy regulations suchas GDPR, PCI, and HIPAA to protect yourdata at rest and in motion—all on yourchoice of language and platform.Choice across platformsSQL Server on Windows and Linux share acommon code base. That is, the SQL Servercore engine hasn’t been changed to allowit to run on Linux. SQL Server introduceda Platform Abstraction Layer (SQLPAL)that’s responsible for abstraction of callsand communication between SQL Serverand the underlying operating system. Thehost extension is simply a native Linuxapplication. Low-level operating systemsfunctions are native calls to optimize theinput/output (I/O), memory, and CPUusage. When the host extension starts, it

An overview of SQL Server on Linuxloads and initializes SQLPAL, which thenbrings up SQL Server. SQLPAL launchsoftware isolates processes that are merelya collection of threads and allocations,providing the required translation for therest of the code.Adding this new layer to the SQL Serverarchitecture means that the sameenterprise-level core features and benefitsthat have made SQL Server so powerful onWindows are available to users regardlessof which OS the customer is using forSQL Server.The response to this data platformevolution has been clear: customers areshowing confidence in using SQL Server tomanage their mission-critical data. Industryanalysts have also responded positively.For example, Gartner has rated Microsoftas a leader with the most complete visionand highest ability to execute on anyoperational database management systemfor two consecutive years.1 With Linux andcontainer support, SQL Server 2017 nowprovides the same full-featured databaseengine on any platform with enterprisegrade capabilities. You can run SQL Server2017 smoothly on Linux environments,which in turn offer integration with yourexisting SQL Server deployments.6Linux processSQLPAL managedSoftware-isolated processSQLServerWindows calls(1200 )SQLPALABI calls (50)Linux host extensionLinux OS callsLinux OSIt’s not just Linux—SQL Server cannow also run on Docker supported byWindows, Linux, and macOSA Linux-based container can be deployedto any Linux machine (physical or virtual)running Docker and be expected to runwithout changes to the host operatingsystem. With support for containers, SQLServer can run in container orchestration¹ The complete Gartner document is available on Microsoft. Gartner doesnot endorse any vendor, product, or service depicted in its research publications, and does not advise technology users to select only those vendorswith the highest ratings or other designation. Gartner research publications consist of the opinions of Gartner’s research organization and shouldnot be construed as statements of fact. Gartner disclaims all warranties,expressed or implied, with respect to this research, including any warranties of merchantability or fitness for a particular purpose.

An overview of SQL Server on Linuxsolutions such as Docker Swarm, Red HatOpenShift, Kubernetes, and MicrosoftAzure Container Services (AKS). With theManagement Pack for SQL Server on Linux,administrators can use the System CenterOperations Manager to monitor everythingfrom the hardware up to the databaseengine instances and individual databases.Similarly, Docker Community Edition (CE)for Mac enables developers to run Linuxcontainers on macOS.SQL Server also supports installationon Windows containers. One of thekey benefits of using containers in thedevelopment process is the ability towork in various environments. With SQLServer running in a container, applicationdevelopers can make the database adependency for the application. Withcontainers, development teams can work indev/test environments that are functionallyidentical to production environments. Inaddition, container orchestration solutionscan manage the deployment of containersautomatically, aiding the automation oftesting and deployment.Customer story:Convergent Computing(CCO), a strategy andtechnology consulting firm,has reduced costs by 80percent and achieved returnon investment (ROI) in lessthan eight-and-a-half monthsafter shifting their databasesto SQL Server 2017 on bothLinux and Windows.7

An overview of SQL Server on LinuxSometimes evenfaster on Linux“SQL Server 2017 onRHEL delivers betterresults than the previousnumber 1 non-clusteredTPC-H@1000GB resultfor SQL Server 2016Enterprise Edition onWindows.”ff 6 percent higher performanceff 5 percent lower price/performanceSource: Microsoft, Red Hat, and HPE CollaborationDelivers Choice & Value to Enterprise Customers8Industry-leading performanceSQL Server 2017 performance featureson Linux provide similar impact. SQLServer delivers the same—and sometimeseven better—performance for bothonline transaction processing (OLTP) andanalytic workloads on Linux deployments.It’s the same SQL Server: all the corerelational databases, investments made incolumnstore, and In-Memory OLTP workingacross both deployments. SQL Server 2017owns a world-record 1 TB TPC-H benchmarkresult (non-clustered) for SQL Server onRHEL.1 SQL Server on Linux can meet therequirements of the most demandingtransaction processing applications, andMicrosoft has worked closely with severalcompanies to prove these gains. Microsoftalso offers SQL Server 2017 Data WarehouseFast Track Reference Architectures forLinux to help companies build enterprisedata warehouse solutions. The Fast Trackprogram uses the core capabilities ofSQL Server on Windows or Linux serversto deliver a balanced symmetric multiprocessing (SMP) data warehouse withoptimized performance.TPC. “TPC-H Result Highlights HPE Proliant DL380 Gen9.” March 2017.http://www.tpc.org/33271

An overview of SQL Server on LinuxOpen-source pricingOf course, your databases and the datathat’s within them are priceless. But thatdoesn’t mean that you should be requiredto break the bank to work with your data.With SQL Server 2017 on Linux, it’s possibleto realize a lower total cost of ownership(TCO) and quicker return on investment(ROI) than if you choose a competingvendor. Required capabilities and featuresare built into SQL Server on Linux, includingin-memory capabilities, security, datawarehousing, and high availability/disasterrecovery (HADR) at no extra cost.Avoiding extra licenses, training time, andhardware costs will ensure your initialinvestment in SQL Server pays off.Customer story:Ajilius, an Australian startup,migrated its PostgreSQLsystem to SQL Server onthe Linux data platform,resulting in accelerateddevelopment and costsavings. This new platformis easier to administer andhosting expenses are downby 30 percent. Plus, theycan use SQL Server built-incapabilities to help boostquery performance, improvesecurity, and increaseavailability.9

An overview of SQL Server on LinuxDiscover more options with SQL Serveron LinuxBy bringing SQL Server to Linux,Microsoft continues to embrace opensource solutions. It represents a majorstep for Microsoft toward making SQLServer a platform that offers choices fordevelopment languages, data types, andoperating systems on-premises or in thecloud. With SQL Server 2017 on Linux, you’llget more options—backed by Microsoftsupport and trust. These options includeSQL Server 2017 Express, which is availablefor free and can help you start developingfast and intelligent applications withbuilt-in security right away. Dependingon your scalability and high availabilityrequirements, you can also choose SQLServer 2017 Standard or Enterprise. Any ofthese editions enable you to develop onceand deploy anywhere through SQL Server’sconsistent programming surface areaacross advanced security and performancefeatures, regardless of size.“ SQL Server is the numberone database in the world,and it’s easy to work withand administer. Ninety-ninepercent of BI tools on themarket integrate with SQLServer straightaway, and itprovides excellent standardsfor security, high availability,and disaster recovery. Thereare also resources galoreincluding books, forums,and consultants. Today,SQL Server on Linux is ourprimary platform.”- Ron Dunn, Lead Developer, Ajilius10

Getting the most out of SQL Server on LinuxGetting the mostout of SQL Serveron Linux11Although SQL Server 2017 has beenengineered to deliver the same highquality experience as its Windows-basedcounterpart, there are certain things youcan do to prepare your Linux system tobest support your business goals. Whetherthose goals center on performance, highavailability, graph databases, or security,these planning considerations will help youget the most out of SQL Server on Linux.

Getting the most out of SQL Server on LinuxYou can install SQL Server on Linux fromthe command line by installing the mssqlserver package and running mssql-confsetup. Below are the sample steps forinstalling SQL Server 2017 on RHEL.//Download the Microsoft SQL Server RedHat repository configuration filesudo curl -o // install SQL Serversudo yum install -ymssql-server.// run the mssql-conf setupsudo /opt/mssql/bin/mssql-conf setupFor guidance on installing SQL Server onUbuntu and SUSE Linux Enterprise Server,see the QuickStart guides: Install SQLServer and create a database on Ubuntu,Install SQL Server and create a databaseon SUSE Linux Enterprise Server. To runthe SQL Server 2017 container imagewith Docker, you need to pull and runthe mssql-server-linux container image.For details on how to do this, see theQuickStart guide to Run the SQL Server2017 container image with Docker.12Performance optimizationTo optimize SQL Server performance,there are various best practices for disklayout design that apply on Linux andWindows. For example, disk stripingenables you to add additional data disksin your environment for your log, data,and tempdb files. With disk striping, youcan then mount these files and configuretempdb, transaction logs, and data filesto stripe the I/O across disks. With diskstriping, you can segment a single largerdisk into multiple smaller disks to optimizethe I/O operations per second (IOPS).You can analyze the number of IOPSmeasurements and bandwidth required forthe associated data disks.Use Master;GOALTER DATABASE tempdb MODIFY FILE (NAME tempdev, FILENAME ‘/var/opt/mssq1/data/tempdb01/tempdb01.mdf’, SIZE - 1024,FILEGROWTH 8192 KB) ;GOALTER DATABASE tempdb MODIFY FILE (NAME templog, FILENAME — , SIZE 1024KB , FILEGROWTH 8192KB );GO

Getting the most out of SQL Server on LinuxHere are some other best practices andpost-installation options that can helpyou maximize performance for databaseapplications that connect to SQL Serveron Linux:ff To maintain efficient Linux andSQL Scheduling behavior, it’srecommended to use the ALTERSERVER CONFIGURATION commandto set PROCESS AFFINITY for all theNUMANODEs and/or CPUs.ff To reduce the risk of tempdbconcurrency slowdowns in highperformance environments,configure multiple tempdb filesaccording to guidelines foundthrough Microsoft Support. Theautomatic tempdb configurationfeature introduced in SQL Server2016 doesn’t offer an option toconfigure multiple tempdb fileswhen installing SQL Server on Linux.However, additional tempdb filescan be added using the ADD FILETransact-SQL (T-SQL) command.ff If you plan to use In-Memory OLTPin SQL Server 2017, you must ensureyour database compatibility level isat 140 (SQL Server 2017). Be awarethat if you’ve upgraded from aprevious version, the compatibilitylevel may not have been changed.13Check the compatibility level of yourdatabase using the following T-SQLcommand:ALTER DATABASE YourDBNameSET COMPATIBILITY LEVEL 140;GOMemory configuration settingsff Use mssql-conf to configure thememory limit and ensure there’senough free physical memory for theLinux operating system.Linux OS configuration settingsff On multi-node Non-UniformMemory Access (NUMA) installations,auto NUMA balancing needs tobe disabled to allow SQL Server tooperate at maximum efficiency on aNUMA system.sysctl -w kernel.numa balancing 0ff You can also change the kernelsettings value for virtual addressspace to 256K, as the default valueof 65K may be insufficient for a SQLServer installation.sysctl -w vm.max map count 262144ff Use the noatime attribute to disablelast accessed timestamps with anyfile system that is used to store SQLServer data and log files.

Getting the most out of SQL Server on Linuxff For the most consistent performanceexperience, you must leave theTransparent Huge Pages (THP) optionenabled. In most cases this is enabledby default.ff Virtual machine (VM) features likeHyper-V Dynamic Memory shouldn’tbe used with SQL Server installations.When using VMs, be sure to assignsufficient fixed-memory sizes.For details on enabling some of theperformance features of SQL Server onLinux, such as how to create columnstoreindexes or configuration for In-MemoryOLTP, see Walkthrough for the performancefeatures of SQL Server on Linux.High-availability configurationsSQL Server 2017 empowers you to improvehow you use your resources on Windowsand Linux platforms, boosting missioncritical uptime, failover, and manageabilitythrough high availability. It enablesvarious HADR scenarios—Always OnFailover Cluster Instances (FCIs), AlwaysOn Availability Groups, and log shipping—that can help your organization achievea wide range of availability service-levelagreements (SLAs).High Availability with Always OnFailover Cluster InstancesHere are features that you’ll want to beaware of while setting up FCIs on Linux:Clustering. The clustering layer ismanaged by the cluster controllerPacemaker, which coordinatescommunications and resourcemanagement. On RHEL, it’s providedby the RHEL High Availability Add-On.On SLES, the necessary packages areprovided by the SUSE Linux EnterpriseHigh Availability Extension (HAE).Number of instances and nodes. ALinux-based FCI can have only have asingle instance—that is, only one instanceof SQL Server per Linux server unlessyou’re using containers.IP Address and hostname. Each SQLServer instance requires its own IPaddress and hostname. These are usedinternally by Pacemaker to communicatewith specific instances. Pacemaker setupincludes the creation of a virtual resourcewith its own IP, allowing applicationsto connect to data without needing toidentify cluster-internal resources.14

Getting the most out of SQL Server on LinuxShared storage. All FCIs on Linux orWindows Server require some form ofshared storage. The options available forshared storage on Linux are iSCSI andNetwork File System (NFS), and ServerMessage Block (SMB) on Windows Server.In a configuration that spans multiplelocations, data stored in one datacentermust be synchronized across locations. Fordefault user data and log file locations, thesystem databases must always exist at /var/opt/mssql/data for all instances.FCI resource group. The FCI on Linuxnodes must be created in a resource group.You can create the FCI resource using thepcs resource command. After ensuring thatthe FCI is online, you can issue the normalSQL statements using SSMS or sqlcmd.sudo pcs resource create FCIResourceNameocf:mssql:fci op defaults timeout 60s--group RGNameFor further guidance on how to createa SQL Server FCI on Linux, see Microsoftdocumentation.High availability with Always OnAvailability GroupsFor Always On Availability Groups underLinux-based SQL Server installations,you’ll want to consider characteristics andconfiguration settings such as:15Configure setting for SQL ServerAvailability Group on Linux. To createan availability group on Linux servers, youneed to enable availability groups on eachLinux node with endpoints and certificates.Use T-SQL (or the New Availability GroupWizard in SSMS on Windows) to create anavailability group with the desired clustertype. After an availability group is createdon SQL Server, you’ll also need to createthe corresponding resources in Pacemaker.To get started with Availability Groups inSQL Server 2017 on Linux, see Create andconfigure an availability group for SQLServer on Linux.Cluster type. For an availability groupon Linux, set the cluster type to Externalor None. An External type means usingPacemaker with the availability group whileNone means that there’s no requirementto use Pacemaker. An External clustertype with Pacemaker helps you query theinstances of SQL Server in the availabilitygroup and orchestrate failover to maintainhigh availability. A cluster type of Noneonly supports manual failover from aprimary to a secondary replica and isprimarily targeted for the read-scale outscenario. For listener connectivity in thiscontext, you can use an IP address resourcecreated in Pacemaker that can run on anyof the nodes. Read more about listenerfunctionality under Linux.

Getting the most out of SQL Server on LinuxNumber of replicas and cluster nodes.SQL Standard Edition supports two nodesin an availability group and one databaseper availability group, while EnterpriseEdition can have up to nine nodes in anavailability group. Configuration-onlynodes do not count against these limits.Use a configuration-only replica if youwant to configure a two-replica withthe ability to automatically fail over toanother replica. Read about replicas andcluster nodes.Configuration-only replica and quorum.Make sure to check that Pacemaker isconfigured properly so it continues tooperate. That also means ensuring quorumand STONITH are implemented properlyfrom a Pacemaker perspective, in additionto any SQL Server requirements such asa configuration-only replica. For moreinformation, see Configuration-only replicaand quorum.SQL Server resource agent forPacemaker. SQL Server 2017 added asequence number option to sys.availabilitygroups. This allows Pacemaker to identifyhow up-to-date secondary replicas are withthe primary replica. Pacemaker updates thesequence number with each availabilitygroup configuration change. Examples ofconfiguration changes include failover,replica addition, or removal.16REQUIRED SYNCHRONIZEDSECONDARIES TO COMMIT. SQL Server2017 also offers this option for the clusterresource setting, which can be changedvia Pacemaker. This setting guaranteesthat the specified number of secondaryreplicas log the transaction data before theprimary replica commits each transaction.You can set the value of this parameterfor high availability and data protection.For more details on design patterns andits capabilities, see How the configurationaffects default resource settings.Security featuresSQL Server 2017 offers several built-insecurity features on Linux deploymentto help you protect and secure yourorganization’s sensitive data both inmotion and at rest.Transparent Data Encryption (TDE)encrypts database at rest, without requiringany application changes.Backup Encryption enables you toencrypt data files while creating backups.Always Encrypted enciphers sensitive dataon the client side.SQL Authentication adds an authenticationlayer via a username and password.

Getting the most out of SQL Server on LinuxActive Directory (AD) Authenticationoffers single sign-on through ActiveDirectory and Kerberos.Granular permissions help you controlaccess to individual tables or columnsof data.Row-Level Security (RLS) enables you tomanage access to rows in a table based ona customizable policy.Dynamic data masking (DDM) limitssensitive data exposure by obscuring it tonon-privileged users.Fine-grained audit features help youenforce a data audit policy and trackuser activity.To learn more about these security features,see Overview of SQL Server Security.17

Tools and managementTools andmanagement18Managing a mixed environment—including Linux and Windowsdeployments—requires many differenttools. Microsoft makes it easier by offeringseveral cross-platform tools for SQL Server.SQL Operations StudioSQL Operations Studio is a new crossplatform tool for SQL Server. Built uponVSCode, this free tool runs on Windows,macOS, and Linux, and is ideal formanaging SQL Server on-premises, incontainers, or in the cloud. It offers amodern, keyboard-focused T-SQL codingexperience with built-in features such asmultiple tab windows, a rich T-SQL editor,IntelliSense, keyword completion, codesnippets, code navigation, and sourcecontrol integration (Git). SQL OperationsStudio enables on-demand T-SQL queries,viewing and saving results in commonformats such as text, JSON, or MicrosoftExcel. You can use it to organize yourdatabase connections and browse databaseobjects in a familiar object browsingexperience on the platform of your choice.

Tools and managementVisual Studio Code and SQL ServerextensionsVisual Studio (VS) Code is a code editorredefined and optimized for buildingand debugging modern web and cloudapplications. VS Code is free and availableon your favorite platform—Linux, macOS,and Windows. It has a rich ecosystem ofextensions found in the VS Code ExtensionMarketplace.The mssql extension for VS Code enablesyou to connect to SQL Server, query withT-SQL statements, and view the results. Youcan save results as a JSON or CSV file touse the data in your applications with justa few clicks. While typing T-SQL code, youget rich T-SQL language features like T-SQLIntelliSense (code completion), syntaxhighlighting, linting, code navigation, andcode snippets.You can also use VS Code to establish aconnection to the SQL Server IntegrationServices (SSIS) Catalog using an SSISextension, and then use T-SQL statementsto deploy an SSIS project to the SSISCatalog.mssql-cli command-line query toolAn interactive command-line tool forquerying SQL Server, mssql-cli includes19many modern features such as autocompletion and syntax highlighting. Basedon Python, mssql-cli uses a preferredinstaller program (pip) to install it. Onceit’s installed, you can launch the toolfrom the command line using mssql-cli--help. As an open-source tool that worksacross platforms, you can install mssql-clion Windows, macOS, or Linux. For moreinformation on how to install mssql-cli andusage, see documentation on the mssql-cliGitHub repository.SQL Server Management Studio (SSMS)Even though SQL Server ManagementStudio isn’t made to run on Linux, it can beused—from a Windows server—to manageSQL Server instances on Linux OS remotely.SSMS is a powerful database administrationtool that can help you back up, restore,view, and edit databases, plus create andedit T-SQL queries, scripts, and databaseobjects. See specific instructions on how touse SSMS to connect remotely to your SQLServer instance on Linux.System Center Management Pack(Management Pack)Microsoft System Center ManagementPack for SQL Server 2017 is another toolthat enables the discovery and monitoringof SQL Server 2017 Database Engines,

Tools and managementdatabases, and other related componentson Windows and Linux deployments.There’s no need for you to disrupt ongoingmonitoring approaches and managingsystems—all you have to do is to import anew version of the Management Pack andconfigure it to facilitate tracking of SQLServer. Using Management Pack, you canmonitor SQL 2017 on both Windows andLinux. Plus, Management Pack supportsagentless monitoring on Linux. Using theagentless mode, you can shift monitoringworkloads to management serversincluded in the SQL Server MonitoringPool. This enables you to remove SystemCenter Operations Manager (SCOM) anddata processing overhead from the SQLServer host and move it to the SQL ServerMonitoring Pool. The monitoring providedby the management pack includesperformance, availability, and configurationmonitoring, as well as performance andevents data collection. All monitoringworkflows have predefined thresholds andcomplementary knowledge base articles.20

Tools and services for migrations and upgradesTools and servicesfor migrations andupgrades21There are various ways to migrate yourexisting data and databases into SQL Serveron Linux. Microsoft can help you managethis transition to SQL Server with migrationtools for many popular relational databasemanagement solutions.SQL Server Migration Assistant (SSMA)SSMA allows you to convert databaseschemas to SQL Server schemas, uploadthe schemas, and migrate data to thetarget server. It manages the migrationprocess with a graphical user interfacethat walks you step-by-step throughthe conversion, upload, and datamigration process, highlighting any issuesencountered during the conversion.SSMA is a Windows application, so werecommend using SSMA when you havea Windows machine that can connectto a remote SQL Server instance onLinux. SSMA supports a variety of sourcedatabases including Oracle, MySQL, SAPAdaptive Server Enterprise (ASE), DB2,and Microsoft Access. Plus, SSMA helpsautomate migration tasks such as assessingyour source database, converting thesource database schema to SQL Serverschema, migrating the schema and thedata, and, lastly, testing the migration. Forhelp choosing the version of SSMA basedon the source database, see Microsoftdocumentation.

Tools and services for migrations and upgrades 22Data Migration Assistant (DMA)DMA detects compatibility issues that canaffect database functionality on your newversion of SQL Server before you migrate.If issues are detected, DMA can offersuggestions on how to address them beforeproceeding. It recommends performanceand reliability improvements for your targetenvironment, including newer features thatare available through a version upgrade.The migration workflow helps you migratedatabase schemas, data and users, serverroles, and SQL Server logins. While themigration of Active Directory (AD) logins isofficially supported by SQL Server 2017 onLinux, this requires additional configurationfor setting up AD logins on SQL Server2017 on Linux. (For more information,see Configuration steps.) Standard SQLAuthentication works as expected withou

SQL Server on Windows and Linux share a common code base. That is, the SQL Server core engine hasn't been changed to allow it to run on Linux. SQL Server introduced a Platform Abstraction Layer (SQLPAL) that's responsible for abstraction of calls and communication between SQL Server and the underlying operating system. The