更改缺少表的SQL数据库的名称

时间:2012-11-07 19:27:52

标签: sql sql-server

更改移动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]] SET OFFLINE GO

然后我用代码移动文件。

然后在下一个脚本中使用

ALTER DATABASE  [[RENAMEDBNAME]] SET ONLINE GO

数据库中缺少表格 - 有什么想法吗? 我应该使用备份和还原吗?

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

  1. 必须在更改
  2. 之前完成SET OFFLINE
  3. 您一次只能处理一个文件。
  4. 参考文章是here