我们新配置的 Azure SQL 托管实例无法从 URL 还原备份。
根据服务器日志,恢复本身似乎在一定时间后完成,但后续过程中的错误导致整个过程终止......
SSMS提示的错误信息是
消息 22003,级别 16,状态 1,第 7 行
由于数据库关闭,数据库 ID '5' 的陈旧/中止版本清理被中止。
消息 3013,级别 16,状态 1,第 7 行
RESTORE DATABASE 异常终止。
服务器日志的相关部分可以在这里找到。
我尝试了来自不同 SQL Server 版本(2012、2016、2019)的备份文件——即使是空数据库的备份也会导致这个错误......
有没有人经历过类似的事情?谷歌似乎根本没有帮助。
使用的命令是:
RESTORE DATABASE Test FROM URL = N'https://STORAGEACCOUNT.blob.core.windows.net/STORAGECONTAINER/Test.bak'
Run Code Online (Sandbox Code Playgroud)
通过以下方式创建了必要的凭据:
CREATE CREDENTIAL [https://STORAGEACCOUNT.blob.core.windows.net/STORAGECONTAINER]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'sv=xxxxxxxxxxxxxxxxxxxxxx';
Run Code Online (Sandbox Code Playgroud)
我删除STORAGECACCOUNT和STORAGECONTAINER以及大多数的SECRET。
我有三个要迁移到 Azure SQL 托管实例的数据库。一个是实用程序数据库,只是通用函数和过程的一小部分集合。一种是用于 Web 应用程序的 OLTP 数据库。第三个是 OLTP 数据库的只读存档,其中包含用于分析和报告的历史数据以及审计表。我需要能够将这些数据库恢复到本地开发和测试服务器。到目前为止,我一直没有成功。
我的第一次尝试是使用备份到 Azure Blob 存储。但是无论我在本地使用什么版本的 SQL Server,我总是收到一个错误,即仅复制备份来自较新版本并且不支持还原。
接下来,我尝试从 SSMS v.18.1 导出数据层应用程序。不幸的是,它永远不会超过出口。我收到数十个错误,读取External references are not supported when creating a package from this platform. 托管实例相对于 Azure SQL DB 的最大优势之一是能够进行跨数据库查询。我有许多链接两个数据库中的表的视图和过程。此外,OLTP 数据库中的某些过程调用实用程序数据库中的函数。由于 MI 不是 Azure SQL 数据库,您会认为这不会成为问题!
搜索谷歌,我在 Stack Overflow 上发现了这个问题。所以我尝试了作为答案提出的 Visual Studio 方法。尽管它似乎可以工作,这意味着它在我的本地计算机上创建了一个多 GB 的文件,但尝试使用 SSMS 导入该文件会给我一个错误,显示为“No data is present in this file.所以然后我尝试使用sqlpackage.exe. 但是该解决方案对我也不起作用,因为它只引用导出模式。如果我尝试导出整个数据库,/Action:Export我会收到与 SSMS 相同的错误消息。
我还检查了这个数据库管理员问题。没有帮助 - 这就是我最初尝试的。如果有人有任何其他想法,我将不胜感激!
我有一个 CLR 存储过程,它在从 SQL Server 2012 - 2017 部署到本地 SQL Server 实例时可以正确执行。我可以成功部署到 Azure SQL 托管实例,但是当我执行该过程时,出现以下错误:
无法加载文件或程序集“System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a”或其依赖项之一。主机存储中的程序集与 GAC 中的程序集具有不同的签名。(来自 HRESULT 的异常:0x80131050)。
我曾尝试使用项目引用但无济于事 -System.Net.Http.dll可以部署到托管实例的唯一版本是执行时出错的版本。
精简版:
我正在尝试将备份从一个 SQL 托管实例恢复到另一个 SQL 托管实例。这些在不同的订阅中。使用此处的示例 3,我至少可以看到恢复从 sys.dm_operation_status 开始,但错误消息是“订阅 [目标] 不包含 [源 SQL MI]”。
问题: 如何将数据库从一个 SQL 托管实例迁移到另一个(在不同订阅中)?我目前的解决方法是对 blob 存储执行 copy_only 并以这种方式恢复。
一旦我们启用 TDE(进行中),我们将无法对 blob 执行 copy_only 备份。然后怎样呢?
长版:
最近,我们公司开始在 SQL 托管实例(和其他 PaaS/IaaS)上运行 Azure 中的生产工作负载,并且进展顺利。尽管我确实熟悉数据库迁移服务 (DMS),但我们有一个足够大的窗口,表明我们能够使用完整备份执行初始加载。
但是现在我们正在扩展我们的 dev/test/qa 环境,当然我们现在希望从生产环境恢复到这些环境。出于隔离目的,每个人都获得了自己的订阅。
这些命令有效,因为我至少可以在 sys.dm_operation_status 中看到恢复操作开始,但它失败并出现错误。错误是“订阅 [目标] 不包含 [源 SQL MI]”并让我相信交叉订阅还原对我们不起作用(尽管跨区域可以)。
DMS 似乎不支持使用数据库迁移服务作为源的方案。
Select-AzSubscription -Subscription $SourceSubscriptionID
$GeoBackup = Get-AzSqlInstanceDatabaseGeoBackup -ResourceGroupName $SourceResourceGroupName `
-InstanceName $SourceSQLMI `
-Name $SourceDatabaseName
Select-AzSubscription -Subscription $TargetSubscriptionID
Restore-AzSqlInstanceDatabase -FromGeoBackup `
-GeoBackupObject $GeoBackup `
-TargetInstanceDatabaseName $TargetDatabaseName `
-TargetInstanceName $TargetSQLMI ` …Run Code Online (Sandbox Code Playgroud) 有谁知道如何重新启动 SQL Server 托管实例?
\n\n停止/启动/重置都变灰了,这样\xe2\x80\x99s就真的了。这是一个选择。
\n\n有什么想法吗?
\n\n谢谢...
\n从文档来看,似乎可以恢复完整的数据库备份文件,但也可以恢复事务日志吗?
(这个想法是尽量减少从本地迁移到 MI 过程中的停机时间)。
谢谢。
所有更新均安装在 VS 2017 (15.9.47) 和 2019 (16.11.2013) 上
\n我正在尝试通过 Microsoft\xe2\x80\x99s 工具、On Prem 和 Azure SQL 托管实例在两个数据库之间执行数据比较\n过去几个月一切正常
\n我上周更改了密码,这是我唯一能看到导致问题的原因?\n当我之前更改密码时,没有出现任何问题,也许是巧合
\n\xe2\x80\xa2 我可以使用新密码连接到 SSMS 中的 Azure SQL 托管实例\n\xe2\x80\xa2 我可以使用新密码连接到 SSDT 中的 Azure SQL 托管实例
\n问题
\n在 SSDT 2017/2019 --> 工具 --> SQL Server --> 新数据比较 --> 选择连接
\n选择 Azure SQL 托管实例,单击连接 --> 连接 --> 提示输入我的密码\n无错误 --> 在源数据库中仍然说明“选择数据库”(应说明 Azure SQL 托管实例)
\n\xe2\x80\xa2 使用本地服务器连接正常
\n我试过
\n以下查询正确输出搜索、扫描等的数量。我对理解输出中的某些行有疑问。在查询的某些输出行中,索引名称显示为、NULL、、0;而在同一行中,它显示了和/或 的一些非零数字。问题:我们如何解释这些行?index_typeHEAPNumOfSeeksNumOfScansNumOfLookups
备注:所有表都没有聚集索引,因此所有表都是 HEAP。但在以下查询的输出的大多数行中,索引名称都显示(并且不显示为 NULL),并且 index_type 也显示(作为 NONSLUSTER)。因此,问题特定于此评论上面描述的输出行。
参考:sys.dm_db_index_usage_stats。
SELECT OBJECT_NAME(IX.OBJECT_ID) Table_Name
,IX.name AS Index_Name
,IX.type_desc Index_Type
,SUM(PS.[used_page_count]) * 8 IndexSizeKB
,IXUS.user_seeks AS NumOfSeeks
,IXUS.user_scans AS NumOfScans
,IXUS.user_lookups AS NumOfLookups
,IXUS.user_updates AS NumOfUpdates
,IXUS.last_user_seek AS LastSeek
,IXUS.last_user_scan AS LastScan
,IXUS.last_user_lookup AS LastLookup
,IXUS.last_user_update AS LastUpdate
FROM sys.indexes IX
INNER JOIN sys.dm_db_index_usage_stats IXUS ON IXUS.index_id = IX.index_id AND IXUS.OBJECT_ID = IX.OBJECT_ID
INNER JOIN sys.dm_db_partition_stats PS on PS.object_id=IX.object_id
WHERE OBJECTPROPERTY(IX.OBJECT_ID,'IsUserTable') = 1 …Run Code Online (Sandbox Code Playgroud) index sql-server azure-sql-managed-instance query-performance performance-tuning
我正在将数据库从本地迁移到 Azure 托管实例。为了移动数据库,我正在使用组织每周完整备份,并且我要求他们在应用程序脱机后进行比较(数据库非常大)。
问:我可以在 Azure 托管实例上还原差异备份吗?
当我尝试在没有恢复的情况下恢复完整内容时,而不是应用差异。我收到错误:“azure 托管实例中不支持使用 norecovery 进行还原”
我正在决定是在 Azure VM 上安装 SQL Server 还是配置托管实例。
据我了解,托管实例不支持以下功能:
SSIS
SSAS
SSRS
Manual patching
Full OS control
Run Code Online (Sandbox Code Playgroud)
还有其他托管实例不支持 azure vm 上的 sql server 将支持的内容吗?例如:
Transactional replication
Always On availability groups
Log shipping
MDS
DQS
Run Code Online (Sandbox Code Playgroud) azure-sql-managed-instance ×10
sql-server ×8
restore ×3
azure ×1
index ×1
migration ×1
sql-clr ×1
ssdt ×1