我想查询SQL Server中的多个数据库,所以我想我可以创建一个名为@DBNAME的变量并将其传递给查询,如下所示(但它不起作用)。
这将在一个循环中,其中DBNAME作为dbid的计数逐步执行..我的计数工作,它打印出@DBNAME作为所有生产数据库..但我不能让它跨多个数据库查询!
IF EXISTS(从@ DBNAME.INFORMATION_SCHEMA.TABLES中选择1
WHERE TABLE_TYPE ='BASE TABLE'和TABLE_NAME ='DataArea') SELECT'GETIN'AS res ELSE SELECT'aaargh'AS res --SELECT *来自DataArea AS res ELSE SELECT NULL AS res;
答案 0 :(得分:6)
你可以使用动态sql这样做
declare @tablename as sysname, @dbname as sysname
select
@dbname = 'master',
@tablename = 'dbo.spt_fallback_db'
declare @script nvarchar(4000)
select @script = 'select top 10 * from ' + @dbname + '.' + @tablename
exec sp_executesql @script
根据需要替换您的数据库和表名。只是使用一个表单主文件进行测试。