【问题标题】:How can I find out the location of my (localdb) SQL Server 2012 database and back it up?如何找出我的 (localdb) SQL Server 2012 数据库的位置并进行备份?
【发布时间】:2013-08-14 16:09:21
【问题描述】:

我正在使用 VS2012 并且我创建了一个数据库:

(localdb)\v11.0 (SQL Server 11.0.2100 - T61\Alan)

我怎样才能找到这个数据库的物理位置。我怎样才能备份这个?我可以只复制文件,将它们移动到另一个位置并再次启动数据库。

这是我的连接字符串:

<add name="DB1Context" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=DB1;Integrated Security=SSPI;" providerName="System.Data.SqlClient" />

【问题讨论】:

  • 这个问题对于 Stack Overflow 来说是题外话,专门针对编程问题,但它非常适合关于系统管理的 Server Fault。
  • @chrylis:鉴于微软说“Microsoft SQL Server Express LocalDB 是 SQL Server Express 针对开发人员的一项功能”(请参阅​​docs.microsoft.com/en-us/sql/database-engine/configure-windows/…),Stack Overflow 会不会比服务器故障更合适?我知道 DBA 在 Server Fault 上花费的时间可能比 Stack Overflow 上的时间要多,但可能发现这些信息有用的开发人员更有可能在 Stack Overflow 上。

标签: sql-server


【解决方案1】:

默认情况下,LocalDB 数据库在 C:/Users/"username" 目录下创建“*.mdf”文件。

链接参考:https://docs.asp.net/en/latest/tutorials/first-mvc-app/working-with-sql.html

【讨论】:

    【解决方案2】:

    对于第一次接触 Entity Framework 的人来说,这是相当混乱的。

    如果使用Code First,会生成一个mdf文件,在C:/Users/"username"

    如果你使用Database First,你在SQL Server Object Explorer(不是Server Explorer!!)下创建一个数据库,在@987654322下会生成一个mdf文件@

    【讨论】:

    • %userprofile%\AppData\Local\Microsoft\Microsoft SQL Server Local DB\Instances\MSSQLLocalDB
    【解决方案3】:

    您是说您可以在 SQL Server Management Studio 中看到它吗? Right click on DataBase -&gt; Properties -&gt; Files 会告诉你它在硬盘上的哪个位置。如果您备份 mdf,请务必备份 ldf。

    或者,您可以右键单击数据库,然后选择Tasks -&gt; Backup。这将为您创建一个 .bak 文件,您无需担心 mdf/ldf。

    【讨论】:

    • 要连接到 SQL Server Management Studio 中的 LocalDB,您必须使用“(localdb)\mssqllocaldb”作为 Servername。
    【解决方案4】:

    http://technet.microsoft.com/en-us/library/hh510202.aspx

    数据库的系统数据库文件存储在用户的 通常隐藏的本地 AppData 路径。例如 C:\Users\--user--\AppData\Local\Microsoft\Microsoft SQL Server 本地 数据库\实例\LocalDBApp1。用户数据库文件存储在 用户指定,通常在 C:\Users\\Documents\ 文件夹。

    【讨论】:

    • 谢谢。如果我想移动数据库,那么我可以将文件移动到另一台机器并重新开始吗?
    【解决方案5】:

    试试这个 -

    DECLARE 
          @SQL NVARCHAR(1000)
        , @DB_NAME NVARCHAR(100) = 'AdventureWorks2008R2'
    
    SELECT TOP 1 @SQL = '
        BACKUP DATABASE [' + @DB_NAME + '] 
        TO DISK = ''' + REPLACE(mf.physical_name, '.mdf', '.bak') + ''''
    FROM sys.master_files mf
    WHERE mf.[type] = 0
        AND mf.database_id = DB_ID(@DB_NAME)
    
    PRINT @SQL
    EXEC sys.sp_executesql @SQL
    

    输出 -

    BACKUP DATABASE [AdventureWorks2008R2] 
    TO DISK = 'D:\DATABASE\SQL2012\AdventureWorks2008R2.bak'
    

    【讨论】:

      【解决方案6】:

      打开 Windows 注册表编辑器并导航到键 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions。查看目标 SQL Server 实例的 version key 下方,例如11.0 用于 SQL 2012,并查看其 InstanceAPIPath 值以获取 localdb 的文件系统位置。

      请注意,可以在here找到映射到发布名称和年份的 SQL Server 版本的完整列表

      【讨论】:

      • 谢谢。就我而言,这现在应该是选定的答案。对于新手,也许应该提到在命令行中使用 regedit 来访问注册表。
      • 指向SqlUserInstance.dll文件的位置。这有什么帮助?
      【解决方案7】:

      此 PowerShell 脚本将为您提供 localdb .mdf 文件的默认位置:

      [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO') | out-null
      (New-Object Microsoft.SqlServer.Management.Smo.Server("(localdb)\$instancename")).DefaultFile
      

      其中$instancename 是您要检查的localdb 实例的名称。您可以通过运行获取 localdb 实例列表

      sqllocaldb i
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-09-19
        • 1970-01-01
        • 1970-01-01
        • 2011-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多