sqlserver 批量修改库的逻辑名

话不多说,直接上脚本。

DECLARE
@dataname VARCHAR(100), @logname VARCHAR(100), @dbname VARCHAR(100),@sqlexec varchar(2000)

DECLARE dbs_cur CURSOR FOR
SELECT name
FROM master..sysdatabases
WHERE dbid > 4
ORDER BY name;

--drop table db_info
if (not exists (select * from master..sysobjects where NAME='DB_INFO'))
begin
create table DB_INFO
(dbname varchar(100)
,dataname varchar(100)
,logname varchar(100)
)
end;

DELETE master..DB_INFO;

OPEN dbs_cur;

FETCH NEXT FROM dbs_cur INTO @dbname;

WHILE (@@FETCH_STATUS = 0)
BEGIN

set @sqlexec='insert into master..DB_INFO
select '+CHAR(39)+@dbname+CHAR(39)+',max(case when fileid=1 then name end)as datafile, max(case when fileid=2 then name end)as logfile
from '+@dbname+'..sysfiles'

exec (@sqlexec)
print @sqlexec

FETCH NEXT FROM dbs_cur INTO @dbname
END

CLOSE dbs_cur

DEALLOCATE dbs_cur

declare dbinfo_cur cursor for
select * from master..DB_INFO where lower(dataname)<>lower(dbname) or lower(logname)<>lower(dbname+'_log')

OPEN dbinfo_cur;

FETCH NEXT FROM dbinfo_cur INTO @dbname,@dataname,@logname
WHILE (@@FETCH_STATUS = 0)
BEGIN

IF lower(@dataname)<>lower(@dbname)
BEGIN

set @sqlexec='alter database '+@dbname+' modify file (name='+rtrim(@dataname)+',NEWNAME='+@dbname+')';
print @sqlexec
exec (@sqlexec)

END
IF lower(@logname) <> lower(@dbname + '_log')
BEGIN
set @sqlexec='alter database '+@dbname+' modify file (name='+rtrim(@logname)+',NEWNAME='+@dbname+ '_log)'
print @sqlexec
exec (@sqlexec);
END
FETCH NEXT FROM dbinfo_cur INTO @dbname,@dataname,@logname
END
close dbinfo_cur
DEALLOCATE dbinfo_cur


---------------------------------------------------------------------------------------------------------
查询
select * from GuangzhouWebBase..sysfiles where charindex('MDF',filename)>0
select * from GuangzhouWebBase..sysfiles where charindex('LDF',filename)>0

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值