代码之家  ›  专栏  ›  技术社区  ›  Tono Nam

查找特定行所在的数据库

  •  0
  • Tono Nam  · 技术社区  · 11 年前

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

    无论如何,让我们说我有Db1,Db2。。。数据库。 我想知道ID为“XF4G-XF78-2156-7XH8”的发票在哪个数据库上

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

    1 回复  |  直到 11 年前
        1
  •  1
  •   Tono Nam    11 年前
    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
    

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