sql server怎么查询所有数据库的所有schema?

发布于 2022-09-13 00:15:58 字数 1060 浏览 20 评论 0

如图中3个dbo、guest和一个hangfire
image.png

目标是实现遍历all_db-schema-table-column-rows,all_db一直关联不进来。

尝试遍历:

DECLARE @tb_schemas TABLE
  (
   db_name VARCHAR(200),
    schemas_name VARCHAR(200)
  );
DECLARE @i INT;
DECLARE @sql VARCHAR(300);
SET @i = 1;
BEGIN
  WHILE @i <= (SELECT COUNT(*) FROM sys.databases)
  BEGIN
    SELECT @sql = ' use ' + A.name+';' + 'SELECT '+''''+A.name+''''+ ',name schemas_name FROM sys.schemas' FROM
    (
    SELECT A.name,ROW_NUMBER()OVER(order by database_id)  rn
    FROM 
    sys.databases A
    )A
    WHERE A.rn = @i
    INSERT INTO @tb_schemas EXEC(@sql);
    SET @i = @i + 1
  End
  SELECT db_name,schemas_name FROM @tb_schemas ORDER BY db_name;
END

2021/6/22 11:11
navivat prenium报错(明明已经DECLARE了):

set @i = 1
> [42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Must declare the scalar variable "@i". (137)

2021/6/22 14:29
vscode连接mssql运行以上语句不报错,原因未知

期待答案:能解决这个报错或有新的查询方法都行。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文