加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何删除SQL Server中的多个数据库

发布时间:2020-12-12 16:32:03 所属栏目:MsSql教程 来源:网络整理
导读:只是为了澄清,这不是一个真正的问题,更多的帮助像我这样的人正在寻找答案. 许多应用程序创建临时表等,但是当Team Foundation Server在我的测试SQL Server上创建了80个数据库时,我感到惊讶. TFS安装不正确,请稍后再重新安装.由于每个数据库都有一个命名约定,而
只是为了澄清,这不是一个真正的问题,更多的帮助像我这样的人正在寻找答案.
许多应用程序创建临时表等,但是当Team Foundation Server在我的测试SQL Server上创建了80个数据库时,我感到惊讶. TFS安装不正确,请稍后再重新安装.由于每个数据库都有一个命名约定,而是手动删除每个数据库,我记得如何使用游标,并写出了我认为是最不明智的T-SQL的一切:
CREATE TABLE #databaseNames (name varchar(100) NOT NULL,db_size varchar(50),owner varchar(50),dbid int,created date,status text,compatibility_level int);
INSERT #databaseNames
    exec sp_helpdb;

DECLARE dropCur CURSOR FOR
    SELECT name FROM #databaseNames WHERE name like '_database_name_%';
OPEN dropCur;
DECLARE @dbName nvarchar(100);
FETCH NEXT FROM dropCur INTO @dbName;
DECLARE @statement nvarchar(200);
WHILE @@FETCH_STATUS = 0
BEGIN
    SET @statement = 'DROP DATABASE ' + @dbName;
    EXEC sp_executesql @statement;
    FETCH NEXT FROM dropCur INTO @dbName;
END
CLOSE dropCur;
DEALLOCATE dropCur;
DROP TABLE #databaseNames;

不用说,使用这样的游标可能是非常危险的,应该非常小心.这对我有用,我还没有看到任何进一步的损害我的数据库,但我不承担:使用此代码风险自负,并备份您的重要数据!
另外,如果这个应该删除,因为这不是一个问题,我明白了.只是想把这个发布在人们会看的地方.

解决方法

这很容易
use master
go
declare @dbnames nvarchar(max)
declare @statement nvarchar(max)
set @dbnames = ''
set @statement = ''
select @dbnames = @dbnames + ',[' + name + ']' from sys.databases where name like 'name.of.db%'
if len(@dbnames) = 0
    begin
    print 'no databases to drop'
    end
else
    begin
    set @statement = 'drop database ' + substring(@dbnames,2,len(@dbnames))
    print @statement
    exec sp_executesql @statement
    end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读