32

我在使用 Azure 存储模拟器时遇到问题。我试图重新初始化数据库并得到以下错误。

这是在安装 Visual Studio 2019 Preview 之后发生的,但这可能只是巧合。我尝试了一个小时左右让它运行,然后放弃并使用“保留我的文件”选项重置我的机器,重新安装了 Visual Studio 2017 和 Azure 工具,但仍然看到同样的问题。

我知道重置听起来有点激烈,但 VS 2019 在 VS2017 中破坏了我的 Azure Functions,它们不会启动,所以我想要一个全新的安装。

如果我使用 sqllocaldb create(版本 13.1.4001.0)手动创建数据库,则数据库创建得很好,但 init 仍然失败并显示相同的消息。

有任何想法吗?

C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator>AzureStorageEmulator.exe init Windows Azure Storage Emulator 5.7.0.0 命令行工具找到 SQL 实例 (localdb)\MSSQLLocalDB。在 SQL 实例“(localdb)\MSSQLLocalDB”上创建数据库 AzureStorageEmulatorDb57。无法创建数据库“AzureStorageEmulatorDb57”:数据库“AzureStorageEmulatorDb57”不存在。提供一个有效的数据库名称。要查看可用数据库,请使用 sys.databases.. 一项或多项初始化操作失败。在尝试再次运行存储模拟器之前解决这些错误。错误:无法创建数据库“AzureStorageEmulatorDb57”:数据库“AzureStorageEmulatorDb57”不存在。提供一个有效的数据库名称。要查看可用的数据库,请使用 sys.databases。

4

15 回答 15

47

重置我的机器(并保留文件)后,我遇到了这个问题。对我来说,由于无法启动模拟器的错误,我无法在 Visual Studio 2019 中运行 Azure 函数。

看起来我在重置后遇到了与(我认为)我的新帐户相同的权限问题,没有访问数据库的权限。

我通过以下方式解决了这个问题:

  1. 删除 Azure 存储模拟器 DB 文件: %USERPROFILE%/AzureStorageEmulatorDb[number].mdf
  2. 然后AzureStorageEmulator.exe start以管理员权限运行

然后我可以毫无问题地运行 Azure 函数。

于 2019-09-02T12:42:18.960 回答
28
  1. 如果 Azure 模拟器正在运行,请停止它。
  2. 打开 SSMS 并连接到您的 (localdb) 实例。
  3. 手动创建“AzureStorageEmulatorDb57”。
  4. 以管理员身份打开命令提示符。
  5. 运行“AzureStorageEmulator.exe init”。
  6. 运行你的 VS 项目。
于 2018-12-28T15:49:25.383 回答
25

在为 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),我看到

2018-12-21 15:41:13.47 spid65 CREATE FILE 在尝试打开或创建物理文件“C:\Users{username}AzureStorageEmulatorDb59.mdf”时遇到操作系统错误 5(拒绝访问。)。

  • 此错误将我带到以下帖子:https ://dba.stackexchange.com/questions/191393/localdb-v14-creates-wrong-path-for-mdf-files
  • 通过阅读那里的答案,我了解到这是 SQL Server 2017 中的一个错误。在无法访问补丁的情况下,对我有用的解决方案是授予Everyone对 modify 的访问权限C:\Users。这只是我的开发笔记本电脑上的一个问题,所以我有能力进行安全更改
  • 或如 Andrii 所评论的,安装CU13 HotFix for SQL Server 2017。之后AzureStorageEmulatorDb<xxx>.mdf将为您创建应有的用户目录。
于 2018-12-21T22:08:11.273 回答
15

我遇到了这个问题,我不知道为什么当我删除我的 MSSQLLocalDB 实例时AzureStorageEmulatorDb57_log.ldf仍然存在于我的%USERPROFILE%目录中,但是在删除该文件后问题就消失了。

于 2019-03-02T12:06:57.993 回答
3

I came across this issue where I had changed the userlogin to my machine. I have created the database from my previous useraccount. I have copied the database files to the new user account but it gave me this error. It seems to be a permission issue.

You need to find the saved location of the mdf and ldf file of this database. In my case it was stored in 'C:\Users\yourUserName'

Simply delete these files and run AzureStorageEmulator.exe init again and it will create the new mdf and ldf files for you.

于 2019-04-02T08:55:32.237 回答
2

按照这些说明手动将我的 MSSQL 2016 LocalDB 升级到 MSSQL 2019 后,我收到了提到的错误,因为我不知道 Azure 存储模拟器在内部使用 LocalDB。

%UserProfile%要修复它,我只需要使用以下 SQL 命令手动重新附加位于其中的数据库:

CREATE DATABASE [AzureStorageEmulatorDb510]
    ON (FILENAME = 'C:\Users\<username>\AzureStorageEmulatorDb510.mdf'),   
    (FILENAME = 'C:\Users\<username>\AzureStorageEmulatorDb510_log.ldf')   
    FOR ATTACH;
于 2020-01-13T10:06:17.023 回答
1

为我工作:

  1. 删除与 azure 模拟器相关的任何存储/sql 数据库
  2. 在 StorageEmulator 路径上运行此命令:

AzureStorageEmulator.exe 初始化 /server 。

(或者你的 SQL 实例,我的是“。”)

于 2020-11-22T15:09:27.520 回答
0

我会帮你的。首先创建一个sql server local db。然后转到存储模拟器文件夹 _-存储模拟器默认安装到 C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator。

然后运行这个 AzureStorageEmulator.exe init /server

文档: AzureStorageEmulator.exe init /server localhost\SQLEXPRESS01

于 2020-10-14T17:33:29.140 回答
0

检查您是否安装了带有 Visual Studio 的 Azure SDK,如果没有,您可以添加该功能

错误

没有错误

于 2020-01-28T16:12:48.753 回答
0

打开 SSMS 并连接到您的 (localdb) 实例。手动创建“AzureStorageEmulatorDb ...”。

于 2021-02-10T23:49:19.833 回答
0

要添加另一个答案,我没有任何 MDF 或 LDF 文件。相反,我只有一个配置文件位于%USERPROFILE%\AppData\Local\AzureStorageEmulator\AzureStorageEmulator.5.10.config. 我也无法(localdb)使用 SSMS 连接到我的本地实例。

SQLInstance将该配置文件中的值更改为localhost而不是(localdb)\MSSQLLocalDB,它开始工作。

于 2021-06-02T15:45:58.947 回答
0

您可以在 userprofile 目录中找到 mdf 和 ldf 文件。只需停止模拟器并将这些文件复制到其他位置并将其从 userprofile 目录中删除即可。然后再次运行模拟器,它将创建新的 mdf 和 ldf 文件。然后停止模拟器并复制旧文件并重新启动模拟器。这样您就不会丢失任何数据。

于 2020-06-04T12:13:04.127 回答
0

您应该有一个名为 Microsoft Azure Storage Emulator 的应用程序。

在此处输入图像描述

启动此应用程序。

如果应用程序指示它正在运行,则AzureStorageEmulator.exe stop首先运行,否则AzureStorageEmulator.exe Start直接运行。应该自动创建你的数据库,至少它对我有用。

在此处输入图像描述

https://docs.microsoft.com/en-us/azure/storage/common/storage-use-emulator

于 2021-06-16T14:43:51.960 回答
-1

一般不建议使用此解决方案,但您可以尝试一下。我认为 AzureStorageEmulator 通过某种方式无法完全访问 localDB 目录中的设置限制了权限。

  1. 您可以转到文件夹属性> sercurity > 编辑为完全权限(我的目录是用户> Appdata)。
  2. 然后重启模拟器 cmd 重启 azure emulator

现在它起作用了。以后你必须考虑它的不安全性

于 2019-01-20T08:06:34.667 回答
-1

我初始化了数据库实例并成功了,但是我的 SQLServer 是 2017。

然后我搜索解决方案,文档说删除故障数据库将解决问题。也许您可以按照文档中的步骤进行尝试。

如果您仍有疑问,请告诉我。

于 2018-12-12T09:18:56.603 回答