Azure 存储模拟器无法初始化,并显示“数据库 'AzureStorageEmulatorDb57' 不存在”
Posted
技术标签:
【中文标题】Azure 存储模拟器无法初始化,并显示“数据库 \'AzureStorageEmulatorDb57\' 不存在”【英文标题】:Azure Storage Emulator fails to init with "The database 'AzureStorageEmulatorDb57' does not exist"Azure 存储模拟器无法初始化,并显示“数据库 'AzureStorageEmulatorDb57' 不存在” 【发布时间】:2019-05-09 11:16:39 【问题描述】:我在使用 Azure 存储模拟器时遇到问题。我试图重新初始化数据库并得到以下错误。
这是在安装 Visual Studio 2019 Preview 之后发生的,但这可能只是巧合。我尝试了一个小时左右让它运行,然后放弃并使用“保留我的文件”选项重置我的机器,重新安装了 Visual Studio 2017 和 Azure 工具,但仍然看到同样的问题。
我知道重置听起来有点激烈,但 VS 2019 在 VS2017 中破坏了我的 Azure Functions,它们无法启动,所以我想要一个全新的安装。
如果我使用 sqllocaldb create(版本 13.1.4001.0)手动创建数据库,则可以正常创建数据库,但初始化仍然失败并显示相同的消息。
有什么想法吗?
C:\Program Files (x86)\Microsoft SDKs\Azure\Storage 模拟器>AzureStorageEmulator.exe 初始化 Windows Azure Storage Emulator 5.7.0.0 命令行工具 找到 SQL 实例 (localdb)\MSSQLLocalDB。 在 SQL 实例“(localdb)\MSSQLLocalDB”上创建数据库 AzureStorageEmulatorDb57。 无法创建数据库“AzureStorageEmulatorDb57”:数据库“AzureStorageEmulatorDb57”不存在。提供有效的数据库 姓名。要查看可用的数据库,请使用 sys.databases.. 一项或多项初始化操作失败。在尝试再次运行存储模拟器之前解决这些错误。 错误:无法创建数据库“AzureStorageEmulatorDb57”:数据库“AzureStorageEmulatorDb57”不存在。提供有效的 数据库名称。要查看可用的数据库,请使用 sys.databases..
【问题讨论】:
你试过安装最新的v5.8 emulator吗? 是的,5.8 安装程序运行良好,但问题仍然存在。 【参考方案1】:重置我的机器(并保留文件)后,我遇到了这个问题。对我来说,由于无法启动模拟器的错误,我无法在 Visual Studio 2019 中运行 Azure 函数。
看起来我在重置后遇到了与(我认为)我的新帐户相同的权限问题,没有权限访问数据库。
我通过以下方式解决了这个问题:
-
删除 Azure 存储模拟器 DB 文件:
%USERPROFILE%/AzureStorageEmulatorDb[number].mdf
然后以管理员权限运行AzureStorageEmulator.exe start
然后我可以毫无问题地运行 Azure Function。
【讨论】:
谢谢它的工作,我删除了 .mdf 文件并重新运行 storage emulator START 命令。完成 是的!这对我有用,只需删除 mdf 文件,然后再次运行“init”命令。谢谢 谢谢!这也帮助了我。我迁移到一台新电脑,不小心将此 mdf 文件复制到了新电脑,因此它阻止了 azure 模拟器创建数据库。删除它,它的工作。 这对我有用,我必须投票赞成这个解决方案【参考方案2】:-
如果 Azure 模拟器正在运行,请停止它。
打开 SSMS 并连接到您的 (localdb) 实例。
手动创建“AzureStorageEmulatorDb57”。
以管理员身份打开命令提示符。
运行“AzureStorageEmulator.exe init”。
运行您的 VS 项目。
【讨论】:
【参考方案3】:在为 SQL Server 2017 安装 LocalDb 后,我遇到了同样的问题。这些步骤帮助我解决了我面临的问题:
在C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator
中打开命令行
运行AzureStorageEmulator.exe init /forceCreate
通过检查我的错误日志(位于%USERPROFILE%\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB
),我看到了
此错误将我引导至以下帖子:https://dba.stackexchange.com/questions/191393/localdb-v14-creates-wrong-path-for-mdf-files 通过阅读那里的答案,我了解到这是 SQL Server 2017 中的一个错误。在无法访问补丁的情况下,对我有用的解决方案是授予2018-12-21 15:41:13.47 spid65 CREATE FILE 在尝试打开或创建物理文件“C:\UsersusernameAzureStorageEmulatorDb59.mdf”时遇到操作系统错误 5(访问被拒绝。)。
Everyone
修改 C:\Users
的访问权限。这只是我的开发笔记本电脑上的一个问题,所以我有能力进行安全更改
或正如 Andrii 所评论的,为 SQL Server 2017 安装 CU13 HotFix。之后,AzureStorageEmulatorDb<xxx>.mdf
将为您创建应有的用户目录。
【讨论】:
确实是这个问题。我为 SQL Server 2017 安装了CU13 HotFix,它现在可以工作了。 授予所有人修改 C:\Users 的权限解决了我的问题。谢谢。 @Andrii 对于此答案所描述的问题,这是更好的解决方案(更安全),非常感谢。我已将其添加到aleroy
答案中。
这个序列对我有用,停止->清除->初始化->开始github.com/Azure/azure-storage-net/issues/…【参考方案4】:
我遇到了这个问题,我不知道为什么当我删除我的 MSSQLLocalDB 实例时,AzureStorageEmulatorDb57_log.ldf 仍然存在于我的 %USERPROFILE% 目录中,但之后删除该文件问题就消失了。
【讨论】:
这对我有用,但在此之前,我还安装了 SQL Express,所以不确定哪个解决了问题【参考方案5】:我在将用户登录名更改为我的机器时遇到了这个问题。我已经从我以前的用户帐户创建了数据库。我已将数据库文件复制到新用户帐户,但它给了我这个错误。这似乎是一个权限问题。
你需要找到这个数据库的mdf和ldf文件的保存位置。就我而言,它存储在“C:\Users\yourUserName”中
只需删除这些文件并再次运行 AzureStorageEmulator.exe init,它就会为您创建新的 mdf 和 ldf 文件。
【讨论】:
这也为我解决了。 2016 年和 2019 年都有同样的错误,当我尝试使用 SSMS 手动创建数据库时,我终于收到了一条有用的错误消息(由于文件已经存在而无法创建数据库),它指向了这个解决方案。很遗憾存储模拟器隐藏了该错误消息!【参考方案6】:按照these instructions 手动将我的 MSSQL 2016 LocalDB 升级到 MSSQL 2019 后,我收到了提到的错误,因为我不知道 Azure 存储模拟器在内部使用 LocalDB。
要修复它,我只需使用以下 SQL 命令手动重新附加位于 %UserProfile%
的数据库:
CREATE DATABASE [AzureStorageEmulatorDb510]
ON (FILENAME = 'C:\Users\<username>\AzureStorageEmulatorDb510.mdf'),
(FILENAME = 'C:\Users\<username>\AzureStorageEmulatorDb510_log.ldf')
FOR ATTACH;
【讨论】:
【参考方案7】:为我工作:
-
删除与 azure 模拟器相关的任何 storage/sql 数据库
在 StorageEmulator 路径上运行此命令:
AzureStorageEmulator.exe 初始化 /server 。
(或者你的 SQL 实例,我的是“.”)
【讨论】:
【参考方案8】:检查您是否安装了带有 Visual Studio 的 Azure SDK,如果没有,您可以添加该功能
【讨论】:
【参考方案9】:您可以在 userprofile 目录中找到 mdf 和 ldf 文件。只需停止模拟器并将这些文件复制到其他位置并将其从 userprofile 目录中删除即可。 然后再次运行模拟器,它将创建新的 mdf 和 ldf 文件。 然后停止模拟器并复制旧文件并重新启动模拟器。这样您就不会丢失任何数据。
【讨论】:
【参考方案10】:我会帮你的。首先创建一个sql server local db。 然后转到存储模拟器文件夹 _- Storage Emulator 默认安装在 C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator。
然后运行这个 AzureStorageEmulator.exe init /server
文档:AzureStorageEmulator.exe init /server localhost\SQLEXPRESS01
【讨论】:
【参考方案11】:打开 SSMS 并连接到您的 (localdb) 实例。 手动创建“AzureStorageEmulatorDb...”。
【讨论】:
【参考方案12】:要添加另一个答案,我没有任何 MDF 或 LDF 文件。相反,我只有一个位于%USERPROFILE%\AppData\Local\AzureStorageEmulator\AzureStorageEmulator.5.10.config
的配置文件。我也无法使用 SSMS 连接到我的本地 (localdb)
实例。
我将该配置文件中的SQLInstance
值更改为localhost
而不是(localdb)\MSSQLLocalDB
,它开始工作了。
【讨论】:
【参考方案13】:您应该有一个名为 Microsoft Azure Storage Emulator 的应用程序。
启动此应用程序。
如果应用程序指示它正在运行,请先运行AzureStorageEmulator.exe stop
,否则直接运行AzureStorageEmulator.exe Start
。应该自动创建你的数据库,至少它为我做了。
https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator
【讨论】:
【参考方案14】:我初始化了db实例并且成功了,但是我的SQLServer是2017的。
然后我搜索解决方案,doc 说删除故障数据库将解决问题。也许你可以按照文档中的步骤尝试一下。
如果您仍有疑问,请告诉我。
【讨论】:
我确实尝试过。重新改造我的笔记本电脑解决了这个问题。【参考方案15】:一般不推荐此解决方案,但您可以尝试一下。 我认为 AzureStorageEmulator 通过某种方式无法完全访问 localDB 目录中的设置限制了权限。
-
您可以转到文件夹属性> sercurity > 编辑为完全权限(我的目录是用户> Appdata)。
然后重启模拟器
cmd restart the azure emulator。
现在它起作用了。以后你必须考虑到它的不安全感。
【讨论】:
以上是关于Azure 存储模拟器无法初始化,并显示“数据库 'AzureStorageEmulatorDb57' 不存在”的主要内容,如果未能解决你的问题,请参考以下文章