从包含表的所有数据库中的表中删除

时间:2014-02-12 19:21:36

标签: tsql sql-server-2012

我想创建一个T-SQL查询,它删除包含此确切表的所有数据库中表Logins中的所有行,因此可以毫无错误地运行它。

我想将代码重用于其他内容,例如从包含表Users的所有数据库中查找所有活动用户。因此,我认为,最好的解决方案是纯粹的T-SQL解决方案。这样查询甚至可以成为SQL Server Agent

运行的自动作业

有可能吗?怎么样?

1 个答案:

答案 0 :(得分:4)

构建一些动态SQL:

declare @sql varchar(max) = ''
select @sql = @sql + 
  'use [' + name + '] ' + 
   'if exists (select * from sys.tables where name = ''Logins'') ' + 
   'delete from Logins '
from sys.databases where name not in ('master','model','msdb','tempdb')

print @sql
--exec (@sql)

取消注释exec行以实际运行代码,而不是仅查看将执行的内容。