对附加的数据库运行 sql 脚本?

Posted

技术标签:

【中文标题】对附加的数据库运行 sql 脚本?【英文标题】:Running sql scripts against an attached database? 【发布时间】:2010-01-16 22:01:53 【问题描述】:

我在 Sql Server 2008 Express 实例上附加了一个 MDF,我需要针对它运行一些 sql 脚本来生成表、索引等。

但我不知道如何让它发挥作用。如果我在 Visual Studio 中加载脚本,它只允许我连接到服务器并针对数据库运行它。我不能选择不同的提供者(Microsoft Sql Server 数据库文件),所以我不能选择我的 MDF。

这让我只能选择将脚本作为单个查询运行,但这不起作用,因为它似乎不支持 TSQL CREATE 语句。

如何针对附加的数据库运行我的 sql 脚本?

【问题讨论】:

我使用的是SQL 2005,附加数据库后,我可以查询-运行脚本一切,你不能做什么?我错过了什么吗? 如果可能,尝试备份还原而不是附加数据库。? 【参考方案1】:

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

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

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

    点击选项按钮

    单击其他连接参数选项卡

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

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

    点击连接按钮

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

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

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

【讨论】:

就像第 5 步的注释一样。您应该使用属性窗格中表示的数据库的完整连接字符串(或者您想要获取连接字符串)。但是您第 5 步中的缩写语法不适用于我一个人。 如果数据库在不同的机器上怎么办?同样,我认为共享 db server 的 mdf 文件不是正确的方法。【参考方案2】:

我假设您的意思是您在 Visual Studio 中有一个本地 MDF 文件(如 App_Data 文件夹)?

您可以通过连接命名管道来使用 SQL Management Studio。

首先,使用他们讨厌的查询工具在附加数据库上的 Visual Studio 中打开一个新查询。在属性窗口的 ServerName 下,以“your-PC-name\mini-guid”的格式保存该迷你 guid。像这样使用 Management Studio 进行连接:

\\.\pipe\mini-guid-here\tsql\query

例如,

\\.\pipe\7789925E-DCAA-4A\tsql\query

您应该会看到数据库下列出的文件名。

【讨论】:

有没有办法在不需要 SSMS 的情况下执行脚本?即直接来自VS?【参考方案3】:

使用SqlCmd 实用程序怎么样?

sqlcmd 实用程序可让您输入 Transact-SQL 语句,系统 程序和脚本文件在 命令提示符,在查询编辑器中 SQLCMD 模式,在 Windows 脚本文件中 或在操作系统中 (Cmd.exe) SQL Server 代理作业的作业步骤。 此实用程序使用 OLE DB 执行 Transact-SQL 批处理。

【讨论】:

那很好,但我认为它不适用于附加的数据库(至少我的尝试失败了)。还是我错了?【参考方案4】:

嗯,我在尝试将 ASPNETDB 的内容导入不同的 MDF 时遇到了同样的问题,我就是这样做的:

    在服务器资源管理器中右键单击 ASPNETDB.mdf 并发布到 .sql 文件。

    使用 file - open 打开 .sql 文件。 (未连接)将出现在名称中。

    右键单击附加的目标数据库并显示属性(TargetDatabase.MDF)

    从属性窗口中获取连接字符串。 复制“Data Source=.\SQLEXPRESS;”之后的连接字符串中的所有内容

    单击执行 Sql 按钮(Ctrl + Shift + E)

    在服务器名称中输入 .\SQLEXPRESS

    在“附加连接参数”选项卡中,粘贴您在第 4 步中复制的数据

    单击连接并从文件列表中按磁盘位置选择相关的目标 MDF 文件。

    点击连接。

    刷新目标数据库

【讨论】:

以上是关于对附加的数据库运行 sql 脚本?的主要内容,如果未能解决你的问题,请参考以下文章

我的SQL数据库是2008版本,如何附加SQL2005创建的数据库?(只有数据库文件,没有脚本)急求高手!!

SQL SERVER 2008 R2 数据库附加到 SQL server 2005,怎么整

在 C# 中对某个数据库或表运行 SQL 脚本?

SQL Server 2000 绿色版的软件特点

附加脚本未执行

将SQL Server 2008的数据库迁移到SQL Server 2019