Sql server 搜索数据库

Sql server 搜索数据库,sql-server,Sql Server,我正在使用SQL Server 2000,希望编写一个简单的查询,以返回defs_equipmentpropertytable中不包含equipmentpropertyid号大于905的所有数据库的名称。我们有一百个或更多的活动数据库,它们都包含相同的表。不幸的是,defs_equipmentpropertytable在大多数数据库中都是最新的,但并非所有数据库都是最新的。我需要弄清楚哪些数据库需要更新特定的表。我们有一个工具,将搜索所有的数据库,我只需要正确的语法查询 有人能帮忙吗 谢谢。有人

我正在使用SQL Server 2000,希望编写一个简单的查询,以返回defs_equipmentpropertytable中不包含equipmentpropertyid号大于905的所有数据库的名称。我们有一百个或更多的活动数据库,它们都包含相同的表。不幸的是,defs_equipmentpropertytable在大多数数据库中都是最新的,但并非所有数据库都是最新的。我需要弄清楚哪些数据库需要更新特定的表。我们有一个工具,将搜索所有的数据库,我只需要正确的语法查询

有人能帮忙吗


谢谢。

有人可能会提到未记录的存储过程sp_msforeachdb,它可以做到这一点。但是,我建议您自己编写一个查询来生成SQL,然后运行它。像这样的方法应该会奏效:

declare @query nvarchar(400);
set @query = N'
select top 1 ''Found in '' + %%% as r
from $$$.dbo.defs_equipmentpropertytable
where equipmentpropertyid > 905
go
';
select replace(replace(@query,'$$$',quotename(name)),'%%%',quotename(name,''''))
from master..sysdatabases
运行此命令,然后将结果复制回查询窗口并执行结果。您还可以过滤掉任何不需要的数据库

我强烈建议使用它而不是sp_MSforeachdb,因为这让您有机会在运行SQL之前检查它,这是避免SQL注入的好习惯,更不用说坏错误了

我把它倒过来了。这行吗


如果该工具为您进行所有搜索,那么该查询应该满足您的需要;如果MAX propertyid用于提供最新数据库的列表,则它将返回数据库名称。我需要那些不是最新的数据库…那些我需要修复的。我有一个工具可以搜索所有数据库,我只需要正确的语法…例如:如果不存在,请从defs_equipmentpropertytable中选择*其中equipmentpropertyid>905。。。这不管用,我想我倒过来了。第二个查询是否创建了要运行的正确查询?
declare @query nvarchar(400);
set @query = N'
if not exists (
  select *
  from $$$.dbo.defs_equipmentpropertytable
  where equipmentpropertyid > 905
) select %%% + 'is not up to date' as r
go
';
select replace(replace(@query,'$$$',quotename(name)),'%%%',quotename(name,''''))
from master..sysdatabases
SELECT DB_NAME() as DatabaseName
FROM dbo.defs_equipmentpropertytable
HAVING MAX(equipmentpropertyid) <= 905