AZURE
When you need to export a database for archiving or for moving to another platform, you can export the database schema and data to a BACPAC file. A BACPAC file is a ZIP file with an extension of BACPAC containing the metadata and data from a SQL Server database. A BACPAC file can be stored in Azure Blob storage or in local storage in an on-premises location and later imported back into Azure SQL Database or into a SQL Server on-premises installation.
Import BACPAC File to On-Premise SQL Server :
Error :
When you are try to import BACPAC File created from Azure Environment, you might encounter the following error if it consists of External Data Source Reference.
Could not import package.
Warning SQL72012: The object [AzureProd] exists in the target,
but it will not be dropped even though you selected the
‘Generate drop statements for objects that are in the target database but that
are not in the source’ check box.
Warning SQL72012: The object [AzureProd_Log] exists in the target,
but it will not be dropped even though you selected the
‘Generate drop statements for objects that are in the target database but that
are not in the source’ check box.
Error SQL72014: .Net SqlClient Data Provider: Msg 102, Level 15, State 1,
Line 1 Incorrect syntax near ‘EXTERNAL’.
Error SQL72045: Script execution error. The executed script:
CREATE EXTERNAL DATA SOURCE [DB_EXT_EDS]
WITH (
TYPE = RDBMS,
LOCATION = N’sqlserver.database.windows.net’,
DATABASE_NAME = N’AdventureWorks’,
CREDENTIAL = [DB_EXT_CRED] );
Solution :
Drop external Tables and External Data Source in Azure SQL Database and create BACPAC File again without those references.
Drop External Tables and External Data Source
IF EXISTS
(
SELECT 'x' FROM sys.external_tables)
BEGIN
DROP EXTERNAL TABLE EXT_Table1
DROP EXTERNAL TABLE EXT_Table2
DROP EXTERNAL TABLE EXT_Table3
END
IF EXISTS
(
SELECT * FROM sys.external_data_sources
WHERE name ='DB_EXT_EDS'
)
BEGIN
DROP EXTERNAL DATA SOURCE DB_EXT_EDS;
END
If you can’t recreate BACPAC without dropping the tables, you can follow these steps.
<Element Type=”SqlExternalDataSource” Name=”[BoxDataSrc]”>
<Property Name=”DataSourceType” Value=”1′′ />
<Property Name=”Location” Value=”MYAZUREServer.database.windows.net” />
<Property Name=”DatabaseName” Value=”MyAzureDb” />
<Relationship Name=”Credential”>
<Entry>
<References Name=”[SQL_Credential]” />
</Entry>
</Relationship>
</Element>
If you have multiple external data sources of this type, you will probably need to repeat step 2 for each one.
Save and close model.xml.
Now you need to re-generate the checksum for model.xml so that the bacpac doesn’t think it was tampered with (since you just tampered with it). Create a PowerShell file named computeHash.ps1 and put this code into it.
Generate Checksum
$modelXmlPath = Read-Host "model.xml file path"
$hasher = [System.Security.Cryptography.HashAlgorithm]:
:Create("System.Security.Cryptography.SHA256Crypt oServiceProvider")
$fileStream = new-object System.IO.FileStream ` -ArgumentList
@($modelXmlPath, [System.IO.FileMode]::Open)
$hash = $hasher.ComputeHash($fileStream)
$hashString = "" Foreach ($b in $hash) { $hashString += $b.ToString("X2") }
$fileStream.Close() $hashString
Run the PowerShell script and give it the filepath to your unzipped and edited model.xml file. It will return a checksum value.
Copy the checksum value, then open up Origin.xml and replace the existing checksum, toward the bottom on the line that looks like this:
<Checksum Uri=”/model.xml”>9EA0F06B282G4F42955C78A98822A31AA0ED0225CB131B
8759379055A482D0 1G</Checksum>
Save and close Origin.xml, then select all the files and put them into a new zip file and rename the extension to bacpac.
Now you can use this new bacpac to import the database without getting the error.
Share this:
In today's fast-paced enterprise world, the pressure is on to create workflows that are not just efficient, but truly intelligent and scalable. Gone are the days when clunky, form-based interfaces could keep up. They were rigid, often frustrating for users, and crucially, lacked the smarts needed to drive real productivity. But what if your forms […]
Are outdated HR processes holding your enterprise back? In today's hyper-competitive landscape, the efficiency of your human resources directly impacts your bottom line, employee satisfaction, and ability to attract top talent. Yet, many organizations are still grappling with manual, resource-intensive tasks that drain productivity and stifle growth. Imagine a world where: Crafting compelling job descriptions […]
In today's hyper-competitive digital landscape, delivering an exceptional user experience (UX) isn't just a nice-to-have – it's the bedrock of customer loyalty and business growth. But as customer behaviors constantly evolve and applications grow increasingly complex, a critical question emerges: How can organizations consistently measure, monitor, and elevate the user experience at scale, and in […]
Partner with CloudIQ to achieve immediate gains while building a strong foundation for long-term, transformative success.