查找特定行的数据库

时间:2014-02-26 05:31:24

标签: sql sql-server

我有多个具有相同架构的数据库。所有数据库都有一个名为Invoices的表。该表的ID是GUID,因此没有重复项。

无论如何我可以说我有Db1,Db2,... Dbx。 我想知道ID =“XF4G-XF78-2156-7XH8”的发票是什么数据库

如果找到包含该发票的数据库,如何执行foreach语句并退出循环?

1 个答案:

答案 0 :(得分:1)

DECLARE @sql NVARCHAR(2000)
DECLARE @lookup NVARCHAR(20) = 'XF4G-XF78-2156-7XH8'

SET @sql = 'IF OBJECT_ID(''[?].dbo.Invoices'') IS NOT NULL SELECT ''?'' FROM [?].dbo.Invoices WHERE ID=''' + @Lookup + ''''

EXEC dbo.sp_MsForEachDb @sql

怎么样? Dbo是假定的所有者。如果这是错误的,请更改为正确的所有者。

修改

感谢您的回答,我做得很好!

DECLARE @sql NVARCHAR(2000)

SET @sql = '
IF OBJECT_ID(''[?].dbo.Invoices'') IS NOT NULL
begin
    declare @query NVARCHAR(255)
    Select @query = (Select [Id] from [?].dbo.Invoices where [Id] = 'XF4G-XF78-2156-7XH8'') 
    IF @query IS NOT NULL
    begin
          print ''Database = '' + ''?''         
    end
end
'
EXEC dbo.sp_MsForEachDb @sql

现在我知道发票属于哪个数据库了!