Press "Enter" to skip to content

标签: TSQL脚本

TSQL 数据库某字段内容批量替换

由于数据库中存在某个字段某些内容,需要整体替换,如http://www.kiccleaf.com 替换成http://www.qimutian.com 这样的方法,如果程序跑,那是要先读取出来,然后替换后再写入回去。麻烦。
保险点操作先看看select 替换结果:
其实只要替换kiccleaf为qimutian就好了。

select REPLACE(URL,'kiccleaf','qimutian')  from Tables

实际更新语句

update Tables set URL=REPLACE(URL,'kiccleaf','qimutian')

总结:批量替换,速度超级快!工作量省不少。

Leave a Comment

MSSQL2005-MSSQL2008数据库批量备份和还原脚本

由于项目关系,一台服务器数据库做迁移工作,将近两百多个数据库一个个备份要浪费很多时间,在此采用了生成脚本的方式与大家分享,希望给需要的人有帮助。已经测试适合MSSQL2005-MSSQL2008数据库备份和还原脚本,未测试MSSQL2000数据库。
2011-09-27 添加分离数据库和附加数据脚本

--批量生成分离脚本
use master
select 'EXEC sp_detach_db '''+name+''', ''true'';'  from sysdatabases 

--单个数据库分离
EXEC sp_detach_db '<database name>', 'true';
--批量生成数据库附加脚本
use master
select 'CREATE DATABASE ['+name+'] ON ( FILENAME = N''C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\'+name+'.mdf'' ),( FILENAME = N''C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\'+name+'_log.ldf'' ) FOR ATTACH ;' from sysdatabases 
--单个数据库附加脚本
use master
CREATE DATABASE [database_name] ON 
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\<database name>.mdf' ),
( FILENAME = N'C:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\Data\<database name>.ldf' )
 FOR ATTACH ;
use master
--生成批量删除数据库脚本
select 'DROP DATABASE  ['+name+'];' from sysdatabases 
use master
--生成备份脚本,可在列表中复制生成的TSQL代码
select 'BACKUP DATABASE ['+name+'] TO DISK = ''f:\autobak\'+name+'.bak'' WITH NOINIT , NOUNLOAD , NOSKIP , STATS = 10, NOFORMAT ;' from sysdatabases 

如图所示:

复制以上列表TSQL脚本在迁移的服务器上进行执行备份数据库

--生成还原脚本,数据库存放目录与迁移机器同样时用此脚本
select 'BACKUP DATABASE ['+name+'] FROM DISK=''f:\autobak\'+name+'.bak'' WITH REPLACE ;' from sysdatabases

select 'alter database ['+name+']  set online ;' from sysdatabases 

如图所示:

--数据库迁移到其他机器,盘符和目录发生变化时,就需要做还原配置相应的路径
--D:\Data 目录为数据库存放目录和日志存放目录,也可将两个目录分其他盘符可提升IO的操作效率
--注意:MOVE 后面的数据逻辑名称,如果是独立创建的数据逻辑名不会错。
--     假如是从A数据库还原成B名称数据时,他的逻辑名称还是A,所以此处大家一定要注意
select 'RESTORE DATABASE ['+name+'] FROM DISK=''d:\autobak\'+name+'.bak'' 
WITH MOVE ''' +name+ ''' TO ''d:\Data\'+name+'.mdf'',
MOVE '''+name+'_log'' TO ''d:\Data\'+name+'_log.ldf'';' from sysdatabases

生成以上脚本,可把数据库复制到部署机器上后,修改好bak文件所在目录执行TSQL脚本即可
有什么问题欢迎大家共同探讨,有不足之处或是有更好的方法希望大家能与我分享。

Leave a Comment