数据库重命名以后,无法创建原来的数据库?

NewCenturyNewPage 2008-12-11 09:30:17
我有一个TestDB数据库,我把它重命名成功,
但是再创建TestDB就报错了,

sp_rename 'TestDB', 'TestDB_drop'
Create Database 'TestDB'

第一个执行成功了,
但是第二句执行报错!


消息 1802,级别 16,状态 4,第 1 行
CREATE DATABASE 失败。无法创建列出的某些文件名。请查看相关错误。
消息 5170,级别 16,状态 1,第 1 行
无法创建文件 'c:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\TestDB.mdf',因为它已存在。请更改文件路径或文件名,然后重试此操作。


该怎么改正该错误?
...全文
496 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
NewCenturyNewPage 2008-12-11
  • 打赏
  • 举报
回复
ding
NewCenturyNewPage 2008-12-11
  • 打赏
  • 举报
回复
楼上的,看不懂
james-a 2008-12-11
  • 打赏
  • 举报
回复
你只是把它的数据库名改了,它的物理文件名还是原来的。
如果你要把它的物理文件名也要改掉,看以下代码:
USE master
GO
BACKUP DATABASE pubs
TO DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\pubs.bak'
RESTORE FILELISTONLY
FROM DISK ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\pubs.bak'
RESTORE DATABASE pubs_Test
FROM DISK ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\pubs.bak'
WITH NORECOVERY,
MOVE 'pubs' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_Test_data.mdf',
MOVE 'pubs_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_Test_log.ldf'
GO
drop DATABASE pubs
go
Create DataBase pubs
ChinaJiaBing 2008-12-11
  • 打赏
  • 举报
回复

你先把这个数据库备份一下,然后新建一个数据库。。
把这数据库还原成新的数据库(选路径...)
再把原来的数据库删了。。。(用不好就用土方法。。。)
hexiaoling 2008-12-11
  • 打赏
  • 举报
回复
1、选中你的TestDB;所有任务/生成sql脚本;
2、创建你的新的空db(testdb2);然后执行生成的sql脚本

这样就可以建一个跟原来testdb一模一样的数据库testdb2了,而且testdb2不包含数据
水族杰纶 2008-12-11
  • 打赏
  • 举报
回复
找到[testdb]所在目錄,將其刪除~~
super_iven 2008-12-11
  • 打赏
  • 举报
回复
UP
NewCenturyNewPage 2008-12-11
  • 打赏
  • 举报
回复
该数据库名原因我说一下吧,
我是想要参考原来已有的的数据库的表格内容。
然后建立一个新的同名空白数据库。

这个不是问题
bluefangxiao 2008-12-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 wufeng4552 的回复:]
sp_renamedb 而非sp_rename
[/Quote]
.
NewCenturyNewPage 2008-12-11
  • 打赏
  • 举报
回复
哦,是笔误,是sp_renamedb,但是还是报错
SQL 语句如下,大家可以执行试一下:

create database [testdb]
sp_renamedb 'testdb', 'test00'
create database [testdb]
liuenbo2306 2008-12-11
  • 打赏
  • 举报
回复
你只是修改数据库名,为什么还要重新建立一个数据库呢?不明白
水族杰纶 2008-12-11
  • 打赏
  • 举报
回复
参考SQL Server联机丛书的 sp_renamedb与sp_rename

一、更改数据库名


sp_renamedb
更改数据库的名称。

语法
sp_renamedb [ @dbname = ] ' old_name ' ,
[ @newname = ] ' new_name '

参数
[ @dbname = ] ' old_name '

是数据库的当前名称。old_name 为 sysname 类型,无默认值。

[ @newname = ] ' new_name '

是数据库的新名称。new_name 必须遵循标识符规则。new_name 为 sysname 类型,无默认值。

返回代码值
0 (成功)或非零数字(失败)

权限
只有 sysadmin 和 dbcreator 固定服务器角色的成员才能执行 sp_renamedb。

示例
下例将数据库 accounting 改名为 financial。

EXEC sp_renamedb ' accounting ' , ' financial '


二、更改表名或列名



sp_rename [ @objname = ] ' object_name ' ,
[ @newname = ] ' new_name '
[ , [ @objtype = ] ' object_type ' ]

/////////////////////////////////////////////
A. 重命名表
下例将表 customers 重命名为 custs。

EXEC sp_rename ' customers ' , ' custs '

B. 重命名列
下例将表 customers 中的列 contact title 重命名为 title。

EXEC sp_rename ' customers.[contact title] ' , ' title ' , ' COLUMN '
水族杰纶 2008-12-11
  • 打赏
  • 举报
回复
sp_renamedb 而非sp_rename

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧