Skip to content

Commit 548f274

Browse files
authored
Merge pull request #101 from MicrosoftCloudEssentials-LearningHub/SQLonPremMigrationOptionsSharepoint
+ SQL on Prem Migration Options and connect to SharePoint
2 parents e938b26 + 8d6935b commit 548f274

File tree

1 file changed

+259
-0
lines changed

1 file changed

+259
-0
lines changed
Lines changed: 259 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,259 @@
1+
# Migrating On-Premises SQL Server to Azure - Overview
2+
3+
Costa Rica
4+
5+
[![GitHub](https://img.shields.io/badge/--181717?logo=github&logoColor=ffffff)](https://github.com/)
6+
[brown9804](https://github.com/brown9804)
7+
8+
Last updated: 2025-04-23
9+
10+
----------
11+
12+
<details>
13+
<summary><b>List of References</b> (Click to expand)</summary>
14+
15+
- [Migration overview: From SQL Server](https://learn.microsoft.com/en-us/data-migration/sql-server/overview)
16+
- [Migrate from SQL Server: Pre-migration](https://learn.microsoft.com/en-us/data-migration/sql-server/pre-migration?tabs=sqlmi)
17+
- [Migrate SQL Server to Azure SQL Managed Instance at Scale](https://techcommunity.microsoft.com/blog/modernizationbestpracticesblog/migrate-sql-server-to-azure-sql-managed-instance-at-scale/3970683)
18+
- [Migrate on-premises SQL Server or SQL Server on Azure VMs to Azure SQL Database using the Data Migration Assistant](https://learn.microsoft.com/en-us/sql/dma/dma-migrateonpremsqltosqldb?view=sql-server-ver16)
19+
- [Deploy SharePoint Server with Azure SQL Managed Instance](https://learn.microsoft.com/en-us/SharePoint/administration/deploy-azure-sql-managed-instance-with-sharepoint-servers)
20+
21+
</details>
22+
23+
<details>
24+
<summary><b>Table of Contents</b> (Click to expand)</summary>
25+
26+
- [Step 1: Assess the Current Environment](#step-1-assess-the-current-environment)
27+
- [Determine the version of the on-premises SQL Server](#determine-the-version-of-the-on-premises-sql-server)
28+
- [Migration Methods Based on SQL Server Version](#migration-methods-based-on-sql-server-version)
29+
- [Step 2: Options Based on Linked Servers](#step-2-options-based-on-linked-servers)
30+
- [If Linked Servers Exist](#if-linked-servers-exist)
31+
- [If No Linked Servers](#if-no-linked-servers)
32+
- [Integration with SharePoint Online](#integration-with-sharepoint-online)
33+
34+
</details>
35+
36+
> [!IMPORTANT]
37+
> 1. **Determine the version of the on-premises SQL Server**: This will guide the migration path. For example, SQL Server 2016 or newer has more migration options compared to older versions. <br/>
38+
> 2. **Linked Servers**: Check if there are any linked servers <br/>
39+
> - **Azure SQL Database** does not support linked servers. <br/>
40+
> - **Azure SQL Managed Instance** supports linked servers. <br/>
41+
> - **SQL Server on Azure Virtual Machines (IaaS)** supports linked servers.
42+
> 3. **Plan Integration**: Use Azure Logic Apps, Power Automate, or custom APIs for integration with SharePoint Online.
43+
44+
## Step 1: Assess the Current Environment
45+
46+
> - **Determine the SQL Server Version**: This will guide the migration path and options available.
47+
> - **Evaluate Migration Methods**: Based on the SQL Server version, choose the appropriate migration method.
48+
> - **Consider High Availability**: If using AlwaysOn Availability Groups, ensure compatibility with SQL Server and Windows Server versions.
49+
50+
### Determine the version of the on-premises SQL Server
51+
52+
| SQL Server Version | Support Status | Migration Options | Considerations | High Availability Options |
53+
|--------------------------|------------------------|----------------------------------------------------------------------------------|--------------------------------------------------------------------------------|---------------------------------------------------|
54+
| **SQL Server 2008 and 2008 R2** | End of Support: These versions are no longer supported by Microsoft, which means no security updates or patches. | - Azure SQL Managed Instance: Provides a fully managed instance with high compatibility.<br>- SQL Server on Azure Virtual Machines: Allows you to run older SQL Server versions in a VM. | Upgrading to a newer version before migration is recommended for better support and features. | N/A |
55+
| **SQL Server 2012** | Extended Support: Limited support with security updates. | - Azure SQL Managed Instance: High compatibility with on-premises SQL Server.<br>- SQL Server on Azure Virtual Machines: Suitable for maintaining the same SQL Server version. | Evaluate the benefits of upgrading to a newer version for enhanced features and support. | N/A |
56+
| **SQL Server 2014** | Mainstream Support: Still within mainstream support but nearing end of life. | - Azure SQL Managed Instance: High compatibility and managed service.<br>- SQL Server on Azure Virtual Machines: Full control over the SQL Server instance. | Consider upgrading to SQL Server 2016 or newer for better migration options. | N/A |
57+
| **SQL Server 2016 and Newer** | Full Support: These versions are fully supported with regular updates and patches. | - Azure SQL Database: Suitable if no linked servers are required.<br>- Azure SQL Managed Instance: Supports linked servers and high compatibility.<br>- SQL Server on Azure Virtual Machines: Full control and flexibility. | These versions offer the most flexibility and features for migration. | - AlwaysOn Availability Groups: Supported for seamless migration.<br>- Failover Cluster Instances: Supported for high availability. |
58+
59+
### Migration Methods Based on SQL Server Version
60+
61+
1. **Backup and Restore**
62+
- **Supported Versions**: All versions.
63+
- **Description**: Take a backup of the on-premises database and restore it in Azure SQL Managed Instance or SQL Server on Azure VM.
64+
- **Considerations**: Simple method but may involve downtime.
65+
66+
2. **Database Migration Service (DMS)**
67+
- **Supported Versions**: SQL Server 2005 and newer.
68+
- **Description**: Use Azure Database Migration Service to migrate databases with minimal downtime.
69+
- **Considerations**: Recommended for larger databases and mission-critical applications.
70+
71+
3. **Transactional Replication**
72+
- **Supported Versions**: SQL Server 2008 and newer.
73+
- **Description**: Set up transactional replication to synchronize data between on-premises SQL Server and Azure SQL Database or Managed Instance.
74+
- **Considerations**: Suitable for continuous data synchronization with minimal downtime.
75+
76+
4. **AlwaysOn Availability Groups**
77+
- **Supported Versions**: SQL Server 2012 and newer.
78+
- **Description**: Add an Azure VM to the availability group and perform a failover.
79+
- **Considerations**: Requires SQL Server 2016 or newer and Windows Server 2016 or later for multi-subnet configurations.
80+
81+
5. **BACPAC Files**
82+
- **Supported Versions**: SQL Server 2008 and newer.
83+
- **Description**: Export the database schema and data to a BACPAC file and import it into Azure SQL Database.
84+
- **Considerations**: Suitable for smaller databases but may not be reliable for large or complex databases.
85+
86+
87+
## Step 2: Options Based on Linked Servers
88+
89+
| Scenario | Options | Description, Benefits, Considerations, and Integration |
90+
| --- | --- | --- |
91+
| **If Linked Servers Exist** | - **Azure SQL Managed Instance (PaaS)**<br/>- **SQL Server on Azure Virtual Machines (IaaS)** | - **Azure SQL Managed Instance**: Near 100% compatibility with on-premises SQL Server, minimal changes required, higher cost, use Azure Logic Apps or Power Automate for integration.<br/>- **SQL Server on Azure Virtual Machines**: Full control over the SQL Server instance, requires VM management, use custom APIs or Azure Logic Apps for integration. |
92+
| **If No Linked Servers** | - **Azure SQL Database (PaaS)**<br/>- **Azure SQL Managed Instance (PaaS)**<br/>- **SQL Server on Azure Virtual Machines (IaaS)** | - **Azure SQL Database**: Fully managed, reduces management overhead, may require schema changes, use Azure Logic Apps or Power Automate for integration.<br/>- **Azure SQL Managed Instance**: Near 100% compatibility, minimal changes required, higher cost, use Azure Logic Apps or Power Automate for integration.<br/>- **SQL Server on Azure Virtual Machines**: Full control over the SQL Server instance, requires VM management, use custom APIs or Azure Logic Apps for integration. |
93+
94+
95+
### If Linked Servers Exist
96+
97+
<details>
98+
<summary><strong>Azure SQL Managed Instance (PaaS)</strong></summary>
99+
100+
> A fully managed instance of SQL Server that provides near 100% compatibility with the latest SQL Server on-premises.
101+
102+
- **Benefits**:
103+
- Minimal changes required to migrate.
104+
- Supports SQL Server Agent and other SQL Server features.
105+
- Reduces administrative overhead as Microsoft handles patching, backups, and monitoring.
106+
- Built-in high availability and disaster recovery options.
107+
- Easily scalable to meet growing data and performance needs.
108+
- **Considerations**:
109+
- Higher cost compared to Azure SQL Database.
110+
- The migration process can be complex and may require careful planning and execution.
111+
- **Integration with SharePoint Online**:
112+
- Use Azure Logic Apps to create workflows that automate data exchange.
113+
- Use Power Automate to create flows that connect Azure SQL Managed Instance with SharePoint Online.
114+
- Develop custom APIs to facilitate data exchange between the two services.
115+
</details>
116+
117+
<details>
118+
<summary><strong>SQL Server on Azure Virtual Machines (IaaS)</strong></summary>
119+
120+
> Running SQL Server on a virtual machine in Azure, providing full control over the SQL Server instance.
121+
122+
- **Benefits**:
123+
- Full control over the database and OS.
124+
- Suitable for applications requiring specific SQL Server features.
125+
- Supports linked servers, SQL Server Agent, and other advanced SQL Server features.
126+
- Ability to customize the environment to meet specific requirements.
127+
- **Considerations**:
128+
- Requires management of the VM, including patching, backups, and high availability.
129+
- More complex to manage compared to fully managed services like Azure SQL Database or Managed Instance.
130+
- Potentially higher operational costs due to the need for VM management and maintenance.
131+
- **Integration with SharePoint Online**:
132+
- Develop custom APIs to facilitate data exchange between SQL Server on Azure VM and SharePoint Online.
133+
- Use Azure Logic Apps to create workflows that automate data exchange.
134+
- Use Power Automate to create flows that connect SQL Server on Azure VM with SharePoint Online.
135+
</details>
136+
137+
### If No Linked Servers
138+
139+
<details>
140+
<summary><strong>Azure SQL Database (PaaS)</strong></summary>
141+
142+
> `A fully managed relational database` service that handles most database management functions such as upgrading, patching, backups, and monitoring without user involvement.
143+
144+
- **Benefits**:
145+
- Reduces management overhead.
146+
- Built-in high availability and scalability.
147+
- Simplifies database management with automatic updates and scaling.
148+
- **Considerations**:
149+
- May require some changes to your database schema or application code.
150+
- **Integration with SharePoint Online**:
151+
- Use Azure Logic Apps to create workflows that automate data exchange.
152+
- Use Power Automate to create flows that connect Azure SQL Database with SharePoint Online.
153+
</details>
154+
155+
<details>
156+
<summary><strong>Azure SQL Managed Instance (PaaS)</strong></summary>
157+
158+
> `A fully managed instance of SQL Server` that provides near 100% compatibility with the latest SQL Server on-premises.
159+
160+
- **Benefits**:
161+
- Minimal changes required to migrate.
162+
- Supports SQL Server Agent and other SQL Server features.
163+
- Reduces administrative overhead as Microsoft handles patching, backups, and monitoring.
164+
- Built-in high availability and disaster recovery options.
165+
- Easily scalable to meet growing data and performance needs.
166+
- **Considerations**:
167+
- Higher cost compared to Azure SQL Database.
168+
- The migration process can be complex and may require careful planning and execution.
169+
- **Integration with SharePoint Online**:
170+
- Use Azure Logic Apps to create workflows that automate data exchange.
171+
- Use Power Automate to create flows that connect Azure SQL Managed Instance with SharePoint Online.
172+
- Develop custom APIs to facilitate data exchange between the two services.
173+
</details>
174+
175+
<details>
176+
<summary><strong>SQL Server on Azure Virtual Machines (IaaS)</strong></summary>
177+
178+
> Running SQL Server on a virtual machine in Azure, providing full control over the SQL Server instance.
179+
180+
- **Benefits**:
181+
- Full control over the database and OS.
182+
- Suitable for applications requiring specific SQL Server features.
183+
- Supports linked servers, SQL Server Agent, and other advanced SQL Server features.
184+
- Ability to customize the environment to meet specific requirements.
185+
- **Considerations**:
186+
- Requires management of the VM, including patching, backups, and high availability.
187+
- More complex to manage compared to fully managed services like Azure SQL Database or Managed Instance.
188+
- Potentially higher operational costs due to the need for VM management and maintenance.
189+
- **Integration with SharePoint Online**:
190+
- Develop custom APIs to facilitate data exchange between SQL Server on Azure VM and SharePoint Online.
191+
- Use Azure Logic Apps to create workflows that automate data exchange.
192+
- Use Power Automate to create flows that connect SQL Server on Azure VM with SharePoint Online.
193+
</details>
194+
195+
## Integration with SharePoint Online
196+
197+
> - Azure Logic Apps: Automate workflows to facilitate data exchange between Azure SQL Database and SharePoint Online using built-in connectors and triggers. <br/>
198+
> - Power Automate: Create flows to connect Azure SQL Database with SharePoint Online using pre-built templates and connectors. <br/>
199+
> - Custom APIs: Develop custom APIs for tailored data exchange solutions, providing flexibility and control over the integration process.
200+
201+
<details>
202+
<summary><strong>Azure Logic Apps</strong></summary>
203+
204+
> Azure Logic Apps is a cloud-based service that allows you to automate workflows and integrate apps, data, services, and systems.
205+
206+
- **Use Case**: Automate data exchange between Azure SQL Database and SharePoint Online.
207+
- **How It Works**:
208+
1. **Create a Logic App**: Start by creating a new Logic App in the Azure portal.
209+
2. **Define Triggers**: Set up triggers that initiate the workflow. For example, a trigger could be a new item added to a SharePoint list or a new row inserted into an Azure SQL Database table.
210+
3. **Add Actions**: Define actions that the Logic App should perform. Actions can include reading data from Azure SQL Database, transforming the data, and then writing it to SharePoint Online.
211+
4. **Connectors**: Use built-in connectors for Azure SQL Database and SharePoint Online to facilitate the data exchange.
212+
5. **Error Handling**: Implement error handling and retries to ensure the workflow runs smoothly even if there are temporary issues.
213+
- **Example**: A Logic App that triggers when a new row is added to an Azure SQL Database table, retrieves the data, and creates a new item in a SharePoint Online list.
214+
</details>
215+
216+
<details>
217+
<summary><strong>Power Automate</strong></summary>
218+
219+
> Power Automate (formerly Microsoft Flow) is a service that helps you create automated workflows between your favorite apps and services to synchronize files, get notifications, collect data, and more.
220+
221+
- **Use Case**: Create flows to connect Azure SQL Database with SharePoint Online.
222+
- **How It Works**:
223+
1. **Create a Flow**: Start by creating a new flow in Power Automate.
224+
2. **Define Triggers**: Set up triggers that initiate the flow. For example, a trigger could be a new item added to a SharePoint list or a new row inserted into an Azure SQL Database table.
225+
3. **Add Actions**: Define actions that the flow should perform. Actions can include reading data from Azure SQL Database, transforming the data, and then writing it to SharePoint Online.
226+
4. **Connectors**: Use built-in connectors for Azure SQL Database and SharePoint Online to facilitate the data exchange.
227+
5. **Templates**: Utilize pre-built templates to quickly set up common workflows.
228+
- **Example**: A flow that triggers when a new item is added to a SharePoint Online list, retrieves the data, and inserts it into an Azure SQL Database table.
229+
</details>
230+
231+
<details>
232+
<summary><strong>Custom APIs</strong></summary>
233+
234+
> Custom APIs allow you to develop tailored solutions for specific integration needs, providing flexibility and control over the data exchange process.
235+
236+
- **Use Case**: Develop custom APIs for data exchange between Azure SQL Database and SharePoint Online.
237+
- **How It Works**:
238+
1. **Develop API**: Create a custom API using a programming language such as C# or Python. The API should handle data retrieval, transformation, and insertion.
239+
2. **Host API**: Host the API in a suitable environment, such as Azure App Service or Azure Functions.
240+
3. **Authentication**: Implement secure authentication mechanisms, such as OAuth, to ensure that only authorized users and applications can access the API.
241+
4. **Endpoints**: Define endpoints for the API that allow for CRUD (Create, Read, Update, Delete) operations on the data.
242+
5. **Integration**: Use the API to facilitate data exchange between Azure SQL Database and SharePoint Online. The API can be called from Logic Apps, Power Automate, or directly from client applications.
243+
- **Example**: A custom API that retrieves data from an Azure SQL Database table, processes the data, and updates a SharePoint Online list.
244+
</details>
245+
246+
> [!TIP]
247+
> Summary of Options:
248+
249+
| Option | Description | Key Features | Integration with SharePoint Online |
250+
| --- | --- | --- | --- |
251+
| **Azure SQL Database (PaaS)** | Suitable if no linked servers are required. | - Supports transactional replication.<br/>- Reduces management overhead.<br/>- Built-in high availability and scalability. | Use Azure Logic Apps or Power Automate for integration with SharePoint Online. |
252+
| **Azure SQL Managed Instance (PaaS)** | Supports linked servers. | - Supports both availability group and transactional replication methods.<br/>- Near 100% compatibility with on-premises SQL Server.<br/>- Built-in high availability and disaster recovery options. | Use Azure Logic Apps or Power Automate for integration with SharePoint Online. |
253+
| **SQL Server on Azure Virtual Machines (IaaS)** | Provides full control over the SQL Server instance. | - Supports linked servers and all SQL Server features.<br/>- Suitable for applications requiring OS-level access.<br/>- Full control over the database and OS. | Use custom APIs or Azure Logic Apps for integration with SharePoint Online. |
254+
255+
256+
<div align="center">
257+
<h3 style="color: #4CAF50;">Total Visitors</h3>
258+
<img src="https://profile-counter.glitch.me/brown9804/count.svg" alt="Visitor Count" style="border: 2px solid #4CAF50; border-radius: 5px; padding: 5px;"/>
259+
</div>

0 commit comments

Comments
 (0)