将BACPAC文件恢复到Azure Synapse SQL无服务器池数据库

zzoitvuj  于 2023-08-07  发布在  其他
关注(0)|答案(1)|浏览(117)

Azure存储帐户中可用的bacpac文件很少,现在我的查询是:

  • 是否可以将这些bacpac文件还原到在Azure Synapse Sql Serverless池中创建的数据库。

如果这是不可能的,什么是其他解决办法,以提取数据从BACPAC文件。要求是用户可以根据需要查询这些数据(非常罕见),他们不希望数据一直可用。
请提供帮助和建议。
一个更新如下所示,在Synapse SQL Pool Serverless的屏幕截图中,没有恢复任何数据库

的选项

wooyq4lh

wooyq4lh1#

根据此document,无法在无服务器池中创建表。因此,您将无法在无服务器的SQL池中恢复bacpac文件。根据你在评论中提到的方法。如果你特别想使用无服务器池,你可以使用下面的方法。
使用import Data-tier application选项将bacpac还原到Azure SQL Server:
x1c 0d1x的数据
以下是Synapse管道JSON,用于将Azure SQL数据库中的所有表复制到ADLS:

{
    "name": "Pipeline 1",
    "properties": {
        "activities": [
            {
                "name": "Lookup1",
                "type": "Lookup",
                "dependsOn": [],
                "policy": {
                    "timeout": "0.12:00:00",
                    "retry": 0,
                    "retryIntervalInSeconds": 30,
                    "secureOutput": false,
                    "secureInput": false
                },
                "userProperties": [],
                "typeProperties": {
                    "source": {
                        "type": "AzureSqlSource",
                        "sqlReaderQuery": "SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.TABLES\nWHERE TABLE_TYPE = 'BASE TABLE' and TABLE_SCHEMA = 'dbo'",
                        "queryTimeout": "02:00:00",
                        "partitionOption": "None"
                    },
                    "dataset": {
                        "referenceName": "AzureSqlTable1",
                        "type": "DatasetReference"
                    },
                    "firstRowOnly": false
                }
            },
            {
                "name": "ForEach1",
                "type": "ForEach",
                "dependsOn": [
                    {
                        "activity": "Lookup1",
                        "dependencyConditions": [
                            "Succeeded"
                        ]
                    }
                ],
                "userProperties": [],
                "typeProperties": {
                    "items": {
                        "value": "@activity('Lookup1').output.value",
                        "type": "Expression"
                    },
                    "isSequential": true,
                    "activities": [
                        {
                            "name": "Copy data1",
                            "type": "Copy",
                            "dependsOn": [],
                            "policy": {
                                "timeout": "0.12:00:00",
                                "retry": 0,
                                "retryIntervalInSeconds": 30,
                                "secureOutput": false,
                                "secureInput": false
                            },
                            "userProperties": [],
                            "typeProperties": {
                                "source": {
                                    "type": "AzureSqlSource",
                                    "queryTimeout": "02:00:00",
                                    "partitionOption": "None"
                                },
                                "sink": {
                                    "type": "DelimitedTextSink",
                                    "storeSettings": {
                                        "type": "AzureBlobFSWriteSettings"
                                    },
                                    "formatSettings": {
                                        "type": "DelimitedTextWriteSettings",
                                        "quoteAllText": true,
                                        "fileExtension": ".csv"
                                    }
                                },
                                "enableStaging": false,
                                "translator": {
                                    "type": "TabularTranslator",
                                    "typeConversion": true,
                                    "typeConversionSettings": {
                                        "allowDataTruncation": true,
                                        "treatBooleanAsNumber": false
                                    }
                                }
                            },
                            "inputs": [
                                {
                                    "referenceName": "AzureSqlTable2",
                                    "type": "DatasetReference",
                                    "parameters": {
                                        "schema": {
                                            "value": "@item().TABLE_SCHEMA",
                                            "type": "Expression"
                                        }
                                    }
                                }
                            ],
                            "outputs": [
                                {
                                    "referenceName": "DelimitedText1",
                                    "type": "DatasetReference",
                                    "parameters": {
                                        "filename": "@concat(item().TABLE_SCHEMA,'_',item().TABLE_NAME,'.CSV')"
                                    }
                                }
                            ]
                        }
                    ]
                }
            }
        ],
        "annotations": [],
        "lastPublishTime": "2023-07-18T06:45:47Z"
    },
    "type": "Microsoft.Synapse/workspaces/pipelines"
}

字符串
然后,您可以使用从SQL数据库复制的ADLS数据创建外部表。为此,转到数据->链接选择主ADLS并选择具有数据的路径。右键单击每个文件并选择New SQL Script选择Create External Table



它将获取文件的详细信息,单击继续。提供所需的无服务器数据库和表名称的详细信息。



脚本将自动生成,并创建表。但是,您必须为所有从SQL数据库手动复制的单个文件执行此步骤,以创建相应的表。



作为基于要求的不同选项,您最初声明将根据需要查询数据。您可以使用专用SQL池(而不是无服务器SQL池)恢复bacpac数据。您可以直接在专用SQL池中恢复数据库,就像Azure SQL Server一样。
x1c4d 1x的

相关问题