在MS SQL中,如果你想修改某一个数据库的名称,你可以通过下面几种方法实现。
方法一:使用SP_RENAMEDB系统存储过程实现。
语法: sp_renamedb [ @dbname = ] 'old_name' , [ @newname = ] 'new_name'
例子: 我需要将数据库Test_1的名称修改为Test
use master
go
exec sp_renamedb @dbname='Test_1', @newname='Test';
go
有时候执行该脚本,会报如下错误:
消息 5030,级别 16,状态 2,第 1 行
无法用排他锁锁定该数据库,以执行该操作。
出现这种情况,主要是还有其它程序或用户连接数据库,你必须确保没有任何用户正在使用数据库. 可以通过将数据库设置为单用户模式。在数据库属性——》“连接”选择里面找到限制访问“选项,选择SIGLE_USER选项。然后执行上面语句,即可修改数据库名称。
当然也可以用脚本解决这个问题,查询看看当前有哪些会话连接到这个数据库,如果没有记录,则可直接执行上面脚本。
SELECT SPID FROM master.dbo.sysprocesses W
WHERE dbid=DB_ID('Test1');
否则执行KILL命令杀掉这些会话进程。
KILL SPID
下面这个脚本可以比较好的处理上面问题,不需要你做过多额外操作,直接用脚本完成任务。
use master
exec sp_dboption @dbname='OldDbName', @optname= 'Single User',@optvalue= 'TRUE'
exec sp_renamedb @dbname='OldDbName', @newname= 'NewDbName'
exec sp_dboption @dbname='NewDbName', @optname= 'Single User', @optvalue='FALSE'
GO
检查修改成功。
SELECT name, database_id
FROM sys.databases
WHERE name = N'DbName';
注意:SQL Server 2008后续版本的 Microsoft SQL Server 将删除该功能。请避免在新的开发工作中使用该功能,并着手修改当前还在使用该功能的应用程序。
方法二:使用ALTER DATABASE语句修改数据库名称。
USE master;
GO
ALTER DATABASE Test1 MODIFY NAME = Test;
GO
方法三:使用Microsoft SQL Server Managment Studio管理工具,选中要修改名称的数据Test1,单击右键,选择”重命名”;注意如果有其他用户会话连接该数据库则会报错,必须先杀掉那些会话进程或使数据库处于单用户模式下,再执行上面操作,否则会报错。
本文链接
1.sql 2005 升级sql 2008
下载 SQL2008R2 ,为防止出错误,把vs2010 和sql2005 全部关闭。
stepup.exe 安装,直接是安装不要覆盖2005 的那样容易出错误。
一步一步向下走既可,中间有设置数据库密码和其他选择,最后一步安装的时间有点长。
2.sql2008 的数据库备份文件如何导入sql2005 中
找一台sql2008数据中,把备份文件附件sql2008数据库中。
首先在2005 上创建一个是空的数据库,记住是空的,不可以有任何一张表的数据库,
在2005 上操作,选中新建的数据库右键--任务--导入数据---下一步,在该页,服务器名称:输入对方的Ip地址
用sql server 身份连接 用户名和密码也是对方数据库的用户名和密码,一步一步向下走即可。
也可以在sql2008 上选择该数据库邮件--任务--导出数据--剩余操作和导入操作一样。
本文链接
工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论、补充。
00.建立测试环境
01.使用SQL Server Import and Export Tool
02.使用Generate Scripts
03.使用BCP
04.使用SqlBulkCopy
05.使用Linked Server进行数据迁移
06.使用RedGate的SQL Data Compare
07.结果对比
可以先看下测试的结果
00.建立测试环境
建立一个测试的环境,一个数据源数据库,版本为SQL Server 2008,一个目标数据库,版本为SQL Server 2000。
实验环境如下图所示,源数据库使用语句生成了100万的测试数据。
2 DROP TABLE DEMOTABLE
3 GO
4 CREATE TABLE DEMOTABLE
5 (
6 COL1 VARCHAR(50) ,
7 COL2 VARCHAR(50) ,
8 COL3 VARCHAR(50)
9 )
10 INSERT INTO DEMOTABLE
11 SELECT TOP 1000000
12 NEWID() ,
13 NEWID() ,
14 NEWID()
15 FROM MASTER..SPT_VALUES T1
16 INNER JOIN MASTER..SPT_VALUES T2 ON 1 = 1
17 INNER JOIN MASTER..SPT_VALUES T3 ON 1 = 1
使用SQL Server Import and Export Tool进行数据的导出,也可以在目标数据库端使用Import进行导入,这部分套件也是SSIS的一部分。
在源数据库上右键,选择Task -> Export Data
分别填写源数据库和目标数据库的连接信息。
选择“copy data from one or more tables or views”
选择需要导数据的表,并且可以编辑列的Mapping关系。