繁体   English   中英

将数据库(.mdf文件)附加到SQL Server时出错

[英]Error attaching a database (.mdf file) to SQL Server

我将数据库DBName.mdf到网络SQL Server时遇到问题。 管理员可以手动附加数据库,但如果我尝试,我会收到以下错误消息。

数据库'DBName'无法升级,因为它是只读的,具有只读文件或用户无权修改某些文件。 使数据库或文件可写,然后重新运行恢复。 (Microsoft SQL Server,错误:3415)

这是我的代码:

System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection();
conn.ConnectionString = @"Server=" + SQLServerName + ";database=master;User ID=" + UserName + ";Pwd=" + Password; ;

try
{
    conn.Open();

    System.Data.SqlClient.SqlCommand com = new System.Data.SqlClient.SqlCommand("CREATE DATABASE DBName ON ( FILENAME = '" + @"C:\DBName.mdf" + "' ), ( FILENAME = '" + @"C:\DBName_log.ldf" + "' ) FOR ATTACH", conn);
    com.ExecuteScalar();

}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}
finally
{
    conn.Close();
}

这是SQL Server的详细信息

- Product - Microsoft SQL Server Express Edition (64-bit)
- Version - 11.0.2218.0

我可以创建一个新的数据库,但不能附加现有的数据库。 我在这里错过了什么?

任何帮助将不胜感激。

我弄清楚问题是什么。

此链接有助于解决问题。 http://www.sqlservercentral.com/Forums/FindPost1367859.aspx

运行SQL Service的用户没有该文件夹的完全访问权限。 我给了用户完全许可,一切正常。

我有同样的错误试图通过SQL服务器管理工​​作室附加。
以管理员身份运行SQL Server Management Studio为我解决了这个问题。 从这里收集的信息http://www.nickyvv.com/2013/02/database-databasename-cannot-be.html

我也遇到了类似的问题,我使用Butters和pblack上面列出的两种方法解决了这个问题。 总结一下,它们是:

  • 转到系统服务并找到SQL Server数据库服务。
  • 右键单击该服务,然后选择属性
  • 转到“登录”选项卡
  • 如果您的服务中的“登录身份”用户是用户帐户,请确保该用户帐户对该文件夹具有完全控制权。

  • 如果您的服务中的“登录身份”用户是“网络服务”或“本地系统”,则这些帐户应该已有访问权限,但请继续添加并为其提供完全控制权限。

  • 最后,RUN SQL Server管理工作室使用管理权限

在使用T-SQL Script时我也遇到了类似的情况,但我选择了另一种通过SSMS的方式。 以下是一些简单的步骤,对于通过SQL Server Management Studio附加SQL MDF文件非常有帮助。

  1. 浏览开始按钮 - >所有程序 - > SQL Server XXXX-> SQL Server Management Studio
  2. 登录
  3. 选择对象资源管理器登记的数据库
  4. 然后右键单击它并选择Attach database
  5. 数据库附件Windows出现在屏幕上,然后单击“添加”按钮
  6. 然后,您需要选择要附加的MDF文件,然后单击“确定”
  7. 确认并单击“确定”
  8. 数据库已成功附加。 您可以在“数据库”列表中签出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM