果然是路径的问题 ,放在D盘根目录就OK了,谢谢以上两位大虾。不过附加后这个数据库显示的是“只读”,不知怎么修改成可读的,请各位支招.万分感谢!

解决方案 »

  1.   


    ALTER DATABASE 数据库名
    SET READ_WRITE  --这是2005的方法,如果不行,试试改成READWRITE 
      

  2.   


    执行后出现如下异常,修改失败..
    -------------------------------------------------------------ALTER DATABASE  AdventureWorks
    SET READ_WRITE  消息 5120,级别 16,状态 101,第 2 行
    无法打开物理文件 "D:\AData.mdf"。操作系统错误 5:"5(拒绝访问。)"。
    消息 5120,级别 16,状态 101,第 2 行
    无法打开物理文件 "D:\A_Log.ldf"。操作系统错误 5:"5(拒绝访问。)"。
    文件激活失败。物理文件名称'D:\A_Log.ldf'可能不正确。
    消息 945,级别 14,状态 2,第 2 行
    由于文件不可访问,或者内存或磁盘空间不足,所以无法打开数据库 'AdventureWorks'。有关详细信息,请参阅 SQL Server 错误日志。
    消息 5069,级别 16,状态 1,第 2 行
    ALTER DATABASE 语句失败。
      

  3.   

    那是因为本身的MDF和LDF文件的只读属性已经被选上了,你到操作系统磁盘下去把该属性去掉,再执行语句.
    当然了,你本身账号是要有权限去修改操作系统文件属性的.
      

  4.   


    检查发现我的磁盘中,MDF和LDF文件的只读属性并没有选中,但是在该数据库“属性”--“选项”---“数据库状态”中显示:是否只读:true   ,我试图修改又报错。请各位高手继续支持, 可以加分。异常如下:===================================更改 对于 数据库“AdventureWorks”失败。  (Microsoft.SqlServer.Smo)------------------------------
    有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.1399.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=更改+Database&LinkId=20476------------------------------
    程序位置:   在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.AlterImpl()
       在 Microsoft.SqlServer.Management.Smo.Database.Alter(TerminationClause terminationClause)
       在 Microsoft.SqlServer.Management.SqlManagerUI.CreateDatabaseData.DatabasePrototype.ApplyChanges(Control marshallingControl)
       在 Microsoft.SqlServer.Management.SqlManagerUI.DBPropSheet.DoPreProcessExecution(RunType runType, ExecutionMode& executionResult)
       在 Microsoft.SqlServer.Management.SqlMgmt.SqlMgmtTreeViewControl.DoPreProcessExecutionAndRunViews(RunType runType)
       在 Microsoft.SqlServer.Management.SqlMgmt.SqlMgmtTreeViewControl.ExecuteForSql(PreProcessExecutionInfo executionInfo, ExecutionMode& executionResult)
       在 Microsoft.SqlServer.Management.SqlMgmt.SqlMgmtTreeViewControl.Microsoft.SqlServer.Management.SqlMgmt.IExecutionAwareSqlControlCollection.PreProcessExecution(PreProcessExecutionInfo executionInfo, ExecutionMode& executionResult)
       在 Microsoft.SqlServer.Management.SqlMgmt.ViewSwitcherControlsManager.RunNow(RunType runType, Object sender)===================================执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)------------------------------
    程序位置:   在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)
       在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(StringCollection sqlCommands, ExecutionTypes executionType)
       在 Microsoft.SqlServer.Management.Smo.ExecutionManager.ExecuteNonQuery(StringCollection queries)
       在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.ExecuteNonQuery(StringCollection queries, Boolean includeDbContext)
       在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.AlterImplFinish(StringCollection alterQuery, ScriptingOptions so)
       在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.AlterImplWorker()
       在 Microsoft.SqlServer.Management.Smo.SqlSmoObject.AlterImpl()===================================无法打开物理文件 "D:\AData.mdf"。操作系统错误 5:"5(拒绝访问。)"。
    无法打开物理文件 "D:\A_Log.ldf"。操作系统错误 5:"5(拒绝访问。)"。
    由于文件不可访问,或者内存或磁盘空间不足,所以无法打开数据库 'AdventureWorks'。有关详细信息,请参阅 SQL Server 错误日志。
    ALTER DATABASE 语句失败。
    文件激活失败。物理文件名称'D:\A_Log.ldf'可能不正确。 (.Net SqlClient Data Provider)------------------------------
    有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.1399&EvtSrc=MSSQLServer&EvtID=5120&LinkId=20476------------------------------
    服务器名称: GUOGUO\SQLEXPRESS
    错误号: 5120
    严重性: 16
    状态: 101
    行号: 1
    ------------------------------
    程序位置:   在 System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
       在 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
       在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
       在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
       在 System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async)
       在 System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
       在 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
       在 Microsoft.SqlServer.Management.Common.ServerConnection.ExecuteNonQuery(String sqlCommand, ExecutionTypes executionType)
      

  5.   

    估计你用的是Express版本吧,检查你的服务启动用户是不是AUTHORITY\NetworkService
    你把启动用户改为本地系统用户,然后再修改看看,记得重启服务如果不行,再次重新附加后再修改。