Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查找特定行所在的数据库_Sql_Sql Server - Fatal编程技术网

Sql 查找特定行所在的数据库

Sql 查找特定行所在的数据库,sql,sql-server,Sql,Sql Server,我有多个具有相同模式的数据库。所有数据库都有一个名为发票的表。该表的Id是GUID,因此不存在重复项 不管怎样,假设我有Db1、Db2。。。Dbx我想知道ID为=“XF4G-XF78-2156-7XH8”的发票在哪个数据库上 找到包含该发票的数据库后,如何执行foreach语句并退出循环 DECLARE @sql NVARCHAR(2000) DECLARE @lookup NVARCHAR(20) = 'XF4G-XF78-2156-7XH8' SET @sql = 'IF OBJECT_I

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

不管怎样,假设我有Db1、Db2。。。Dbx我想知道ID为=“XF4G-XF78-2156-7XH8”的发票在哪个数据库上

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

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

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

您需要一些脚本语言来实现这一点-bash、php、powershellRDBMS供应商和版本?这是可以与MySQL…+1感谢它的工作非常好。但是一旦我找到了记录,我如何从哪个数据库知道它是什么?