<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SQL Server Archives - AzureOps</title>
	<atom:link href="https://azureops.org/articles/category/sql-server/feed/" rel="self" type="application/rss+xml" />
	<link>https://azureops.org/articles/category/sql-server/</link>
	<description>Notable things about Cloud, Data and DevOps.</description>
	<lastBuildDate>Fri, 29 May 2026 13:59:58 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://i0.wp.com/azureops.org/wp-content/uploads/2021/04/cropped-android-chrome-512x512-1.png?fit=32%2C32&#038;ssl=1</url>
	<title>SQL Server Archives - AzureOps</title>
	<link>https://azureops.org/articles/category/sql-server/</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">190208641</site>	<item>
		<title>Compare Azure SQL Database Schema Using sqlpackage</title>
		<link>https://azureops.org/articles/compare-azure-sql-database-schema-using-sqlpackage/</link>
		
		<dc:creator><![CDATA[Kunal Rathi]]></dc:creator>
		<pubDate>Sat, 10 Jan 2026 19:16:23 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SQL Database]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">https://azureops.org/?p=9188</guid>

					<description><![CDATA[<p>Learn how to compare two Azure SQL Database Schema effectively and generate delta scripts for seamless deployment.</p>
<p>The post <a href="https://azureops.org/articles/compare-azure-sql-database-schema-using-sqlpackage/">Compare Azure SQL Database Schema Using sqlpackage</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When working with Azure SQL Databases, it is quite common to have multiple environments such as <strong>Dev</strong>, <strong>Test</strong>, <strong>UAT</strong>, and <strong>Production</strong>. Over time, schema drift between these environments becomes inevitable. Before deploying changes to production, it is critical to understand <em>exactly</em> what is different and what will change.</p>



<p class="wp-block-paragraph">In this article, we will see how to <strong>compare Azure SQL database schema using <code>sqlpackage.exe</code></strong> and generate a <strong>delta script</strong> that shows the differences in a controlled and repeatable way. The approach and flow are similar to the DACPAC-based comparison strategy discussed earlier on AzureOps.</p>



<h2 class="wp-block-heading">Why use sqlpackage for database comparison?</h2>



<p class="wp-block-paragraph"><code><a href="https://learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage?view=sql-server-ver17" target="_blank" rel="noreferrer noopener">sqlpackage.exe</a></code> is a command-line utility provided by Microsoft that works with <strong>DACPAC</strong> and <strong>BACPAC</strong> files. Using <code>sqlpackage</code>, you can:</p>



<ul class="wp-block-list">
<li class="">Compare two databases using DACPACs</li>



<li class="">Generate a deployment (delta) script</li>



<li class="">Control destructive changes explicitly</li>



<li class="">Automate comparisons in CI/CD pipelines</li>
</ul>



<p class="wp-block-paragraph">For Azure SQL Database scenarios, this method is especially useful when direct schema comparison tools are not available or when automation is required.</p>



<h2 class="wp-block-heading">Creating a DACPAC</h2>



<p class="wp-block-paragraph">To compare database schemas using <code>sqlpackage</code>, you first need a <strong>DACPAC</strong> file, which represents the database schema.</p>



<p class="wp-block-paragraph">You can create a DACPAC using <strong>sqlpackage.exe</strong>, <strong>SSMS</strong>, or <strong>Visual Studio</strong>. For a quick, step-by-step guide covering all methods, refer to this <a href="https://azureops.org/articles/dacpac-sql-server-database/?utm_source=chatgpt.com" target="_blank" rel="noreferrer noopener">article</a>.</p>



<h2 class="wp-block-heading">Installing <code>sqlpackage</code> Before You Begin</h2>



<p class="wp-block-paragraph">Before you can compare two Azure SQL database schemas using <code>sqlpackage</code>, you need to <strong>install the <code>sqlpackage</code> command-line utility</strong> on your machine. <code>sqlpackage.exe</code> is the same tool that Powers the DACPAC deployments discussed in this site’s previous article on deploying DACPACs to Azure SQL Database.</p>



<p class="wp-block-paragraph">Here are the recommended ways to install <code>sqlpackage</code>, depending on your environment:</p>



<h3 class="wp-block-heading">Option 1 — Install as a .NET Global Tool (Cross-Platform)</h3>



<p class="wp-block-paragraph">The easiest and most modern way to install <code>sqlpackage</code> on <strong>Windows, macOS, or Linux</strong> is using the <strong>.NET SDK tool installer</strong>. This gives you the <code>sqlpackage</code> command directly on your PATH. Run below command in command prompt.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
dotnet tool install --global Microsoft.SqlPackage
</pre></div>


<p class="wp-block-paragraph">If you already have it installed and want to update to the latest version, run:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: bash; gutter: false; title: ; notranslate">
dotnet tool update --global Microsoft.SqlPackage
</pre></div>


<p class="wp-block-paragraph">This method works well for local development and automation scripts, including PowerShell and CI/CD pipelines.</p>



<h3 class="wp-block-heading">Option 2 — Download Standalone Zip (Windows / macOS / Linux)</h3>



<p class="wp-block-paragraph">If you don’t use the .NET SDK or prefer a <strong>self-contained download</strong>, Microsoft also publishes standalone builds of <code>sqlpackage</code>:</p>



<ol class="wp-block-list">
<li class="">Visit the official SqlPackage<a href="https://learn.microsoft.com/en-us/sql/tools/sqlpackage/sqlpackage-download?view=sql-server-ver17" target="_blank" rel="noreferrer noopener"> download page</a> on Microsoft Docs.</li>



<li class="">Download the appropriate zip for your OS.</li>



<li class="">Extract and place the folder somewhere on your system (e.g., <code>C:\tools\sqlpackage</code>).</li>



<li class="">Add the folder containing <code>sqlpackage.exe</code> to your system PATH so you can call it from any terminal.</li>
</ol>



<p class="wp-block-paragraph">This method is useful if you want to avoid installing .NET tools or need to bundle <code>sqlpackage</code> with deployment scripts.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/image.png?ssl=1"><img fetchpriority="high" decoding="async" width="1090" height="420" data-attachment-id="9206" data-permalink="https://azureops.org/articles/compare-azure-sql-database-schema-using-sqlpackage/image-46/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/image.png?fit=1090%2C420&amp;ssl=1" data-orig-size="1090,420" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/image.png?fit=1090%2C420&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/image.png?fit=1090%2C420&amp;ssl=1" alt="compare Azure SQL Database Schema" class="wp-image-9206" style="width:809px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/image.png?w=1090&amp;ssl=1 1090w, https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/image.png?resize=300%2C116&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/image.png?resize=768%2C296&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/image.png?resize=450%2C173&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/image.png?resize=600%2C231&amp;ssl=1 600w" sizes="(max-width: 1090px) 100vw, 1090px" /></a></figure>



<h2 class="wp-block-heading">High-level approach</h2>



<p class="wp-block-paragraph">The comparison process consists of three simple steps:</p>



<ol class="wp-block-list">
<li class="">Export both Azure SQL databases to DACPAC files</li>



<li class="">Use <code>sqlpackage.exe</code> with <code>/Action:Script</code></li>



<li class="">Review the generated delta script before applying it</li>
</ol>



<p class="wp-block-paragraph">In this article, we focus on <strong>step 2</strong>, assuming you already have DACPAC files for both databases.</p>



<h2 class="wp-block-heading">Sample scenario</h2>



<p class="wp-block-paragraph">Let us assume the following setup:</p>



<ul class="wp-block-list">
<li class=""><strong>Source (baseline)</strong> database: <code>sales-test-db</code></li>



<li class=""><strong>Target (to be aligned)</strong> database: <code>sales-prod-db</code></li>
</ul>



<p class="wp-block-paragraph">Our goal is to compare Azure SQL Database schema and generate a SQL script that shows what changes are required to make <strong>Production</strong> match <strong>Test</strong>.</p>



<h2 class="wp-block-heading">Sample sqlpackage command</h2>



<p class="wp-block-paragraph">Below is a sample <code>sqlpackage.exe</code> command to compare two DACPAC files and generate a delta script.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
sqlpackage.exe ^
  /Action:Script ^
  /SourceFile:&quot;C:\Dacpacs\sales-test-db.dacpac&quot; ^
  /TargetFile:&quot;C:\Dacpacs\sales-prod-db.dacpac&quot; ^
  /TargetDatabaseName:&quot;sales-prod-db&quot; ^
  /OutputPath:&quot;C:\Dacpacs\sales_test_vs_prod_delta.sql&quot; ^
  /p:DropObjectsNotInSource=True

</pre></div>


<figure class="wp-block-image size-full is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/sqlpackage-to-compare-azure-sql-database-schema.png?ssl=1"><img decoding="async" width="1153" height="221" data-attachment-id="9192" data-permalink="https://azureops.org/articles/compare-azure-sql-database-schema-using-sqlpackage/sqlpackage-to-compare-azure-sql-database-schema/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/sqlpackage-to-compare-azure-sql-database-schema.png?fit=1153%2C221&amp;ssl=1" data-orig-size="1153,221" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="sqlpackage to compare azure sql database schema" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/sqlpackage-to-compare-azure-sql-database-schema.png?fit=1153%2C221&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/sqlpackage-to-compare-azure-sql-database-schema.png?fit=1153%2C221&amp;ssl=1" alt="compare Azure SQL Database Schema using sqlpackage utility" class="wp-image-9192" style="aspect-ratio:5.217492752598458;width:881px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/sqlpackage-to-compare-azure-sql-database-schema.png?w=1153&amp;ssl=1 1153w, https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/sqlpackage-to-compare-azure-sql-database-schema.png?resize=300%2C58&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/sqlpackage-to-compare-azure-sql-database-schema.png?resize=768%2C147&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/sqlpackage-to-compare-azure-sql-database-schema.png?resize=450%2C86&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2026/01/sqlpackage-to-compare-azure-sql-database-schema.png?resize=600%2C115&amp;ssl=1 600w" sizes="(max-width: 1153px) 100vw, 1153px" /></a></figure>



<p class="wp-block-paragraph">In case you want to use PowerShell ISE, you can use below script.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: powershell; title: ; notranslate">
# Path to sqlpackage.exe
$sqlPackagePath = &quot;C:\Program Files\Microsoft SQL Server\160\DAC\bin\sqlpackage.exe&quot;

# DACPAC paths
$SourceDacpacPath = &quot;C:\Dacpacs\sales-test-db.dacpac&quot;
$TargetDacpacPath = &quot;C:\Dacpacs\sales-prod-db.dacpac&quot;

# Target database name
$TargetDatabaseName = &quot;sales-prod-db&quot;

# Output script path
$OutputScriptPath = &quot;C:\Dacpacs\sales_test_vs_prod_delta.sql&quot;

# Publish options
$DropObjectsNotInSource = &quot;True&quot;

# Execute sqlpackage
&amp; $sqlPackagePath `
    /Action:Script `
    /SourceFile:$SourceDacpacPath `
    /TargetFile:$TargetDacpacPath `
    /TargetDatabaseName:$TargetDatabaseName `
    /OutputPath:$OutputScriptPath `
    /p:DropObjectsNotInSource=$DropObjectsNotInSource

</pre></div>


<p class="wp-block-paragraph">This command does <strong>not</strong> apply any changes. It only generates a SQL script that you can review and execute manually if needed.</p>



<h2 class="wp-block-heading">Understanding each parameter</h2>



<p class="wp-block-paragraph">Let us break down all the parameters used in the command.</p>



<p class="wp-block-paragraph"><strong>/Action:Script</strong></p>



<p class="wp-block-paragraph">Specifies that <code>sqlpackage</code> should <strong>generate a deployment script</strong> instead of publishing changes directly to a database. This is the safest option when comparing environments like Test and Production.</p>



<p class="wp-block-paragraph"><strong>/SourceFile</strong></p>



<p class="wp-block-paragraph">Path to the <strong>source DACPAC</strong> file. This represents the <em>desired state</em> of the database.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
/SourceFile:&quot;C:\Dacpacs\sales-test-db.dacpac&quot;
</pre></div>


<p class="wp-block-paragraph">In our example, the Test database schema is treated as the source of truth.</p>



<p class="wp-block-paragraph"><strong>/TargetFile</strong></p>



<p class="wp-block-paragraph">Path to the <strong>target DACPAC</strong> file. This represents the database you want to compare against.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
/TargetFile:&quot;C:\Dacpacs\sales-prod-db.dacpac&quot;
</pre></div>


<p class="wp-block-paragraph">The generated script will contain changes required to make the target match the source.</p>



<p class="wp-block-paragraph"><strong>/TargetDatabaseName</strong></p>



<p class="wp-block-paragraph">Logical name of the target database.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
/TargetDatabaseName:&quot;sales-prod-db&quot;
</pre></div>


<p class="wp-block-paragraph">This parameter is mandatory for the <code>Script</code> action, even when you are comparing DACPAC-to-DACPAC.</p>



<p class="wp-block-paragraph"><strong>/OutputPath</strong></p>



<p class="wp-block-paragraph">Specifies where the generated delta script should be written.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
/OutputPath:&quot;C:\Dacpacs\sales_test_vs_prod_delta.sql&quot;
</pre></div>


<p class="wp-block-paragraph">Always review this script carefully before executing it in Production.</p>



<p class="wp-block-paragraph"><strong>/p:DropObjectsNotInSource</strong></p>



<p class="wp-block-paragraph">Controls whether objects that exist in the target but not in the source should be dropped.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; gutter: false; title: ; notranslate">
/p:DropObjectsNotInSource=True
</pre></div>


<ul class="wp-block-list">
<li class=""><code>True</code> – Generates <code>DROP</code> statements for extra objects in the target</li>



<li class=""><code>False</code> – Preserves objects that exist only in the target</li>
</ul>



<p class="wp-block-paragraph">⚠️ <strong>Use this option with caution</strong>, especially for Production databases.</p>



<h2 class="wp-block-heading">Common additional publish parameters</h2>



<p class="wp-block-paragraph">Depending on your requirements, you may also consider these commonly used parameters:</p>



<ul class="wp-block-list">
<li class=""><code>/p:BlockOnPossibleDataLoss=False</code></li>



<li class=""><code>/p:IgnorePermissions=True</code></li>



<li class=""><code>/p:IgnoreRoleMembership=True</code></li>



<li class=""><code>/p:ExcludeObjectTypes=Users;Logins</code></li>



<li class=""><code>/p:ExcludeSchemaValidation=True</code></li>
</ul>



<p class="wp-block-paragraph">These options help fine-tune the comparison and avoid unwanted differences.</p>



<h2 class="wp-block-heading">Best practices</h2>



<ul class="wp-block-list">
<li class="">Always generate a script first (<code>/Action:Script</code>)</li>



<li class="">Review the delta script line by line</li>



<li class="">Never auto-apply changes to Production without validation</li>



<li class="">Store DACPACs and scripts in source control</li>



<li class="">Use the same approach in CI/CD pipelines for consistency</li>
</ul>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Comparing two Azure SQL databases using <code>sqlpackage.exe</code> is a reliable and automation-friendly approach. By working with DACPAC files and generating delta scripts, you gain full visibility and control over schema changes before they reach Production.</p>



<p class="wp-block-paragraph">This method fits well into modern DevOps workflows and provides a safe alternative to manual or GUI-based comparisons.</p>



<p class="wp-block-paragraph">If you regularly manage schema changes across multiple environments, <code>sqlpackage</code> should be a core part of your database deployment tool.</p>



<p class="has-light-green-cyan-background-color has-background wp-block-paragraph"><strong>Pro tips</strong><br>1. If you want to generate BACPAC file of an Azure SQL database, you can refer to this <a href="https://azureops.org/articles/bacpac-large-sql-server-database/" target="_blank" rel="noreferrer noopener">post</a></p>



<h2 class="wp-block-heading">See more</h2>



<iframe width="700" height="394" src="https://www.youtube.com/embed/8YVrxCgdiIg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

    <div class="xs_social_share_widget xs_share_url after_content 		main_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content">

		
        <ul>
			        </ul>
    </div> 
<p>The post <a href="https://azureops.org/articles/compare-azure-sql-database-schema-using-sqlpackage/">Compare Azure SQL Database Schema Using sqlpackage</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">9188</post-id>	</item>
		<item>
		<title>Cross Database Query in Azure SQL Database</title>
		<link>https://azureops.org/articles/cross-database-query-in-azure-sql/</link>
		
		<dc:creator><![CDATA[Kunal Rathi]]></dc:creator>
		<pubDate>Wed, 05 Nov 2025 16:25:27 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[SQL Database]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[cross database access in azure sql]]></category>
		<category><![CDATA[elastic query in azure sql]]></category>
		<guid isPermaLink="false">https://azureops.org/?p=8505</guid>

					<description><![CDATA[<p>In modern cloud architectures, it&#8217;s common to distribute data across multiple Azure SQL Databases. While this promotes modularity and scalability, it can pose challenges when you need to access data across these databases. Fortunately, Azure SQL&#8217;s external tables feature allows for seamless cross-database querying without data duplication. This feature is also known as Elastic Query [&#8230;]</p>
<p>The post <a href="https://azureops.org/articles/cross-database-query-in-azure-sql/">Cross Database Query in Azure SQL Database</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">In modern cloud architectures, it&#8217;s common to distribute data across multiple Azure SQL Databases. While this promotes modularity and scalability, it can pose challenges when you need to access data across these databases. Fortunately, Azure SQL&#8217;s external tables feature allows for seamless cross-database querying without data duplication. This feature is also known as <a href="https://learn.microsoft.com/en-us/azure/azure-sql/database/elastic-query-overview?view=azuresql" target="_blank" rel="noreferrer noopener">Elastic Query</a> in Azure SQL database.This guide walks you through setting up cross database query in Azure SQL to reference a table from another Azure SQL Database, ensuring secure and efficient data access.</p>



<h3 class="wp-block-heading">Use Case &#8211; Imagine this scenario:</h3>



<ul class="wp-block-list">
<li>You have a <strong>main transactional database</strong> named <code>app-db</code> hosted on Azure SQL Server <code>app-db.database.windows.net</code>.</li>



<li>You also have a <strong>reference or lookup database</strong> named <code>source-db</code>, hosted on a separate Azure SQL Server: <code>source-server.database.windows.net</code>.</li>
</ul>



<figure class="wp-block-image size-full is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/Elastic-query-access-in-Azure-SQL-database-1.png?ssl=1"><img data-recalc-dims="1" decoding="async" width="1536" height="1024" data-attachment-id="8572" data-permalink="https://azureops.org/articles/cross-database-query-in-azure-sql/elastic-query-access-in-azure-sql-database-2/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/Elastic-query-access-in-Azure-SQL-database-1.png?fit=1536%2C1024&amp;ssl=1" data-orig-size="1536,1024" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Elastic query access in Azure SQL database" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/Elastic-query-access-in-Azure-SQL-database-1.png?fit=1200%2C800&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/Elastic-query-access-in-Azure-SQL-database-1.png?resize=1536%2C1024&#038;ssl=1" alt="Cross database query in Azure SQL database" class="wp-image-8572" style="width:616px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/Elastic-query-access-in-Azure-SQL-database-1.png?w=1536&amp;ssl=1 1536w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/Elastic-query-access-in-Azure-SQL-database-1.png?resize=300%2C200&amp;ssl=1 300w" sizes="(max-width: 1536px) 100vw, 1536px" /></a></figure>



<p class="wp-block-paragraph">You want your <code>app-db</code> to query the table <code>dbo.external_table</code> from the <code>source-db</code> — without importing or copying the data. The goal is to enable live, read-only access to shared reference data across databases in a secure and manageable way.</p>



<p class="has-pale-cyan-blue-background-color has-background wp-block-paragraph"><strong>Prerequisites</strong><br>Before diving into the setup, ensure the following:<br><strong>1. Azure SQL Databases</strong>: Both the source and target databases should be Azure SQL Databases.<br><strong>2. Same Region</strong>: Ensure both databases are in the same Azure region to minimize latency.<br><strong>3. User Credentials</strong>: A SQL user say (<code>ext_table_user</code>) must exist in the source database with the necessary permissions to access the target table.</p>



<h3 class="wp-block-heading">Why Create Separate user in the Source Database?</h3>



<p class="wp-block-paragraph">The <code>ext_table_user</code> is a SQL user in the source database that the target database uses to authenticate and access data. This user must have the necessary permissions (e.g., <code>SELECT</code>) on the target table.</p>



<p class="wp-block-paragraph">Creating a dedicated user for external access enhances security by allowing you to:</p>



<ul class="wp-block-list">
<li><strong>Limit Permissions</strong>: Grant only the necessary permissions to this user.</li>



<li><strong>Monitor Access</strong>: Track and audit activities performed by this user.</li>



<li><strong>Revoke Access Easily</strong>: If needed, you can revoke this user&#8217;s access without affecting other users.</li>
</ul>



<p class="wp-block-paragraph">Fow these <a href="https://azureops.org/articles/grant-access-to-azure-sql-database/" target="_blank" rel="noreferrer noopener">steps </a>to how to grant access to Azure SQL database. </p>



<h2 class="wp-block-heading">How to Setup Cross Database Access in Azure SQL</h2>



<p class="wp-block-paragraph">Follow the below quick steps to setup cross database access in Azure SQL database.</p>



<h3 class="wp-block-heading">Step 1: Create a Master Key in the Target Database</h3>



<p class="wp-block-paragraph">The master key is essential for encrypting credentials used in external data sources.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
-- Execute in the target database

CREATE MASTER KEY ENCRYPTION BY PASSWORD = &#039;YourStrongPasswordHere&#039;;
</pre></div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">Skip this if <code>SELECT * FROM sys.symmetric_keys WHERE name = '##MS_DatabaseMasterKey##'</code> already returns a row.</p>
</blockquote>



<h3 class="wp-block-heading">Step 2: Create a Database Scoped Credential</h3>



<p class="wp-block-paragraph">This credential will be used to authenticate against the source database.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
-- Execute in the target database

CREATE DATABASE SCOPED CREDENTIAL ext_table_user
WITH IDENTITY = &#039;ext_table_user&#039;,
     SECRET = &#039;ActualPasswordOfExtTableUser&#039;;
</pre></div>


<figure class="is-style-default wp-block-image size-large is-resized"><a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.ssiscatalogerpro&amp;ssr=false#overview" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1200" height="148" data-attachment-id="4839" data-permalink="https://azureops.org/articles/azure-data-studio-for-sql-developers/scmw-horizontal-ad/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?fit=1326%2C163&amp;ssl=1" data-orig-size="1326,163" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SCMW-horizontal-ad" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?fit=1200%2C148&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=1200%2C148&#038;ssl=1" alt="" class="wp-image-4839" style="object-fit:cover;width:811px;height:99px" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=1200%2C148&amp;ssl=1 1200w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=450%2C55&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=600%2C74&amp;ssl=1 600w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=300%2C37&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=768%2C94&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?w=1326&amp;ssl=1 1326w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></figure>



<h3 class="wp-block-heading">Step 3: Define the External Data Source</h3>



<p class="wp-block-paragraph">This step establishes a connection to the source database.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
-- Execute in the target database

CREATE EXTERNAL DATA SOURCE LinkedAzureSQLDB
WITH (
    TYPE = RDBMS,
    LOCATION = &#039;source-server.database.windows.net&#039;,
    DATABASE_NAME = &#039;source-db&#039;,
    CREDENTIAL = ext_table_user
);
</pre></div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>Ensure</em>: Replace <code>'source-server.database.windows.net'</code> and <code>'source-db'</code> with your actual server and database names.</p>
</blockquote>



<h3 class="wp-block-heading">Step 4: Create the External Table</h3>



<p class="wp-block-paragraph">Now, define the external table in the target database to reference the table in the source database.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
-- Execute in the target database

CREATE EXTERNAL TABLE dbo.external_table (
    &#x5B;ID] NUMERIC(18, 0) NOT NULL,
    &#x5B;list_id] INT NOT NULL,
    &#x5B;type_id] INT NOT NULL,
    &#x5B;description] VARCHAR(50) NULL
)
WITH (
    DATA_SOURCE = LinkedAzureSQLDB,
    SCHEMA_NAME = &#039;dbo&#039;,
    OBJECT_NAME = &#039;external_table&#039;
);
</pre></div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>Note</em>: The schema and object names should match those in the source database.</p>
</blockquote>



<h3 class="wp-block-heading">Step 5: Query the External Table</h3>



<p class="wp-block-paragraph">With the setup complete, you can now query the external table as if it were local:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
-- Execute in the target database

SELECT TOP 10 * FROM dbo.external_table;
</pre></div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><em>Performance Tip</em>: Monitor query performance, as cross-database queries may have higher latency.</p>
</blockquote>



<p class="has-background wp-block-paragraph" style="background-color:#bcefca"><strong>Pro tips:</strong><br><strong>1. Use Managed Identities</strong>: For enhanced security, consider using Azure Managed Identities instead of SQL authentication.<br>2. <strong>Monitor Performance</strong>: Regularly monitor the performance of cross-database queries to ensure they meet your application&#8217;s requirements.<br>3. <strong>Secure Credentials</strong>: Store sensitive information, like passwords, securely using Azure Key Vault.<br>4. <strong>Elastic query</strong> feature in Azure SQL is still in preview.</p>



<p class="wp-block-paragraph">By following this guide, you can efficiently set up cross databse query in Azure SQL, enabling seamless cross-database querying while maintaining security and performance.</p>



<h2 class="wp-block-heading">See more</h2>



<iframe width="700" height="394" src="https://www.youtube.com/embed/8YVrxCgdiIg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

    <div class="xs_social_share_widget xs_share_url after_content 		main_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content">

		
        <ul>
			        </ul>
    </div> 
<p>The post <a href="https://azureops.org/articles/cross-database-query-in-azure-sql/">Cross Database Query in Azure SQL Database</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8505</post-id>	</item>
		<item>
		<title>Transferring Sensitive Data During SSIS Catalog Migrations to Another Server</title>
		<link>https://azureops.org/articles/transferring-sensitive-data-during-ssis-catalog-migrations-to-another-server/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Thu, 03 Jul 2025 11:34:19 +0000</pubDate>
				<category><![CDATA[Microsoft BI]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[SSIS Catalog Migration]]></category>
		<category><![CDATA[ssis environment varriables]]></category>
		<category><![CDATA[ssis project parameters]]></category>
		<category><![CDATA[ssisdb encryption key]]></category>
		<guid isPermaLink="false">https://azureops.org/?p=8534</guid>

					<description><![CDATA[<p>Migrating your SQL Server Integration Services (SSIS) Catalog to a new server or instance is a common administrative task, but it often brings with it a significant challenge: the secure handling of sensitive data. Packages within the SSIS Catalog frequently contain connection managers with sensitive information like database credentials, API keys, or other confidential parameters. [&#8230;]</p>
<p>The post <a href="https://azureops.org/articles/transferring-sensitive-data-during-ssis-catalog-migrations-to-another-server/">Transferring Sensitive Data During SSIS Catalog Migrations to Another Server</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Migrating your SQL Server Integration Services (SSIS) Catalog to a new server or instance is a common administrative task, but it often brings with it a significant challenge: the secure handling of <strong>sensitive data</strong>. Packages within the SSIS Catalog frequently contain connection managers with sensitive information like database credentials, API keys, or other confidential parameters.<sup></sup> The thought of exposing or mishandling this data during <strong>SSIS migration</strong> can be a daunting prospect.</p>



<p class="wp-block-paragraph">Traditionally, <strong>migrating SSIS Catalog</strong>, especially when dealing with encrypted sensitive data, could be a complex affair. One of the major hurdles was the perceived need to know the <code>SSISDB</code> encryption key from the source server. This key is crucial for decrypting sensitive data stored within the catalog. If this key was lost, unknown, or not easily accessible, the <strong>SSIS Catalog migration process</strong> could become a nightmare, often leading to manual reconfiguration or even data loss.</p>



<p class="wp-block-paragraph">This is where tools like the <a href="https://ssiscataloger.azureops.org/" target="_blank" rel="noreferrer noopener">SSIS Catalog Migration Wizard</a> truly shine, revolutionizing how we approach <strong>SSIS Catalog migrations</strong>, particularly concerning sensitive data and environment-specific configurations.</p>



<h3 class="wp-block-heading">SSIS Catalog Migration Wizard: A Secure and Streamlined Solution for SSIS Data</h3>



<p class="wp-block-paragraph">The <strong>SSIS Catalog Migration Wizard</strong> is a powerful and user-friendly tool designed to simplify the process of moving your SSIS Catalog between SQL Server instances.<sup></sup> Its most significant advantage when it comes to sensitive data is its ability to handle encrypted information without requiring the user to possess the <code>SSISDB</code> encryption key from the source server. Beyond sensitive data, it offers critical features for managing environment and parameter values during the transfer.</p>



<p class="wp-block-paragraph"><strong>How it addresses sensitive data and configuration concerns during SSIS migration:</strong></p>



<ul class="wp-block-list">
<li class=""><strong>No <code>SSISDB</code> Encryption Key Required:</strong> This is the paramount feature. The Wizard intelligently extracts the necessary components, including encrypted sensitive data, from the source SSISDB and correctly re-encrypts them on the destination SSISDB using the <em>destination&#8217;s</em> encryption key. This means you don&#8217;t need to go through the arduous process of retrieving, backing up, or restoring the <strong>source SSISDB encryption key</strong>. This drastically reduces the risk of exposing sensitive data and simplifies the <strong>SSIS Catalog migration</strong> significantly.</li>



<li class=""><strong>Seamless Re-encryption:</strong> The Wizard handles the decryption and re-encryption process behind the scenes. When an <strong>SSIS package with sensitive data</strong> is migrated, the Wizard ensures that this data is correctly encrypted with the destination server&#8217;s <code>SSISDB</code> encryption key, maintaining the integrity and security of your sensitive information.</li>



<li class=""><strong>Replace Environment Variable and Parameter Values:</strong> A significant pain point in manual migrations is updating countless environment variables and parameter values to match the new environment. The <strong>SSIS Catalog Migration Wizard</strong> offers the crucial capability to define and replace these values <em>during the migration process itself</em>. This means you can proactively map old server names, database names, file paths, or other environment-specific settings to their new counterparts.</li>



<li class=""><strong>Reduced Manual Intervention:</strong> By automating the handling of sensitive data and providing the ability to replace environment-specific values, the Wizard minimizes the need for manual intervention post-migration. This reduces the chances of human error that could lead to data exposure, corruption, or broken package execution. You won&#8217;t have to manually update connection strings, package parameters, or environment variables one by one, saving significant time and effort in <strong>SSIS data migration</strong> and configuration.</li>



<li class=""><strong>Comprehensive Migration:</strong> Beyond sensitive data and configurable parameters, the Wizard migrates your entire SSIS Catalog structure, including projects, environments, references, etc. This ensures a consistent and complete transfer of your SSIS deployment.</li>
</ul>



<h3 class="wp-block-heading">Proactive Strategies for Seamless Variable and Parameter Value Replacement</h3>



<p class="wp-block-paragraph">To leverage the Wizard&#8217;s capability for variable and parameter value replacement effectively, consider SCMW&#8217;s <a href="https://ssiscataloger.azureops.org/getting-started/#replace-environment-variable-and-parameter-values">proactive suggestions</a>:</p>



<ul class="wp-block-list">
<li class=""><strong>Simplified Updating:</strong> The wizard streamlines the process of updating environment variables and parameter values to match the target environment during migration. </li>



<li class=""><strong>Configurable Key-Value Pairs:</strong> Users can set up specific key-value pairs to replace existing values in both environment variables and SSIS project/package parameters. </li>



<li class=""><strong>Intelligent Suggestions:</strong> The wizard features a &#8220;Suggest&#8221; button that provides recommendations for replacements based on the chosen &#8220;Replace Scope,&#8221; aiding users in configuring the correct values. </li>



<li class=""><strong>Detailed Review:</strong> Users can review the specific environment variables and parameters that will be affected by clicking on the &#8220;Ref&#8221; column, which displays detailed mappings, ensuring accuracy and control over the migration process.</li>
</ul>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/ReplaceVariables.gif?ssl=1"><img loading="lazy" decoding="async" width="1200" height="672" data-attachment-id="8543" data-permalink="https://azureops.org/articles/transferring-sensitive-data-during-ssis-catalog-migrations-to-another-server/replacevariables/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/ReplaceVariables.gif?fit=1200%2C672&amp;ssl=1" data-orig-size="1200,672" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="ReplaceVariables" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/ReplaceVariables.gif?fit=1200%2C672&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/ReplaceVariables.gif?fit=1200%2C672&amp;ssl=1" alt="Migrating SSISDB Sensitive Environment Variables" class="wp-image-8543"/></a></figure>



<p class="wp-block-paragraph">This functionality ensures that SSIS packages and projects are correctly configured for the new environment without manual intervention, saving time and reducing potential errors.</p>



<h3 class="wp-block-heading">Best Practices for a Secure SSIS Catalog Migration</h3>



<p class="wp-block-paragraph">While the <strong>SSIS Catalog Migration Wizard</strong> significantly simplifies the process, it&#8217;s still crucial to adhere to best practices for a truly secure migration:</p>



<ol class="wp-block-list">
<li class=""><strong>Plan Thoroughly:</strong> Before initiating any migration, have a clear plan. Identify all projects, environments, sensitive data, and environment-specific configurations involved.</li>



<li class=""><strong>Backup Everything:</strong> Always perform full backups of both the source and destination <code>SSISDB</code> databases before starting the migration. This provides a rollback point in case of any unforeseen issues. You can consider backing us SSISDB to .scmv file using SSIS Catalog Migration Wizard.</li>



<li class=""><strong>Test in a Non-Production Environment:</strong> If possible, perform a test migration to a non-production environment first. This allows you to identify and resolve any potential issues, including incorrect parameter replacements, before impacting your production systems.</li>



<li class=""><strong>Validate Post-Migration:</strong> After the migration is complete, thoroughly validate that all packages and connections are functioning correctly. Pay special attention to packages that use sensitive data and those relying on replaced environment variables to ensure they are executing as expected.</li>



<li class=""><strong>Secure Destination Environment:</strong> Ensure your destination SQL Server instance and SSISDB are configured with appropriate security measures, including strong passwords, least privilege principles, and network security.</li>
</ol>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph"><strong>Migrating SSIS Catalogs</strong>, especially those containing <strong>sensitive data</strong> and requiring intricate environment-specific adjustments, can be a complex undertaking. However, with the advent of tools like the <strong>SSIS Catalog Migration Wizard</strong>, this process has become significantly more manageable and secure. By eliminating the need to know the <strong>source <code>SSISDB</code> encryption key</strong> and automating the re-encryption process, coupled with the powerful ability to replace environment variable and parameter values during migration, the Wizard empowers administrators to perform <strong>SSIS migrations</strong> with confidence. This ensures the integrity and confidentiality of their sensitive data while proactively managing configuration changes throughout the transition. Embrace this powerful tool to streamline your next <strong>SSIS Catalog migration</strong>, and experience a truly hassle-free and secure transfer.</p>



<h2 class="wp-block-heading" id="how-to-install">Installation</h2>



<p class="wp-block-paragraph">SSIS Catalog Migration Wizard can be installed as an extension to:</p>



<p class="wp-block-paragraph">1.&nbsp;<a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.ssiscatalogerpro&amp;ssr=false#overview" target="_blank" rel="noreferrer noopener">Visual Studio 2017</a>,&nbsp;<a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.ssiscatalogerpro&amp;ssr=false#overview" target="_blank" rel="noreferrer noopener">Visual Studio 2019</a>&nbsp;&amp;&nbsp;<a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.SSISCataloger2022" target="_blank" rel="noreferrer noopener">Visual Studio 2022</a>.<br>2. SSMS 18, 19, 20, 21(preview)<br>3. Standalone tool.</p>



<p class="wp-block-paragraph">More details are available in this&nbsp;<a href="https://youtu.be/VcYksuavI54" target="_blank" rel="noreferrer noopener">tutorial</a>.</p>



<h2 class="wp-block-heading">See more</h2>



<iframe width="700" height="394" src="https://www.youtube.com/embed/t2h6xNVFQkc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="is-style-fill wp-block-button"><a class="wp-block-button__link has-white-color has-blush-light-purple-gradient-background has-text-color has-background has-link-color wp-element-button" href="https://azureops.org/product/ssis-catalog-migration-wizard-pro/" target="_blank" rel="noreferrer noopener">Download Now</a></div>
</div>

    <div class="xs_social_share_widget xs_share_url after_content 		main_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content">

		
        <ul>
			        </ul>
    </div> 
<p>The post <a href="https://azureops.org/articles/transferring-sensitive-data-during-ssis-catalog-migrations-to-another-server/">Transferring Sensitive Data During SSIS Catalog Migrations to Another Server</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8534</post-id>	</item>
		<item>
		<title>How to Migrate SSRS Reports from One Server to Another (Step-by-Step)</title>
		<link>https://azureops.org/articles/ssrs-report-migration/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Mon, 23 Jun 2025 15:28:11 +0000</pubDate>
				<category><![CDATA[Microsoft BI]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SSRS]]></category>
		<guid isPermaLink="false">https://azureops.org/?p=8658</guid>

					<description><![CDATA[<p>In this guide, we’ll walk through the ssrs report migration process and share best practices to avoid common pitfalls.</p>
<p>The post <a href="https://azureops.org/articles/ssrs-report-migration/">How to Migrate SSRS Reports from One Server to Another (Step-by-Step)</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Migrating SSRS reports from one server to another is a common task for <strong>developers, DBAs, and DevOps engineers</strong> during SQL Server upgrades, cloud migrations, or environment rebuilds.<br>Managing SSRS report migrations can be a time-consuming and error-prone process, especially when dealing with large enterprise report servers that contain hundreds of reports, datasets, data sources, and subscriptions. To simplify this process, we created the <a href="https://ssrsmigrationwizard.azureops.org/" target="_blank" rel="noreferrer noopener">SSRS Reports Migration Wizard</a>, a Visual Studio extension and standalone utility that helps you automate and validate migrations with minimal manual steps. This guide walks through a <strong>production-safe, step-by-step SSRS report migration process</strong>, covering reports, shared data sources, subscriptions, permissions, and post-migration validation.</p>



<h2 class="wp-block-heading"> What Is SSRS Reports Migration Wizard?</h2>



<p class="wp-block-paragraph">SSRS Reports Migration Wizard is a tool that enables you to:</p>



<ul class="wp-block-list">
<li class="">Migrate reports, shared datasets, and shared data sources</li>



<li class="">Copy subscriptions (standard and data-driven)</li>



<li class="">Review and update connection strings and credentials</li>



<li class="">Migrate between servers, folders, or environments</li>



<li class=""><a href="https://azureops.org/articles/download-all-ssrs-reports-from-report-server/" target="_blank" rel="noreferrer noopener">Export and import SSRS items</a> using a lightweight <code>.SRMW</code> file format</li>



<li class="">Perform offline review and validation before actual migration</li>
</ul>



<p class="wp-block-paragraph">The wizard is available as a <strong>Visual Studio extension</strong> and as a <strong>standalone tool</strong>.</p>



<p class="has-pale-cyan-blue-background-color has-background wp-block-paragraph"><strong>Prerequisites</strong>:<br>Before Migrating SQL Server Reports<br>1. You have access to both source and target SSRS servers.<br>2. Your user account has:<br>-at least <strong>Browser</strong> role on the <strong>source</strong>&#8211;<br>-at least <strong>Publisher</strong> role on the <strong>target</strong><br>If you&#8217;re unsure how to grant access, follow the instructions in the <a>Granting Access Guide</a>.</p>



<h2 class="wp-block-heading">Use Cases</h2>



<ul class="wp-block-list">
<li class="">Migrating from dev to test/prod environments</li>



<li class="">Consolidating multiple SSRS servers</li>



<li class="">Backing up and archiving SSRS artifacts</li>



<li class="">Migrating from the old SSRS report server to the new server.</li>



<li class="">Migrate SSRS reports to Power BI report server.</li>
</ul>



<h2 class="wp-block-heading">Step-by-Step SSRS Report Migration Process</h2>



<iframe width="700" height="394" src="https://www.youtube.com/embed/U-U-PAzOLP4" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<p class="wp-block-paragraph">Follow the below steps to achieve SSRS report migration from one server to another.</p>



<h3 class="wp-block-heading">Step 1: Select the Source</h3>



<p class="wp-block-paragraph">Choose your source SSRS server or a <code>.SRMW</code> file created from a previous export.</p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-source.png?ssl=1"><img loading="lazy" decoding="async" width="593" height="493" data-attachment-id="8662" data-permalink="https://azureops.org/articles/ssrs-report-migration/select-source/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-source.png?fit=593%2C493&amp;ssl=1" data-orig-size="593,493" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="select-source" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-source.png?fit=593%2C493&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-source.png?fit=593%2C493&amp;ssl=1" alt="SSRS report migration" class="wp-image-8662" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-source.png?w=593&amp;ssl=1 593w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-source.png?resize=300%2C249&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-source.png?resize=450%2C374&amp;ssl=1 450w" sizes="(max-width: 593px) 100vw, 593px" /></a></figure>



<h3 class="wp-block-heading">Step 2: Select the Target</h3>



<p class="wp-block-paragraph">Provide connection details for the destination SSRS server. You can migrate to a different server, or a different folder on the same server.</p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-target.png?ssl=1"><img loading="lazy" decoding="async" width="596" height="492" data-attachment-id="8663" data-permalink="https://azureops.org/articles/ssrs-report-migration/select-target-2/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-target.png?fit=596%2C492&amp;ssl=1" data-orig-size="596,492" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="select-target" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-target.png?fit=596%2C492&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-target.png?fit=596%2C492&amp;ssl=1" alt="ssrs report migration" class="wp-image-8663" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-target.png?w=596&amp;ssl=1 596w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-target.png?resize=300%2C248&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/select-target.png?resize=450%2C371&amp;ssl=1 450w" sizes="(max-width: 596px) 100vw, 596px" /></a></figure>



<h3 class="wp-block-heading">Step 3: Choose Report Items to Migrate</h3>



<p class="wp-block-paragraph">Select specific folders, reports, datasets, and data sources using a tree view. Filters and checkboxes make large-scale selection easy.</p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-8.png?ssl=1"><img loading="lazy" decoding="async" width="595" height="493" data-attachment-id="9356" data-permalink="https://azureops.org/articles/ssrs-report-migration/image-48/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-8.png?fit=595%2C493&amp;ssl=1" data-orig-size="595,493" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-8.png?fit=595%2C493&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-8.png?fit=595%2C493&amp;ssl=1" alt="" class="wp-image-9356" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-8.png?w=595&amp;ssl=1 595w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-8.png?resize=300%2C249&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-8.png?resize=450%2C373&amp;ssl=1 450w" sizes="(max-width: 595px) 100vw, 595px" /></a></figure>



<h3 class="wp-block-heading" id="manage-folder-mapping">Step 4: Manage Folder Mapping</h3>



<p class="wp-block-paragraph">This step is available only when&nbsp;<strong>Rename target folders during migration</strong>&nbsp;is enabled. Use this screen to define how source folders should be created in the target environment.</p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-7.png?ssl=1"><img loading="lazy" decoding="async" width="590" height="495" data-attachment-id="9355" data-permalink="https://azureops.org/articles/ssrs-report-migration/image-47/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-7.png?fit=590%2C495&amp;ssl=1" data-orig-size="590,495" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-7.png?fit=590%2C495&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-7.png?fit=590%2C495&amp;ssl=1" alt="" class="wp-image-9355" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-7.png?w=590&amp;ssl=1 590w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-7.png?resize=300%2C252&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/image-7.png?resize=450%2C378&amp;ssl=1 450w" sizes="(max-width: 590px) 100vw, 590px" /></a></figure>



<h3 class="wp-block-heading">Step 5: Update Data Source Connection Strings &#8211; Migrating SSRS Data Sources</h3>



<p class="wp-block-paragraph">SSRS Reports Migration Wizard includes an optional step to update data source connection strings during the migration process. This is particularly useful when migrating reports and datasets from a source server to a target server that uses different connection details.</p>



<h4 class="wp-block-heading">Fetch Data Sources</h4>



<p class="wp-block-paragraph">On this screen, click the&nbsp;<strong>Fetch Data Sources</strong>&nbsp;button. The wizard will scan the selected SSRS items (from the previous screen) and populate a grid with all connections that can be updated.</p>



<p class="wp-block-paragraph">Each row represents a unique connection used by your reports or shared data sources.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/fetch-data-sources.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="593" height="496" data-attachment-id="9033" data-permalink="https://azureops.org/articles/ssrs-report-migration/image-border-editor-https-www-tuxpi-com-photo-effects-borders-6/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/fetch-data-sources.jpg?fit=593%2C496&amp;ssl=1" data-orig-size="593,496" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;Image Border Editor: https://www.tuxpi.com/photo-effects/borders&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Image Border Editor: https://www.tuxpi.com/photo-effects/borders" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/fetch-data-sources.jpg?fit=593%2C496&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/fetch-data-sources.jpg?resize=593%2C496&#038;ssl=1" alt="" class="wp-image-9033" style="width:597px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/fetch-data-sources.jpg?w=593&amp;ssl=1 593w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/fetch-data-sources.jpg?resize=300%2C251&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/fetch-data-sources.jpg?resize=450%2C376&amp;ssl=1 450w" sizes="(max-width: 593px) 100vw, 593px" /></a></figure>



<h4 class="wp-block-heading">View and Manage Connections</h4>



<p class="wp-block-paragraph">The grid displays the Extension, Connection String, and Credential Retrieval method for each data source. Click the&nbsp;<strong>Edit</strong>&nbsp;link in the&nbsp;<strong>Manage</strong>&nbsp;column, which allows you to modify the connection.</p>



<p class="wp-block-paragraph"><strong>Convert to shared data sources if connection exists</strong>&nbsp;&#8211; If this option is selected, the wizard will attempt to convert embedded data sources in reports to shared data sources during deployment, provided a shared data source with the same connection details is available in the selected SSRS items for deployment.</p>



<h4 class="wp-block-heading">Update Properties</h4>



<p class="wp-block-paragraph">When you click&nbsp;<strong>Edit</strong>, a new dialog box appears (labeled “Manage Connection Properties”). Here you can:</p>



<ul class="wp-block-list">
<li class="">Review the Shared Data Source(s) using this connection and Report(s) using this connection as an embedded data source.</li>



<li class="">Modify the Connection String.</li>



<li class="">Specify Credentials (e.g., Windows credentials or a user name and password) under “Log into the data source”.</li>



<li class="">Click&nbsp;<strong>Save</strong>&nbsp;to apply the changes.</li>
</ul>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/update-connection-string-2.png?ssl=1"><img loading="lazy" decoding="async" width="657" height="707" data-attachment-id="8870" data-permalink="https://azureops.org/articles/ssrs-report-migration/update-connection-string-3/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/update-connection-string-2.png?fit=657%2C707&amp;ssl=1" data-orig-size="657,707" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="update-connection-string" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/update-connection-string-2.png?fit=657%2C707&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/update-connection-string-2.png?fit=657%2C707&amp;ssl=1" alt="" class="wp-image-8870" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/update-connection-string-2.png?w=657&amp;ssl=1 657w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/update-connection-string-2.png?resize=279%2C300&amp;ssl=1 279w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/update-connection-string-2.png?resize=576%2C620&amp;ssl=1 576w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/update-connection-string-2.png?resize=450%2C484&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/update-connection-string-2.png?resize=600%2C646&amp;ssl=1 600w" sizes="(max-width: 657px) 100vw, 657px" /></a></figure>



<h4 class="wp-block-heading" id="important-notes">Important Notes</h4>



<ul class="wp-block-list">
<li class="">The wizard cannot retrieve passwords from embedded or shared data sources on the source report server. The wizard will guide you to convert them ot shared data sources and provide credentials.</li>



<li class="">The&nbsp;<em>Dependent Objects</em>&nbsp;shown in the grid are those that have a connection embedded within them. These objects are directly using this connection.</li>



<li class="">The changes you make are&nbsp;<strong>not committed to the target server</strong>&nbsp;until the wizard completes the migration.</li>



<li class="">If no connections are found for the selected items, a message box will inform you that there are no connections available for update.</li>
</ul>



<h3 class="wp-block-heading">Step 6: Review Changes</h3>



<p class="wp-block-paragraph">The wizard shows a migration summary with new, changed, or skipped items. You can export this list or proceed with the migration.</p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/review.jpg?ssl=1"><img loading="lazy" decoding="async" width="599" height="499" data-attachment-id="8838" data-permalink="https://azureops.org/articles/ssrs-report-migration/image-border-editor-https-www-tuxpi-com-photo-effects-borders-3/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/review.jpg?fit=599%2C499&amp;ssl=1" data-orig-size="599,499" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;Image Border Editor: https://www.tuxpi.com/photo-effects/borders&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Image Border Editor: https://www.tuxpi.com/photo-effects/borders" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/review.jpg?fit=599%2C499&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/review.jpg?fit=599%2C499&amp;ssl=1" alt="" class="wp-image-8838" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/review.jpg?w=599&amp;ssl=1 599w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/review.jpg?resize=300%2C250&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/review.jpg?resize=450%2C375&amp;ssl=1 450w" sizes="(max-width: 599px) 100vw, 599px" /></a></figure>



<h3 class="wp-block-heading">Step 7: Finish and Validate</h3>



<p class="wp-block-paragraph">Once migration is complete, a final summary screen shows migrated item counts and logs. You can rerun this process anytime.</p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/finish.jpg?ssl=1"><img loading="lazy" decoding="async" width="596" height="495" data-attachment-id="8837" data-permalink="https://azureops.org/articles/ssrs-report-migration/image-border-editor-https-www-tuxpi-com-photo-effects-borders-2/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/finish.jpg?fit=596%2C495&amp;ssl=1" data-orig-size="596,495" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;Image Border Editor: https://www.tuxpi.com/photo-effects/borders&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Image Border Editor: https://www.tuxpi.com/photo-effects/borders" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/finish.jpg?fit=596%2C495&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/finish.jpg?fit=596%2C495&amp;ssl=1" alt="" class="wp-image-8837" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/finish.jpg?w=596&amp;ssl=1 596w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/finish.jpg?resize=300%2C249&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/06/finish.jpg?resize=450%2C374&amp;ssl=1 450w" sizes="(max-width: 596px) 100vw, 596px" /></a></figure>



<h2 class="wp-block-heading" id="how-to-install">Installation</h2>



<p class="wp-block-paragraph">SSRS Reports Migration Wizard can be installed as an extension to:</p>



<p class="wp-block-paragraph">1.&nbsp;<a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.srmw1719" target="_blank" rel="noreferrer noopener">Visual Studio 2017</a>,&nbsp;<a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.srmw1719" target="_blank" rel="noreferrer noopener">Visual Studio 2019</a>, <a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.srmw2022" target="_blank" rel="noreferrer noopener">Visual Studio 2022</a> &amp;&nbsp;<a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.srmw2022" target="_blank" rel="noreferrer noopener">Visual Studio 2026</a>.<br>2. SSMS 18, 19, 20, 21, 22<br>3. Standalone tool.</p>



<h2 class="wp-block-heading">Standalone Usage</h2>



<p class="wp-block-paragraph">Don’t use Visual Studio? You can still run the wizard as a standalone tool:</p>



<ol class="wp-block-list">
<li class="">Download the <code>.vsix</code> from <a class="" href="https://marketplace.visualstudio.com/items?itemName=AzureOps.ssrsmigrationwizard">here</a>.</li>



<li class="">Rename the <code>.vsix</code> to <code>.zip</code> and extract it.</li>



<li class="">Launch <code>SSRS.Reports.Migration.Wizard.exe</code>.</li>
</ol>



<p class="has-background wp-block-paragraph" style="background-color:#bcefca"><strong>Pro tips:</strong><br>1. <a href="https://azureops.org/articles/download-all-ssrs-reports-from-report-server/" target="_blank" rel="noreferrer noopener">Learn </a>how to export all SSRS objects from the report server using SSRS Reports Migration Wizard.<br>2. <a href="https://azureops.org/articles/migrate-ssrs-reports-to-power-bi-report-server/" target="_blank" rel="noreferrer noopener">Learn </a>how to migrate SSRS Reports to Power BI Report Server. </p>

    <div class="xs_social_share_widget xs_share_url after_content 		main_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content">

		
        <ul>
			        </ul>
    </div> 
<p>The post <a href="https://azureops.org/articles/ssrs-report-migration/">How to Migrate SSRS Reports from One Server to Another (Step-by-Step)</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8658</post-id>	</item>
		<item>
		<title>CS2001 Missing AssemblyAttributes.cs when executing SSIS package deployed to the server</title>
		<link>https://azureops.org/articles/missing-assemblyattributes-when-executing-ssis-package/</link>
		
		<dc:creator><![CDATA[Kunal Rathi]]></dc:creator>
		<pubDate>Wed, 05 Mar 2025 07:02:00 +0000</pubDate>
				<category><![CDATA[Microsoft BI]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SSIS]]></category>
		<category><![CDATA[SSIS Catalog Migration]]></category>
		<category><![CDATA[SSIS Errors]]></category>
		<guid isPermaLink="false">https://azureops.org/?p=8153</guid>

					<description><![CDATA[<p>How to resolve error : CS2001 Missing AssemblyAttributes.cs when executing SSIS package deployed to the server.</p>
<p>The post <a href="https://azureops.org/articles/missing-assemblyattributes-when-executing-ssis-package/">CS2001 Missing AssemblyAttributes.cs when executing SSIS package deployed to the server</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Error at Script Task: The binary code for the script is not found. Please open the script in the designer by clicking Edit Script button and make sure it builds successfully.<br>Error at Script Task: There were errors during task validation.</p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Missing-AssemblyAttributes-SSIS-1.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1159" height="182" data-attachment-id="8156" data-permalink="https://azureops.org/articles/missing-assemblyattributes-when-executing-ssis-package/missing-assemblyattributes-ssis-2/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Missing-AssemblyAttributes-SSIS-1.png?fit=1159%2C182&amp;ssl=1" data-orig-size="1159,182" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Missing AssemblyAttributes SSIS" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Missing-AssemblyAttributes-SSIS-1.png?fit=1159%2C182&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Missing-AssemblyAttributes-SSIS-1.png?resize=1159%2C182&#038;ssl=1" alt="" class="wp-image-8156" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Missing-AssemblyAttributes-SSIS-1.png?w=1159&amp;ssl=1 1159w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Missing-AssemblyAttributes-SSIS-1.png?resize=300%2C47&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Missing-AssemblyAttributes-SSIS-1.png?resize=768%2C121&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Missing-AssemblyAttributes-SSIS-1.png?resize=450%2C71&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Missing-AssemblyAttributes-SSIS-1.png?resize=600%2C94&amp;ssl=1 600w" sizes="(max-width: 1159px) 100vw, 1159px" /></a></figure>



<p class="wp-block-paragraph">To resolve the CS2001 &#8220;Missing AssemblyAttributes.cs&#8221; error when executing an SSIS package on a deployed server, follow these steps to adjust folder permissions:</p>



<ol class="wp-block-list">
<li class="">Open <strong>Windows Explorer</strong> and navigate to <code>C:\Windows\Temp\</code>.</li>



<li class="">Right-click the folder and select <strong>Properties</strong>.</li>



<li class="">Switch to the <strong>Security</strong> tab and click <strong>Advanced</strong>.</li>



<li class="">In the <strong>Permissions</strong> tab, select <strong>Change Permissions</strong>.</li>



<li class="">Locate the relevant permission entry, then choose <strong>Edit</strong>.</li>



<li class="">Ensure the following permissions are enabled with <strong>Allow</strong> checked:
<ul class="wp-block-list">
<li class=""><strong>Traverse folder / Execute file</strong></li>



<li class=""><strong>Create files / Write data</strong></li>



<li class=""><strong>Create folders / Append data</strong></li>



<li class=""><strong>List folder / Read data</strong></li>



<li class=""><strong>Take ownership</strong></li>
</ul>
</li>



<li class="">Click <strong>OK</strong> to save the changes and close the window.</li>



<li class="">Press <strong>Apply to confirm</strong> any prompts that appear.</li>
</ol>



<p class="wp-block-paragraph">Even if the logged-in user already has full control, modifying the permissions for the &#8220;Users&#8221; group resolved the issue.</p>



<h2 class="wp-block-heading">See more</h2>



<iframe width="700" height="394" src="https://www.youtube.com/embed/t2h6xNVFQkc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="is-style-fill wp-block-button"><a class="wp-block-button__link has-white-color has-blush-light-purple-gradient-background has-text-color has-background has-link-color wp-element-button" href="https://azureops.org/product/ssis-catalog-migration-wizard-pro/" target="_blank" rel="noreferrer noopener">Download Now</a></div>
</div>

    <div class="xs_social_share_widget xs_share_url after_content 		main_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content">

		
        <ul>
			        </ul>
    </div> 
<p>The post <a href="https://azureops.org/articles/missing-assemblyattributes-when-executing-ssis-package/">CS2001 Missing AssemblyAttributes.cs when executing SSIS package deployed to the server</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8153</post-id>	</item>
		<item>
		<title>Deploy DACPAC to Azure SQL Database</title>
		<link>https://azureops.org/articles/deploy-dacpac-to-azure-sql-database/</link>
		
		<dc:creator><![CDATA[Kunal Rathi]]></dc:creator>
		<pubDate>Wed, 01 Jan 2025 07:56:13 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[SQL Database]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[dacpac]]></category>
		<category><![CDATA[dacpac sql server]]></category>
		<guid isPermaLink="false">https://azureops.org/?p=8224</guid>

					<description><![CDATA[<p>This guide will walk you through the process of deploy DACPAC to Azure SQL database directly from Visual Studio. </p>
<p>The post <a href="https://azureops.org/articles/deploy-dacpac-to-azure-sql-database/">Deploy DACPAC to Azure SQL Database</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Deploying a DACPAC to an Azure SQL Database is a critical step in ensuring your database changes are effectively moved from development to production. This guide will walk you through the process of deploy DACPAC to Azure SQL database directly from Visual Studio. </p>



<p class="has-pale-cyan-blue-background-color has-background wp-block-paragraph"><strong>Prerequisites:</strong><br>1. <a href="https://visualstudio.microsoft.com/downloads/" target="_blank" rel="noreferrer noopener">Visual Studio</a> with data tools installed on your system.<br>2. An Azure SQL Database set up and accessible.<br>3. A DACPAC file ready for deployment.</p>



<h2 class="wp-block-heading">Create a DACPAC File</h2>



<p class="wp-block-paragraph">In this <a href="https://azureops.org/articles/dacpac-sql-server-database/" target="_blank" rel="noreferrer noopener">post</a>, we cover the process of creating a DACPAC file, a critical artifact that encapsulates the schema and objects of a SQL Server database. Learn how to build and validate your DACPAC files to ensure seamless deployments.</p>



<h2 class="wp-block-heading">Open a DACPAC File in Visual Studio</h2>



<p class="wp-block-paragraph">Discover how to open and inspect a DACPAC file in Visual Studio. This <a href="https://azureops.org/articles/how-to-open-dacpac-file-in-visual-studio/" target="_blank" rel="noreferrer noopener">guide </a>provides details of how to open DACPAC file in Visual Studio.</p>



<h2 class="wp-block-heading">Deploy DACPAC to Azure SQL Database from Visual Studio</h2>



<p class="wp-block-paragraph">Follow the below steps to deploy the DACPAC project from visual Studio. You can follow the same below steps to deploy database project to any SQL Server database or Azure Managed Instance. Make sure to select correct target platform and provide applicable connection details.</p>



<h4 class="wp-block-heading">1. Open Visual Studio</h4>



<ol start="1" class="wp-block-list">
<li class="">Launch Visual Studio and open your solution or project.</li>



<li class="">Ensure you have the <strong>SQL Server Data Tools (SSDT)</strong> installed.</li>
</ol>



<h4 class="wp-block-heading">2. Change target platform of database project</h4>



<ol class="wp-block-list">
<li class="">Right-click on database project and click properties. </li>



<li class="">Change the Target platform to Microsoft Azure SQL Database as shown in the below image. </li>
</ol>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="753" height="203" data-attachment-id="8247" data-permalink="https://azureops.org/articles/deploy-dacpac-to-azure-sql-database/image-28/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image.png?fit=753%2C203&amp;ssl=1" data-orig-size="753,203" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image.png?fit=753%2C203&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image.png?resize=753%2C203&#038;ssl=1" alt="Change target platform of SQL database project. " class="wp-image-8247" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image.png?w=753&amp;ssl=1 753w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image.png?resize=300%2C81&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image.png?resize=450%2C121&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image.png?resize=600%2C162&amp;ssl=1 600w" sizes="(max-width: 753px) 100vw, 753px" /></a></figure>



<h4 class="wp-block-heading">3. Publish the Database Project</h4>



<p class="wp-block-paragraph">Right-click on the project and select <strong>Publish</strong> from the context menu.</p>



<p class="wp-block-paragraph">In <strong>Solution Explorer</strong>, locate your database project.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Select-DACPAC-project-for-deployment.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="555" height="461" data-attachment-id="8227" data-permalink="https://azureops.org/articles/deploy-dacpac-to-azure-sql-database/select-dacpac-project-for-deployment/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Select-DACPAC-project-for-deployment.jpg?fit=555%2C461&amp;ssl=1" data-orig-size="555,461" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Select DACPAC project for deployment" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Select-DACPAC-project-for-deployment.jpg?fit=555%2C461&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Select-DACPAC-project-for-deployment.jpg?resize=555%2C461&#038;ssl=1" alt="publish dacpac file from Visual Studio" class="wp-image-8227" style="width:406px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Select-DACPAC-project-for-deployment.jpg?w=555&amp;ssl=1 555w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Select-DACPAC-project-for-deployment.jpg?resize=300%2C249&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Select-DACPAC-project-for-deployment.jpg?resize=450%2C374&amp;ssl=1 450w" sizes="(max-width: 555px) 100vw, 555px" /></a></figure>



<h4 class="wp-block-heading">4. Configure the Deployment Target</h4>



<p class="wp-block-paragraph">1. In the <strong>Publish Database</strong> dialog, click <strong>Edit</strong> to specify the target database.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Edit-target-server-credentials.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="835" height="374" data-attachment-id="8228" data-permalink="https://azureops.org/articles/deploy-dacpac-to-azure-sql-database/edit-target-server-credentials/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Edit-target-server-credentials.jpg?fit=835%2C374&amp;ssl=1" data-orig-size="835,374" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Edit target server credentials" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Edit-target-server-credentials.jpg?fit=835%2C374&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Edit-target-server-credentials.jpg?resize=835%2C374&#038;ssl=1" alt="Create Azure SQL database connection for dacpac deployment " class="wp-image-8228" style="width:558px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Edit-target-server-credentials.jpg?w=835&amp;ssl=1 835w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Edit-target-server-credentials.jpg?resize=300%2C134&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Edit-target-server-credentials.jpg?resize=768%2C344&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Edit-target-server-credentials.jpg?resize=450%2C202&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Edit-target-server-credentials.jpg?resize=600%2C269&amp;ssl=1 600w" sizes="(max-width: 835px) 100vw, 835px" /></a></figure>



<p class="wp-block-paragraph">2. In the <strong>Edit Target Database Connection</strong> window:</p>



<ul class="wp-block-list">
<li class="">Select <strong>Azure SQL Database</strong> as the target.</li>



<li class="">Enter the server name, authentication details, and select the target database.</li>



<li class="">Test the connection to ensure it is valid.</li>



<li class="">Click <strong>OK</strong> to confirm.</li>
</ul>



<figure class="wp-block-image size-full is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Provide-target-server-and-database-details.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="879" height="645" data-attachment-id="8229" data-permalink="https://azureops.org/articles/deploy-dacpac-to-azure-sql-database/provide-target-server-and-database-details/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Provide-target-server-and-database-details.jpg?fit=879%2C645&amp;ssl=1" data-orig-size="879,645" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Provide target server and database details" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Provide-target-server-and-database-details.jpg?fit=879%2C645&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Provide-target-server-and-database-details.jpg?resize=879%2C645&#038;ssl=1" alt="Deploy DACPAC to Azure SQL Database" class="wp-image-8229" style="width:555px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Provide-target-server-and-database-details.jpg?w=879&amp;ssl=1 879w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Provide-target-server-and-database-details.jpg?resize=300%2C220&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Provide-target-server-and-database-details.jpg?resize=845%2C620&amp;ssl=1 845w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Provide-target-server-and-database-details.jpg?resize=768%2C564&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Provide-target-server-and-database-details.jpg?resize=450%2C330&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Provide-target-server-and-database-details.jpg?resize=600%2C440&amp;ssl=1 600w" sizes="(max-width: 879px) 100vw, 879px" /></a></figure>



<figure class="is-style-default wp-block-image size-large is-resized"><a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.ssiscatalogerpro&amp;ssr=false#overview" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1200" height="148" data-attachment-id="4839" data-permalink="https://azureops.org/articles/azure-data-studio-for-sql-developers/scmw-horizontal-ad/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?fit=1326%2C163&amp;ssl=1" data-orig-size="1326,163" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SCMW-horizontal-ad" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?fit=1200%2C148&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=1200%2C148&#038;ssl=1" alt="" class="wp-image-4839" style="object-fit:cover;width:811px;height:99px" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=1200%2C148&amp;ssl=1 1200w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=450%2C55&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=600%2C74&amp;ssl=1 600w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=300%2C37&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=768%2C94&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?w=1326&amp;ssl=1 1326w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></figure>



<h4 class="wp-block-heading">5. Review and Publish</h4>



<p class="wp-block-paragraph">1. Back in the <strong>Publish Database</strong> dialog, review the settings to ensure the correct DACPAC file and target database are selected.</p>



<p class="wp-block-paragraph">2. Optionally, click <strong>Advanced</strong> to configure deployment options such as excluding certain schema changes as shown in the below image.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image-1.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="507" height="639" data-attachment-id="8250" data-permalink="https://azureops.org/articles/deploy-dacpac-to-azure-sql-database/image-29/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image-1.png?fit=507%2C639&amp;ssl=1" data-orig-size="507,639" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image-1.png?fit=507%2C639&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image-1.png?resize=507%2C639&#038;ssl=1" alt="" class="wp-image-8250" style="width:378px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image-1.png?w=507&amp;ssl=1 507w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image-1.png?resize=238%2C300&amp;ssl=1 238w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image-1.png?resize=492%2C620&amp;ssl=1 492w, https://i0.wp.com/azureops.org/wp-content/uploads/2025/01/image-1.png?resize=450%2C567&amp;ssl=1 450w" sizes="(max-width: 507px) 100vw, 507px" /></a></figure>



<p class="wp-block-paragraph">3. Click <strong>Publish</strong> to start the deployment process.</p>



<figure class="wp-block-image size-full is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Click-publish-dapac-project-to-azure-sql.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="683" height="344" data-attachment-id="8230" data-permalink="https://azureops.org/articles/deploy-dacpac-to-azure-sql-database/click-publish-dapac-project-to-azure-sql/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Click-publish-dapac-project-to-azure-sql.jpg?fit=683%2C344&amp;ssl=1" data-orig-size="683,344" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;1&quot;}" data-image-title="Click publish dapac project to azure sql" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Click-publish-dapac-project-to-azure-sql.jpg?fit=683%2C344&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Click-publish-dapac-project-to-azure-sql.jpg?resize=683%2C344&#038;ssl=1" alt="Deploy DACPAC to Azure SQL Database" class="wp-image-8230" style="width:535px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Click-publish-dapac-project-to-azure-sql.jpg?w=683&amp;ssl=1 683w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Click-publish-dapac-project-to-azure-sql.jpg?resize=300%2C151&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Click-publish-dapac-project-to-azure-sql.jpg?resize=450%2C227&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/Click-publish-dapac-project-to-azure-sql.jpg?resize=600%2C302&amp;ssl=1 600w" sizes="(max-width: 683px) 100vw, 683px" /></a></figure>



<h4 class="wp-block-heading">6. Monitor and Verify Deployment</h4>



<ol start="1" class="wp-block-list">
<li class="">Monitor the progress of dacpac publish in Visual Studio as shown in the below image.</li>



<li class="">Once the deployment is complete, open <strong>SQL Server Management Studio (SSMS)</strong> or use Visual Studio’s built-in tools to verify the schema changes in your Azure SQL Database.</li>



<li class="">Run test queries to confirm the database is functioning as expected.</li>
</ol>



<figure class="wp-block-image size-full is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/monitor-the-progress-of-deployment.jpg?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="677" height="90" data-attachment-id="8231" data-permalink="https://azureops.org/articles/deploy-dacpac-to-azure-sql-database/monitor-the-progress-of-deployment/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/monitor-the-progress-of-deployment.jpg?fit=677%2C90&amp;ssl=1" data-orig-size="677,90" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="monitor the progress of deployment" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/monitor-the-progress-of-deployment.jpg?fit=677%2C90&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/monitor-the-progress-of-deployment.jpg?resize=677%2C90&#038;ssl=1" alt="" class="wp-image-8231" style="width:581px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/monitor-the-progress-of-deployment.jpg?w=677&amp;ssl=1 677w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/monitor-the-progress-of-deployment.jpg?resize=300%2C40&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/monitor-the-progress-of-deployment.jpg?resize=450%2C60&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/monitor-the-progress-of-deployment.jpg?resize=600%2C80&amp;ssl=1 600w" sizes="(max-width: 677px) 100vw, 677px" /></a></figure>



<p class="has-background wp-block-paragraph" style="background-color:#bcefca"><strong>Pro tips:</strong><br>1. Refer to this <a href="https://azureops.org/articles/implement-azure-sql-database-deployment-ci-cd-pipeline/" target="_blank" rel="noreferrer noopener">post </a>if you wish to Automate Azure SQL Database deployment using Azure DevOps CICD pipeline.<br>2. If you skip target platform change step during the deployment, you may get an error &#8220;A project which specifies SQL Server 2022 or Azure SQL Database Managed Instance as the target platform cannot be published to Microsoft Azure SQL Database v12.&#8221;. Refer to this <a href="https://azureops.org/articles/a-project-which-specifies-sql-server-2022-or-azure-sql-database-managed-instance-as-the-target-platform-cannot-be-published-to-microsoft-azure-sql-database-v12/" target="_blank" rel="noreferrer noopener">post </a>to learn more about it.<br>3. Test your DACPAC deployment on a local environment before pushing it to Azure.<br>4. Always take a backup of your target Azure SQL Database before deployment.<br>5. Use tools like SQL Compare to identify schema differences between the DACPAC and the target database.<br></p>



<h2 class="wp-block-heading">FAQ</h2>


<div class="wp-block-uagb-faq uagb-faq__outer-wrap uagb-block-f06236a7 uagb-faq-icon-row uagb-faq-layout-accordion uagb-faq-expand-first-true uagb-faq-inactive-other-true uagb-faq__wrap uagb-buttons-layout-wrap uagb-faq-equal-height     " data-faqtoggle="true" role="tablist"><div class="wp-block-uagb-faq-child uagb-faq-child__outer-wrap uagb-faq-item uagb-block-3becbfb9 " role="tab" tabindex="0"><div class="uagb-faq-questions-button uagb-faq-questions">			<span class="uagb-icon uagb-faq-icon-wrap">
								<svg xmlns="https://www.w3.org/2000/svg" viewBox= "0 0 448 512"><path d="M432 256c0 17.69-14.33 32.01-32 32.01H256v144c0 17.69-14.33 31.99-32 31.99s-32-14.3-32-31.99v-144H48c-17.67 0-32-14.32-32-32.01s14.33-31.99 32-31.99H192v-144c0-17.69 14.33-32.01 32-32.01s32 14.32 32 32.01v144h144C417.7 224 432 238.3 432 256z"></path></svg>
							</span>
						<span class="uagb-icon-active uagb-faq-icon-wrap">
								<svg xmlns="https://www.w3.org/2000/svg" viewBox= "0 0 448 512"><path d="M400 288h-352c-17.69 0-32-14.32-32-32.01s14.31-31.99 32-31.99h352c17.69 0 32 14.3 32 31.99S417.7 288 400 288z"></path></svg>
							</span>
			<span class="uagb-question">1. How do I deploy a DACPAC using SSMS?</span></div><div class="uagb-faq-content"><p>In SQL Server Management Studio, right-click the target database → Tasks → Deploy Data-tier Application → select your DACPAC file.</p></div></div><div class="wp-block-uagb-faq-child uagb-faq-child__outer-wrap uagb-faq-item uagb-block-e5bcb60d " role="tab" tabindex="0"><div class="uagb-faq-questions-button uagb-faq-questions">			<span class="uagb-icon uagb-faq-icon-wrap">
								<svg xmlns="https://www.w3.org/2000/svg" viewBox= "0 0 448 512"><path d="M432 256c0 17.69-14.33 32.01-32 32.01H256v144c0 17.69-14.33 31.99-32 31.99s-32-14.3-32-31.99v-144H48c-17.67 0-32-14.32-32-32.01s14.33-31.99 32-31.99H192v-144c0-17.69 14.33-32.01 32-32.01s32 14.32 32 32.01v144h144C417.7 224 432 238.3 432 256z"></path></svg>
							</span>
						<span class="uagb-icon-active uagb-faq-icon-wrap">
								<svg xmlns="https://www.w3.org/2000/svg" viewBox= "0 0 448 512"><path d="M400 288h-352c-17.69 0-32-14.32-32-32.01s14.31-31.99 32-31.99h352c17.69 0 32 14.3 32 31.99S417.7 288 400 288z"></path></svg>
							</span>
			<span class="uagb-question">2. Can I deploy a DACPAC using command line?</span></div><div class="uagb-faq-content"><p>Yes. Use the <code>sqlpackage.exe /Action:Publish /SourceFile:mydb.dacpac /TargetConnectionString:"..."</code> command.</p></div></div><div class="wp-block-uagb-faq-child uagb-faq-child__outer-wrap uagb-faq-item uagb-block-dfafc55e " role="tab" tabindex="0"><div class="uagb-faq-questions-button uagb-faq-questions">			<span class="uagb-icon uagb-faq-icon-wrap">
								<svg xmlns="https://www.w3.org/2000/svg" viewBox= "0 0 448 512"><path d="M432 256c0 17.69-14.33 32.01-32 32.01H256v144c0 17.69-14.33 31.99-32 31.99s-32-14.3-32-31.99v-144H48c-17.67 0-32-14.32-32-32.01s14.33-31.99 32-31.99H192v-144c0-17.69 14.33-32.01 32-32.01s32 14.32 32 32.01v144h144C417.7 224 432 238.3 432 256z"></path></svg>
							</span>
						<span class="uagb-icon-active uagb-faq-icon-wrap">
								<svg xmlns="https://www.w3.org/2000/svg" viewBox= "0 0 448 512"><path d="M400 288h-352c-17.69 0-32-14.32-32-32.01s14.31-31.99 32-31.99h352c17.69 0 32 14.3 32 31.99S417.7 288 400 288z"></path></svg>
							</span>
			<span class="uagb-question">3. What errors are common during DACPAC deployment?</span></div><div class="uagb-faq-content"><p>Common issues include schema conflicts, missing permissions, and version mismatches. Use <code>/p:BlockOnPossibleDataLoss=false</code> carefully if schema changes drop objects.</p></div></div></div>


<h2 class="wp-block-heading">See more</h2>



<iframe width="700" height="394" src="https://www.youtube.com/embed/t2h6xNVFQkc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="is-style-fill wp-block-button"><a class="wp-block-button__link has-white-color has-blush-light-purple-gradient-background has-text-color has-background has-link-color wp-element-button" href="https://azureops.org/product/ssis-catalog-migration-wizard-pro/" target="_blank" rel="noreferrer noopener">Download Now</a></div>
</div>

    <div class="xs_social_share_widget xs_share_url after_content 		main_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content">

		
        <ul>
			        </ul>
    </div> 
<p>The post <a href="https://azureops.org/articles/deploy-dacpac-to-azure-sql-database/">Deploy DACPAC to Azure SQL Database</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8224</post-id>	</item>
		<item>
		<title>SQL Server 2025 Preview Announced</title>
		<link>https://azureops.org/articles/sql-server-2025/</link>
		
		<dc:creator><![CDATA[admin]]></dc:creator>
		<pubDate>Fri, 20 Dec 2024 12:48:58 +0000</pubDate>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQL Server 2025 preview]]></category>
		<guid isPermaLink="false">https://azureops.org/?p=8169</guid>

					<description><![CDATA[<p>Microsoft has announced SQL Server 2025 preview, marking a significant advancement in database technology by integrating AI capabilities</p>
<p>The post <a href="https://azureops.org/articles/sql-server-2025/">SQL Server 2025 Preview Announced</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Microsoft has announced SQL Server 2025, now available in private preview, marking a significant advancement in database technology by integrating artificial intelligence (AI) capabilities directly into the platform.</p>



<h2 class="wp-block-heading">AI Integration</h2>



<p class="wp-block-paragraph"><a href="https://www.microsoft.com/en-us/sql-server/blog/2024/11/19/announcing-microsoft-sql-server-2025-apply-for-the-preview-for-the-enterprise-ai-ready-database/">SQL Server 2025</a> introduces built-in AI features, simplifying the development of AI applications and retrieval-augmented generation (RAG) patterns. It offers secure, performant, and user-friendly vector support through familiar T-SQL syntax, enabling the combination of vectors with traditional SQL data for hybrid AI vector searches.</p>



<p class="wp-block-paragraph">The platform includes a native vector store and indexing powered by DiskANN, a technology that utilizes disk storage to efficiently identify similar data points within extensive datasets. This facilitates semantic searching and accurate data retrieval. Additionally, flexible AI model management within the SQL engine via Representational State Transfer (REST) interfaces allows the use of AI models across various environments.</p>



<h2 class="wp-block-heading">Developer Productivity Enhancements</h2>



<p class="wp-block-paragraph">To boost developer productivity, SQL Server 2025 incorporates features such as REST API support, GraphQL integration through Data API Builder, and regular expression enablement. Native JSON support is also included, allowing developers to handle dynamic schemas and hierarchical data more effectively, facilitating the creation of more adaptable applications.</p>



<h2 class="wp-block-heading">Security and Performance Improvements</h2>



<p class="wp-block-paragraph">Maintaining its reputation for security and performance, SQL Server 2025 introduces support for Microsoft Entra managed identities, enhancing credential management and reducing potential vulnerabilities. The platform also includes outbound authentication support for Managed Service Identity (MSI) enabled by Azure Arc. Performance and availability enhancements, extensively tested on Microsoft Azure SQL, are incorporated to boost workload performance and streamline troubleshooting with improved query optimization and execution.</p>



<h2 class="wp-block-heading">Integration with Microsoft Fabric and Azure Arc</h2>



<p class="wp-block-paragraph">SQL Server 2025 offers seamless integration with Microsoft Fabric and Azure Arc, supporting hybrid environments across clouds, on-premises datacenters, and edge deployments. This integration allows customers to leverage Microsoft Azure innovations within their databases, facilitating the development of modern, AI-driven applications.</p>



<figure class="is-style-default wp-block-image size-large is-resized"><a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.ssiscatalogerpro&amp;ssr=false#overview" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1200" height="148" data-attachment-id="4839" data-permalink="https://azureops.org/articles/azure-data-studio-for-sql-developers/scmw-horizontal-ad/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?fit=1326%2C163&amp;ssl=1" data-orig-size="1326,163" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SCMW-horizontal-ad" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?fit=1200%2C148&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=1200%2C148&#038;ssl=1" alt="" class="wp-image-4839" style="object-fit:cover;width:811px;height:99px" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=1200%2C148&amp;ssl=1 1200w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=450%2C55&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=600%2C74&amp;ssl=1 600w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=300%2C37&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=768%2C94&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?w=1326&amp;ssl=1 1326w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></figure>



<h2 class="wp-block-heading">SSIS in SQL Server 2025</h2>



<p class="wp-block-paragraph">Microsoft has not revealed anything about SQL Server Integration Services in SQL Server 2025 yet. However, we are expecting it to be announced in year 2025 along with other MSBI tools like SQL Server Reporting Services and SQL Server Analysis Services. </p>



<h2 class="wp-block-heading">Availability</h2>



<p class="wp-block-paragraph">While a specific release date has not been announced, SQL Server 2025 is currently in private preview. Interested organizations can apply for the preview to explore the new features and capabilities of this AI-ready database platform.</p>



<p class="wp-block-paragraph">For a more in-depth understanding of SQL Server 2025 and its features, you can watch the following presentation:</p>



<h2 class="wp-block-heading" id="sign-up-for-the-preview-today">Sign up for the preview today</h2>



<p class="wp-block-paragraph">Microsoft is currently onboarding customers and partners to SQL Server 2025 preview, in advance of general availability in the coming year.&nbsp;</p>



<p class="wp-block-paragraph"><a href="https://aka.ms/sqleapsignup" target="_blank" rel="noreferrer noopener">Register today</a>&nbsp;to apply for the SQL Server 2025 Community Technology Preview (CTP)<sup>1</sup>&nbsp;and stay informed about SQL Server 2025 updates.</p>



<figure class="wp-embed-aspect-16-9 wp-has-aspect-ratio wp-block-embed is-type-rich is-provider-embed-handler wp-block-embed-embed-handler"><div class="wp-block-embed__wrapper">
<iframe title="SQL Server 2025: an enterprise AI-ready database platform | BRK195" width="1709" height="961" src="https://www.youtube.com/embed/NamOXtqDSA8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p class="wp-block-paragraph"><strong>Refences:</strong><br>https://www.microsoft.com/en-us/sql-server/blog/2024/11/19/announcing-microsoft-sql-server-2025-apply-for-the-preview-for-the-enterprise-ai-ready-database/</p>



<p class="wp-block-paragraph">This article is partly written using AI.</p>

    <div class="xs_social_share_widget xs_share_url after_content 		main_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content">

		
        <ul>
			        </ul>
    </div> 
<p>The post <a href="https://azureops.org/articles/sql-server-2025/">SQL Server 2025 Preview Announced</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8169</post-id>	</item>
		<item>
		<title>Parse JSON in SQL Server</title>
		<link>https://azureops.org/articles/parse-json-in-sql-server/</link>
		
		<dc:creator><![CDATA[Kunal Rathi]]></dc:creator>
		<pubDate>Thu, 17 Oct 2024 16:29:43 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[SQL Database]]></category>
		<category><![CDATA[SQL Server]]></category>
		<guid isPermaLink="false">https://azureops.org/?p=8180</guid>

					<description><![CDATA[<p>JSON (JavaScript Object Notation) is a lightweight data-interchange format that has become a standard for data exchange in web and database applications. With the rise of JSON&#8217;s popularity, SQL Server introduced built-in support for JSON starting with SQL Server 2016. In this article, we will explore how to parse JSON in SQL Server and extract [&#8230;]</p>
<p>The post <a href="https://azureops.org/articles/parse-json-in-sql-server/">Parse JSON in SQL Server</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">JSON (JavaScript Object Notation) is a lightweight data-interchange format that has become a standard for data exchange in web and database applications. With the rise of JSON&#8217;s popularity, SQL Server introduced built-in support for JSON starting with <a href="https://azureops.org/articles/tag/sql-server-2025-preview/" target="_blank" rel="noreferrer noopener">SQL Server</a> 2016. In this article, we will explore how to parse JSON in SQL Server and extract meaningful data with practical examples.</p>



<h2 class="wp-block-heading">Why JSON in SQL Server?</h2>



<p class="wp-block-paragraph">JSON allows applications to exchange structured data with simplicity and efficiency. SQL Server’s JSON support makes it easy to:</p>



<ol start="1" class="wp-block-list">
<li class="">Store JSON data in table columns.</li>



<li class="">Query JSON data directly from the database.</li>



<li class="">Transform JSON data into relational formats.</li>
</ol>



<p class="wp-block-paragraph">The key functions provided by SQL Server for JSON manipulation include:</p>



<ul class="wp-block-list">
<li class=""><code>OPENJSON()</code>: Parses JSON text and returns objects in tabular format.</li>



<li class=""><code>JSON_VALUE()</code>: Extracts a scalar value from a JSON string.</li>



<li class=""><code>JSON_QUERY()</code>: Retrieves a JSON object or array from a JSON string.</li>
</ul>



<h2 class="wp-block-heading">How to Parse JSON in SQL Query</h2>



<p class="wp-block-paragraph">Let us see various examples of parsing JSON strings in SQL Server.</p>



<h3 class="wp-block-heading">Parsing JSON with OPENJSON()</h3>



<p class="wp-block-paragraph">The <code>OPENJSON()</code> function is the most versatile tool for working with JSON in SQL Server. It can parse JSON text and return a result set that can be queried like a regular table.</p>



<h4 class="wp-block-heading">Example 1: Basic JSON Parsing</h4>



<p class="wp-block-paragraph">Suppose you have the following JSON stored in a variable:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
DECLARE @json NVARCHAR(MAX) =
    N&#039;{
        &quot;employees&quot;: &#x5B;
            {&quot;id&quot;: 1, &quot;name&quot;: &quot;John Doe&quot;, &quot;role&quot;: &quot;Manager&quot;},
            {&quot;id&quot;: 2, &quot;name&quot;: &quot;Jane Smith&quot;, &quot;role&quot;: &quot;Developer&quot;}
        ]
    }&#039;;
</pre></div>


<p class="wp-block-paragraph">To parse this JSON and extract the employee details, you can use <code>OPENJSON()</code> with a specified path:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
SELECT id, name, role
FROM OPENJSON(@json, &#039;$.employees&#039;)
WITH (
    id INT &#039;$.id&#039;,
    name NVARCHAR(50) &#039;$.name&#039;,
    role NVARCHAR(50) &#039;$.role&#039;
);
</pre></div>


<p class="wp-block-paragraph"><strong>Output:</strong></p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-1.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="216" height="98" data-attachment-id="8185" data-permalink="https://azureops.org/articles/parse-json-in-sql-server/image-23/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-1.png?fit=216%2C98&amp;ssl=1" data-orig-size="216,98" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-1.png?fit=216%2C98&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-1.png?resize=216%2C98&#038;ssl=1" alt="" class="wp-image-8185"/></a></figure>



<p class="wp-block-paragraph"><strong>Explanation:</strong></p>



<ul class="wp-block-list">
<li class=""><code>'$'</code> denotes the root of the JSON object.</li>



<li class=""><code>$.employees</code> navigates to the <code>employees</code> array within the JSON.</li>



<li class="">The <code>WITH</code> clause specifies the schema for the JSON fields to be extracted.</li>
</ul>



<h3 class="wp-block-heading">Extracting Values with JSON_VALUE()</h3>



<p class="wp-block-paragraph">The function is ideal if you need to extract individual values from a JSON string.</p>



<h4 class="wp-block-heading">Example 2: Extract a Specific Value</h4>



<p class="wp-block-paragraph">Using the same JSON example above, you can retrieve the name of the first employee:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
SELECT JSON_VALUE(@json, &#039;$.employees&#x5B;0].name&#039;) AS FirstEmployeeName;
</pre></div>


<p class="wp-block-paragraph"><strong>Output:</strong></p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-2.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="171" height="71" data-attachment-id="8186" data-permalink="https://azureops.org/articles/parse-json-in-sql-server/image-24/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-2.png?fit=171%2C71&amp;ssl=1" data-orig-size="171,71" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-2.png?fit=171%2C71&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-2.png?resize=171%2C71&#038;ssl=1" alt="" class="wp-image-8186"/></a></figure>



<h3 class="wp-block-heading">Extracting Nested Objects with JSON_QUERY()</h3>



<p class="wp-block-paragraph">The <code>JSON_QUERY()</code> function is used to extract complex objects or arrays from a JSON string.</p>



<h4 class="wp-block-heading">Example 3: Extract an Array</h4>



<p class="wp-block-paragraph">To extract the entire <code>employees</code> array:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
SELECT JSON_QUERY(@json, &#039;$.employees&#039;) AS EmployeesArray;
</pre></div>


<figure class="is-style-default wp-block-image size-large is-resized"><a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.ssiscatalogerpro&amp;ssr=false#overview" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1200" height="148" data-attachment-id="4839" data-permalink="https://azureops.org/articles/azure-data-studio-for-sql-developers/scmw-horizontal-ad/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?fit=1326%2C163&amp;ssl=1" data-orig-size="1326,163" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SCMW-horizontal-ad" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?fit=1200%2C148&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=1200%2C148&#038;ssl=1" alt="" class="wp-image-4839" style="object-fit:cover;width:811px;height:99px" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=1200%2C148&amp;ssl=1 1200w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=450%2C55&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=600%2C74&amp;ssl=1 600w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=300%2C37&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=768%2C94&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?w=1326&amp;ssl=1 1326w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></figure>



<h3 class="wp-block-heading">Combining JSON Functions in Queries</h3>



<p class="wp-block-paragraph">You can combine these functions to manipulate and query JSON data effectively.</p>



<h4 class="wp-block-heading">Example 4: Parsing JSON Stored in a Table</h4>



<p class="wp-block-paragraph">Assume you have a table named <code>EmployeeData</code> with a column <code>EmployeeJSON</code> that stores JSON strings.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
CREATE TABLE EmployeeData (
    Id INT IDENTITY PRIMARY KEY,
    EmployeeJSON NVARCHAR(MAX)
);

INSERT INTO EmployeeData (EmployeeJSON)
VALUES
(N&#039;{&quot;id&quot;: 1, &quot;name&quot;: &quot;John Doe&quot;, &quot;role&quot;: &quot;Manager&quot;}&#039;),
(N&#039;{&quot;id&quot;: 2, &quot;name&quot;: &quot;Jane Smith&quot;, &quot;role&quot;: &quot;Developer&quot;}&#039;);
</pre></div>


<p class="wp-block-paragraph">To extract and display employee details:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
SELECT
    JSON_VALUE(EmployeeJSON, &#039;$.id&#039;) AS EmployeeId,
    JSON_VALUE(EmployeeJSON, &#039;$.name&#039;) AS EmployeeName,
    JSON_VALUE(EmployeeJSON, &#039;$.role&#039;) AS EmployeeRole
FROM EmployeeData;
</pre></div>


<p class="wp-block-paragraph"><strong>Output:</strong></p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-3.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="291" height="90" data-attachment-id="8187" data-permalink="https://azureops.org/articles/parse-json-in-sql-server/image-25/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-3.png?fit=291%2C90&amp;ssl=1" data-orig-size="291,90" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-3.png?fit=291%2C90&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-3.png?resize=291%2C90&#038;ssl=1" alt="" class="wp-image-8187"/></a></figure>



<h3 class="wp-block-heading">Parsing Complex JSON Objects</h3>



<p class="wp-block-paragraph">SQL Server can handle deeply nested JSON structures. Let’s consider a more complex example:</p>



<h4 class="wp-block-heading">Example 5: Parsing Nested JSON with Arrays and Objects</h4>



<p class="wp-block-paragraph">Suppose you have a JSON structure with nested objects:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
DECLARE @complexJson NVARCHAR(MAX) =
    N&#039;{
        &quot;company&quot;: {
            &quot;name&quot;: &quot;TechCorp&quot;,
            &quot;employees&quot;: &#x5B;
                {
                    &quot;id&quot;: 1,
                    &quot;name&quot;: &quot;John Doe&quot;,
                    &quot;details&quot;: {
                        &quot;role&quot;: &quot;Manager&quot;,
                        &quot;salary&quot;: 75000
                    }
                },
                {
                    &quot;id&quot;: 2,
                    &quot;name&quot;: &quot;Jane Smith&quot;,
                    &quot;details&quot;: {
                        &quot;role&quot;: &quot;Developer&quot;,
                        &quot;salary&quot;: 60000
                    }
                }
            ]
        }
    }&#039;;
</pre></div>


<p class="wp-block-paragraph">To extract employee details including nested properties:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
SELECT id, name, role, salary
FROM OPENJSON(@complexJson, &#039;$.company.employees&#039;)
WITH (
    id INT &#039;$.id&#039;,
    name NVARCHAR(50) &#039;$.name&#039;,
    role NVARCHAR(50) &#039;$.details.role&#039;,
    salary INT &#039;$.details.salary&#039;
);
</pre></div>


<p class="wp-block-paragraph"><strong>Explanation:</strong></p>



<ul class="wp-block-list">
<li class="">The path <code>$.company.employees</code> navigates to the employees array inside the <code>company</code> object.</li>



<li class="">Nested properties like <code>role</code> and <code>salary</code> are accessed using the full JSON path (<code>$.details.role</code> and <code>$.details.salary</code>).</li>
</ul>



<p class="wp-block-paragraph"><strong>Output:</strong></p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-4.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="266" height="96" data-attachment-id="8192" data-permalink="https://azureops.org/articles/parse-json-in-sql-server/image-26/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-4.png?fit=266%2C96&amp;ssl=1" data-orig-size="266,96" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-4.png?fit=266%2C96&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/12/image-4.png?resize=266%2C96&#038;ssl=1" alt="" class="wp-image-8192"/></a></figure>



<p class="has-background wp-block-paragraph" style="background-color:#bcefda"><strong>Pro tips:</strong><br>1. SQL Server’s JSON functions make it incredibly simple to parse and manipulate JSON data without requiring additional tools or complex workarounds. Whether you’re working with JSON stored in variables or tables, these functions provide powerful options for extracting and querying data.<br>2. Understanding these features simplifies JSON handling and enhances your ability to work effectively with modern data formats. Start leveraging SQL Server’s JSON capabilities in your next project to streamline your data workflows.<br>3. SQL Server 2025 private preview is announced. Read more about it <a href="https://azureops.org/articles/sql-server-2025/" target="_blank" rel="noreferrer noopener">here</a>.<br>4. If you want to improve performance of SQL Server database, you can find long running queries by following this <a href="https://azureops.org/articles/find-long-running-queries-in-azure-sql-database/" target="_blank" rel="noreferrer noopener">post</a>.</p>



<h2 class="wp-block-heading">See more</h2>



<iframe width="700" height="394" src="https://www.youtube.com/embed/t2h6xNVFQkc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="is-style-fill wp-block-button"><a class="wp-block-button__link has-white-color has-blush-light-purple-gradient-background has-text-color has-background has-link-color wp-element-button" href="https://azureops.org/product/ssis-catalog-migration-wizard-pro/" target="_blank" rel="noreferrer noopener">Download Now</a></div>
</div>

    <div class="xs_social_share_widget xs_share_url after_content 		main_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content">

		
        <ul>
			        </ul>
    </div> 
<p>The post <a href="https://azureops.org/articles/parse-json-in-sql-server/">Parse JSON in SQL Server</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">8180</post-id>	</item>
		<item>
		<title>A project which specifies SQL Server 2022 or Azure SQL Database Managed Instance as the target platform cannot be published to Microsoft Azure SQL Database v12.</title>
		<link>https://azureops.org/articles/a-project-which-specifies-sql-server-2022-or-azure-sql-database-managed-instance-as-the-target-platform-cannot-be-published-to-microsoft-azure-sql-database-v12/</link>
		
		<dc:creator><![CDATA[Kunal Rathi]]></dc:creator>
		<pubDate>Sat, 10 Aug 2024 12:40:10 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[DevOps]]></category>
		<category><![CDATA[SQL Database]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[azure sql cicd]]></category>
		<category><![CDATA[dacpac sql server]]></category>
		<guid isPermaLink="false">https://azureops.org/?p=7974</guid>

					<description><![CDATA[<p>While deploying a DACPAC project to Azure SQL Database using Azure DevOps, you may encounter an error due to specifying SQL Server 2022 as the target platform. The article provides steps to fix this issue by changing the target platform to 'Microsoft Azure SQL Database' in Visual Studio and rebuilding the project.</p>
<p>The post <a href="https://azureops.org/articles/a-project-which-specifies-sql-server-2022-or-azure-sql-database-managed-instance-as-the-target-platform-cannot-be-published-to-microsoft-azure-sql-database-v12/">A project which specifies SQL Server 2022 or Azure SQL Database Managed Instance as the target platform cannot be published to Microsoft Azure SQL Database v12.</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">While deploying a DACPAC project to Azure SQL database using Azure DevOps, you may come across &#8216;A project which specifies SQL Server 2022 as the target platform cannot be published to Azure SQL Database v12.&#8217; error. In this article, we will see how to fix this issue.</p>



<h2 class="wp-block-heading">Error</h2>



<p class="wp-block-paragraph">##[error]*** An error occurred during deployment plan generation. Deployment cannot continue.<br>##[error]A project which specifies SQL Server 2022 or Azure SQL Database Managed Instance as the target platform cannot be published to Microsoft Azure SQL Database v12.<br>##[error]The Azure SQL DACPAC task failed. SqlPackage.exe exited with code 1.Check out how to troubleshoot failures at <a href="https://aka.ms/sqlazuredeployreadme#troubleshooting-">https://aka.ms/sqlazuredeployreadme#troubleshooting-</a></p>



<figure class="wp-block-image size-large is-resized"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf.webp?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1200" height="531" data-attachment-id="7975" data-permalink="https://azureops.org/articles/a-project-which-specifies-sql-server-2022-or-azure-sql-database-managed-instance-as-the-target-platform-cannot-be-published-to-microsoft-azure-sql-database-v12/a-project-which-specifies-sql-server-2022-or-azure-sql-database-managed-instance-as-the-target-platf/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf.webp?fit=1226%2C543&amp;ssl=1" data-orig-size="1226,543" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf.webp?fit=1200%2C531&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf.webp?resize=1200%2C531&#038;ssl=1" alt="a project which specifies sql server 2022 as the target platform cannot be published to azure." class="wp-image-7975" style="width:1081px;height:auto" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf.webp?resize=1200%2C531&amp;ssl=1 1200w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf.webp?resize=300%2C133&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf.webp?resize=768%2C340&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf.webp?resize=450%2C199&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf.webp?resize=600%2C266&amp;ssl=1 600w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/A-project-which-specifies-SQL-Server-2022-or-Azure-SQL-Database-Managed-Instance-as-the-target-platf.webp?w=1226&amp;ssl=1 1226w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></figure>



<h2 class="wp-block-heading">Solution</h2>



<p class="wp-block-paragraph">1. Open the database dacpac project in Visual Studio.</p>



<p class="wp-block-paragraph">2. Right Click on the database project and Click on &#8216;Properties&#8217;.</p>



<p class="wp-block-paragraph">3. Open &#8216;Target platform&#8217; drop down and select &#8216;Microsoft Azure SQL Database&#8217;.</p>



<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/Change-target-platfoem-in-dacpac-project.webp?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="830" height="481" data-attachment-id="7977" data-permalink="https://azureops.org/articles/a-project-which-specifies-sql-server-2022-or-azure-sql-database-managed-instance-as-the-target-platform-cannot-be-published-to-microsoft-azure-sql-database-v12/change-target-platfoem-in-dacpac-project/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/Change-target-platfoem-in-dacpac-project.webp?fit=830%2C481&amp;ssl=1" data-orig-size="830,481" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="Change-target-platfoem-in-dacpac-project" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/Change-target-platfoem-in-dacpac-project.webp?fit=830%2C481&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/Change-target-platfoem-in-dacpac-project.webp?resize=830%2C481&#038;ssl=1" alt="" class="wp-image-7977" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/Change-target-platfoem-in-dacpac-project.webp?w=830&amp;ssl=1 830w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/Change-target-platfoem-in-dacpac-project.webp?resize=300%2C174&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/Change-target-platfoem-in-dacpac-project.webp?resize=768%2C445&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/Change-target-platfoem-in-dacpac-project.webp?resize=450%2C261&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/07/Change-target-platfoem-in-dacpac-project.webp?resize=600%2C348&amp;ssl=1 600w" sizes="(max-width: 830px) 100vw, 830px" /></a></figure>



<p class="wp-block-paragraph">4. Save the project and build it.</p>



<p class="wp-block-paragraph">5. If the build is successful, raise a PR to merge this change with main branch and initiate the Azure DevOps CICD pipeline.</p>



<h2 class="wp-block-heading">See more</h2>



<iframe width="700" height="394" src="https://www.youtube.com/embed/8YVrxCgdiIg?si=jQ6skABMZiloGfP-" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<p class="has-background wp-block-paragraph" style="background-color:#bcefca"><strong>Pro tips:</strong><br>1. Follow the steps mentioned in the article<a href="https://azureops.org/articles/implement-azure-sql-database-deployment-ci-cd-pipeline/" target="_blank" rel="noreferrer noopener"> deploy azure sql database using devops</a> to automate Azure SQL database deployments.</p>

    <div class="xs_social_share_widget xs_share_url after_content 		main_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content">

		
        <ul>
			        </ul>
    </div> 
<p>The post <a href="https://azureops.org/articles/a-project-which-specifies-sql-server-2022-or-azure-sql-database-managed-instance-as-the-target-platform-cannot-be-published-to-microsoft-azure-sql-database-v12/">A project which specifies SQL Server 2022 or Azure SQL Database Managed Instance as the target platform cannot be published to Microsoft Azure SQL Database v12.</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7974</post-id>	</item>
		<item>
		<title>Transaction Batching in SQL Server</title>
		<link>https://azureops.org/articles/transaction-batching-in-sql-server/</link>
		
		<dc:creator><![CDATA[Kunal Rathi]]></dc:creator>
		<pubDate>Thu, 18 Jan 2024 13:19:16 +0000</pubDate>
				<category><![CDATA[Azure]]></category>
		<category><![CDATA[SQL Database]]></category>
		<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[transaction batching]]></category>
		<category><![CDATA[transactions in sql server]]></category>
		<guid isPermaLink="false">https://azureops.org/?p=7081</guid>

					<description><![CDATA[<p>This post explores the concept of transaction batching in SQL Server as a solution to efficiently manage resources and avoid unnecessary rollbacks.</p>
<p>The post <a href="https://azureops.org/articles/transaction-batching-in-sql-server/">Transaction Batching in SQL Server</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">SQL Server&#8217;s pessimistic approach to writing transaction log details during DML transactions can lead to challenges, especially in data warehouse workloads. Large-scale updates or deletions may require significant transaction log space, risking transaction failures and prolonged rollbacks. This post explores the concept of transaction batching in SQL Server as a solution to efficiently manage resources and avoid unnecessary rollbacks.</p>



<h2 class="wp-block-heading">Problem</h2>



<p class="wp-block-paragraph">Performing extensive DML operations, particularly in data warehouse scenarios, may lead to transaction log space constraints, risking transaction failures and database downtime during rollbacks.</p>



<h2 class="wp-block-heading">Solution</h2>



<p class="wp-block-paragraph">Transaction batching in SQL Server: Transaction batching, dividing larger transactions into smaller, equal-sized batches, helps optimize resources and minimize the impact of potential rollbacks.</p>



<h2 class="wp-block-heading">Example</h2>



<p class="wp-block-paragraph">Consider a scenario where we batch updates and deletes in a temporary table named #temp. We use the <code>SET ROWCOUNT</code> to limit batch sizes and the <code>@@ROWCOUNT</code> function to track the number of records affected in each batch.</p>



<h4 class="wp-block-heading">Batching Updates</h4>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
CREATE TABLE #temp (
  id INT IDENTITY(1,1),
  name VARCHAR(10),
  flag INT
)

INSERT INTO #temp (name) VALUES 
  (&#039;abc&#039;), (&#039;abc&#039;), (&#039;abc&#039;),
  (&#039;xyz&#039;), (&#039;xyz&#039;), (&#039;xyz&#039;)

DECLARE @updatecount INT = 1

WHILE @updatecount &lt;&gt; 0
BEGIN
  BEGIN TRAN
    SET ROWCOUNT 2
    UPDATE #temp
    SET flag = 1
    WHERE name = &#039;abc&#039; AND flag IS NULL
    SET @updatecount = @@ROWCOUNT
    SET ROWCOUNT 0
  COMMIT TRAN
  CHECKPOINT -- Frees the transaction log space.
END
</pre></div>


<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="944" height="247" data-attachment-id="7084" data-permalink="https://azureops.org/articles/transaction-batching-in-sql-server/image-20/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image.png?fit=944%2C247&amp;ssl=1" data-orig-size="944,247" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image.png?fit=944%2C247&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image.png?resize=944%2C247&#038;ssl=1" alt="Transaction batching in SQL Server for update." class="wp-image-7084" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image.png?w=944&amp;ssl=1 944w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image.png?resize=300%2C78&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image.png?resize=768%2C201&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image.png?resize=450%2C118&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image.png?resize=600%2C157&amp;ssl=1 600w" sizes="(max-width: 944px) 100vw, 944px" /></a></figure>



<figure class="is-style-default wp-block-image size-large is-resized"><a href="https://marketplace.visualstudio.com/items?itemName=AzureOps.ssiscatalogerpro&amp;ssr=false#overview" target="_blank" rel="noopener"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1200" height="148" data-attachment-id="4839" data-permalink="https://azureops.org/articles/azure-data-studio-for-sql-developers/scmw-horizontal-ad/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?fit=1326%2C163&amp;ssl=1" data-orig-size="1326,163" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="SCMW-horizontal-ad" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?fit=1200%2C148&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=1200%2C148&#038;ssl=1" alt="" class="wp-image-4839" style="object-fit:cover;width:811px;height:99px" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=1200%2C148&amp;ssl=1 1200w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=450%2C55&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=600%2C74&amp;ssl=1 600w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=300%2C37&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?resize=768%2C94&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2023/01/SCMW-horizontal-ad.png?w=1326&amp;ssl=1 1326w" sizes="(max-width: 1200px) 100vw, 1200px" /></a></figure>



<h4 class="wp-block-heading">Batching Deletes</h4>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: sql; gutter: false; title: ; notranslate">
DECLARE @deletecount INT = 1

WHILE @deletecount &lt;&gt; 0
BEGIN
  BEGIN TRAN
    SET ROWCOUNT 2
    DELETE FROM #temp WHERE flag = 1
    SET @deletecount = @@ROWCOUNT
    SET ROWCOUNT 0
  COMMIT TRAN
  CHECKPOINT -- Frees the transaction log space.
END
</pre></div>


<figure class="wp-block-image size-full"><a href="https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image-1.png?ssl=1"><img data-recalc-dims="1" loading="lazy" decoding="async" width="970" height="194" data-attachment-id="7085" data-permalink="https://azureops.org/articles/transaction-batching-in-sql-server/image-1-11/" data-orig-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image-1.png?fit=970%2C194&amp;ssl=1" data-orig-size="970,194" data-comments-opened="0" data-image-meta="{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}" data-image-title="image-1" data-image-description="" data-image-caption="" data-large-file="https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image-1.png?fit=970%2C194&amp;ssl=1" src="https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image-1.png?resize=970%2C194&#038;ssl=1" alt="Transaction batching in SQL Server for delete" class="wp-image-7085" srcset="https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image-1.png?w=970&amp;ssl=1 970w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image-1.png?resize=300%2C60&amp;ssl=1 300w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image-1.png?resize=768%2C154&amp;ssl=1 768w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image-1.png?resize=450%2C90&amp;ssl=1 450w, https://i0.wp.com/azureops.org/wp-content/uploads/2024/01/image-1.png?resize=600%2C120&amp;ssl=1 600w" sizes="(max-width: 970px) 100vw, 970px" /></a></figure>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">By implementing transaction batching, we can efficiently manage transaction log space and mitigate the risks associated with large-scale DML operations. This approach optimizes resource utilization and reduces the likelihood of extensive rollbacks, ensuring smoother database operations.</p>



<p class="has-background wp-block-paragraph" style="background-color:#bcefca"><strong>Pro tips</strong>:<br>1. <a href="https://azureops.org/articles/find-deadlock-in-sql-server/#:~:text=The%20only%20way%20to%20resolve,off%20one%20of%20the%20processes." target="_blank" rel="noreferrer noopener">Learn </a>how to find and manage deadlocks in SQL Server.</p>



<h2 class="wp-block-heading">See more</h2>



<iframe width="700" height="394" src="https://www.youtube.com/embed/t2h6xNVFQkc" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>



<div class="wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex">
<div class="is-style-fill wp-block-button"><a class="wp-block-button__link has-white-color has-blush-light-purple-gradient-background has-text-color has-background has-link-color wp-element-button" href="https://azureops.org/product/ssis-catalog-migration-wizard-pro/" target="_blank" rel="noreferrer noopener">Download Now</a></div>
</div>

    <div class="xs_social_share_widget xs_share_url after_content 		main_content  wslu-style-1 wslu-share-box-shaped wslu-fill-colored wslu-none wslu-share-horizontal wslu-theme-font-no wslu-main_content">

		
        <ul>
			        </ul>
    </div> 
<p>The post <a href="https://azureops.org/articles/transaction-batching-in-sql-server/">Transaction Batching in SQL Server</a> appeared first on <a href="https://azureops.org">AzureOps</a>.</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7081</post-id>	</item>
	</channel>
</rss>
