0

更改移动 mdf 和 ldf 文件的 SQL Server 2005 数据库的名称时。

首先我在我的程序安装中运行一个脚本:

Alter Database [[DBNAME]] MODIFY NAME = [[RENAMEDBNAME]] 

Alter Database [[RENAMEDBNAME]] MODIFY FILE ( NAME =  [[DBNAME]], NEWNAME = [[RENAMEDBNAME]] )

Alter Database [[RENAMEDBNAME]] MODIFY FILE ( NAME =  [[DBNAME]_log], NEWNAME = [[RENAMEDBNAME]_log] )

Alter Database [[RENAMEDBNAME]] MODIFY FILE ( NAME =[[RENAMEDBNAME]]  , FILENAME  ='[DBPATH][RENAMEDBNAME].mdf'  )

Alter Database [[RENAMEDBNAME]] MODIFY FILE ( NAME =[[RENAMEDBNAME]_log]  , FILENAME  ='[DBPATH][RENAMEDBNAME]_log.ldf'  )

ALTER DATABASE [[RENAMEDBNAME]] 设置离线 GO

然后我在代码中移动文件。

然后在我使用的下一个脚本中

ALTER DATABASE  [[RENAMEDBNAME]] SET ONLINE GO

数据库中缺少这些表 - 有什么想法吗?我应该使用备份和恢复吗?

谢谢

4

2 回答 2

1

到目前为止,备份和恢复是最简单、最可靠的方法。您可以使用以下脚本来完成您想要的内容:

/* Detach the database */
USE [master]
GO
ALTER DATABASE [junk] SET  SINGLE_USER WITH ROLLBACK IMMEDIATE
GO
USE [master]
GO
EXEC master.dbo.sp_detach_db @dbname = N'junk'
GO

/* Move your files and reattach using this script */
USE [master]
GO
CREATE DATABASE [junk2] ON 
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50\MSSQL\DATA\junk2.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50\MSSQL\DATA\junk2_log.ldf' )
 FOR ATTACH
GO
于 2012-11-07T19:55:02.640 回答
0

请参阅 Technet 的以下文章。他们是你似乎错了的两件事。

  1. SET OFFLINE 必须在更改之前完成
  2. 您一次只能执行一个文件。

参考文章在这里

于 2012-11-07T19:48:53.127 回答