【问题标题】:How to run an SQL script against a MDF file?如何针对 MDF 文件运行 SQL 脚本?
【发布时间】:2011-05-13 03:57:32
【问题描述】:

我使用 Entity Framework 4.0 使用模型优先方法创建了一个数据库模型。然后,我使用 Generate Database from Model... 创建了一个 sql 脚本。我还在 App_Data 文件夹中创建了一个 SQL Server 数据库文件。我现在如何针对这个 MDF 文件运行 SQL 文件?

我正在使用 Visual Studio 2010。

【问题讨论】:

  • 我能得到一些关于否决票的反馈吗?
  • 点赞。它有用且清晰。我得到了一个提示,可以从下面@jedatu 的答案中找到解决方案。

标签: .net entity-framework-4 mdf sql-scripts ef-model-first


【解决方案1】:

我遇到了同样的问题,这对我有用。

当我选择“从模型生成数据库...”时,我创建了一个新的 MDF 文件。此过程运行良好,Visual Studio 生成了所需的 SQL 脚本。但是,我不知道如何连接到同一个 MDF 文件来运行脚本。

事实证明这很容易。

  1. 右键单击脚本并选择连接 > 连接

  2. 应该已经为本地 SQLEXPRESS 实例设置了服务器名称和身份验证。

  3. 点击选项按钮

  4. 单击其他连接参数选项卡

  5. 使用以下指导粘贴数据库文件的路径:

    AttachDBFilename=C:\Path\To\Database\LocalData.mdf;database=LocalData;

  6. 点击连接按钮

如果您仍然无法连接,可能是因为已经有一个打开的连接。检查服务器资源管理器,如果连接已打开,请右键单击并选择关闭连接。

只要 SQL 脚本保持连接,此过程还将创建持久连接。您需要关闭脚本或选择右键单击 > 连接 > 断开连接。

更多信息可以在这个问题中找到: EF4 Generate Database

【讨论】:

  • database=LocalData; 必须替换成什么?
  • 我无法明确回答这个问题。我认为数据库名称是什么并不重要,但对我来说,我总是让它匹配 MDF 文件名,当然没有扩展名。
  • @jedatu,我尝试了上述方法,但出现此错误:无法打开物理文件“...\App_Data\Database.mdf”。操作系统错误 5:“5(无法检索此错误的文本。原因:15105)”。无法将文件“...\App_Data\Database.mdf”附加为数据库“Database”。 (Microsoft SQL Server,错误:5120)如需帮助,请点击:go.microsoft.com/…
  • 这很完美,除了在步骤#5中你需要粘贴你的mdf文件的连接字符串。
  • 好吧,这个成功了:stackoverflow.com/questions/22057400/…
【解决方案2】:

我找到了一个解决方案,但它有点 hacky。

我有 SQL Server Express (2008 R2)。因此,当从模型生成数据库时,我连接到它并让它在那里建立一个数据库。然后我去C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQLEXPRESS\MSSQL\DATA。 10_50 部分因版本而异,可能对您有所不同。所以在这个文件夹中有一个 .mdf 文件,其名称与数据库一样 - .mdf。还有一个 _log.ldf 文件。我将这些复制到我项目的 App_Data 文件夹中。

这可行,但为模型中的每次更改生成一个新的 .mdf 数据库非常耗时。所以我在发货前就这样做了。

如果您找到更好的答案,请分享。

【讨论】:

  • 这不是一个有用的解决方案,因为大多数开发人员习惯于在他们的项目文件夹中创建 mdf 文件,而不是在程序文件中。
【解决方案3】:

我遇到了同样的问题,在 mvc4 中使用 EF5 的 Model First 方法。我所做的是创建项目、添加新模型、在 edmx 图上添加实体和关联。右键单击图表并选择“从模型生成数据库”。这会生成 sql 文件。

现在在解决方案资源管理器的 App_Data 文件夹中添加一个 mdf 文件,例如 Database1.mdf(添加 > 新项目 > 数据 > SQL Server 数据库)。

右键单击 > 打开此 mdf 文件。现在在属性窗格中,您有连接字符串。照原样复制即可。

恢复到您生成的 SQL 脚本,右键单击 > 执行。弹出窗口询问连接参数。确保服务器名称中的值正确(使用您的 PC 名称或 127.0.0.1)。

现在在选项中,单击附加连接参数选项卡并粘贴从 mdf 文件属性复制的连接字符串。

这对我来说非常有效,而且非常合乎逻辑。无需直接玩弄 SQL Server 安装目录。

【讨论】:

    【解决方案4】:

    上面的答案很好,但我必须在 VS2013 中执行更多步骤,但我确实在以下帮助下解决了。

    1. 我从现有的 .mdf 创建了一个 ADO.NET 模型
    2. 右键 -> 从模型生成数据库
    3. 在解决方案资源管理器中右键单击 .mdf 并打开
    4. 在属性窗格中将连接字符串复制到剪贴板
    5. 在 ADO 模型创建的 SQLQuery 窗口中单击更改连接
    6. 在新的连接到服务器窗口中 -> 附加连接参数 -> 从剪贴板粘贴连接字符串
    7. 在服务器资源管理器中右键单击数据库 -> 新建查询
    8. 将查询从 ADO 生成脚本复制并粘贴到新的查询窗口
    9. 将 USE [yourdatabase.mdf] 更改为 USE [longPath],其中 longPath 是顶部下拉列表中列出的非常长的路径。最简单的方法是开始输入并按 CTRL-SPACE。
    10. 运行查询
    11. 保存 longPath,因为您可以将它粘贴到 ADO 生成的任何新查询的 USE[] 中。

    我希望这对某人有所帮助 - 快乐编码!

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    • 1970-01-01
    • 2014-09-16
    相关资源
    最近更新 更多