首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游标中的sys.databases跳过数据库

游标中的sys.databases跳过数据库
EN

Stack Overflow用户
提问于 2012-03-30 12:19:52
回答 2查看 1K关注 0票数 2

我见过一些看起来应该没问题的生产代码,80%的时间都能正常工作,但另外20%的代码似乎会在没有明显原因的情况下停止返回和迭代数据库列表:

代码语言:javascript
运行
复制
DECLARE c_UserDatabases CURSOR FOR
  SELECT Name
  FROM   Sys.Databases SD (NOLOCK)
  ORDER  BY Name

OPEN c_UserDatabases
FETCH Next FROM c_UserDatabases INTO @v_DatabaseName
WHILE @@FETCH_STATUS = 0
  BEGIN
      -- Query that takes a few minutes to run (using dynamic SQL and EXEC, etc)
      FETCH Next FROM c_UserDatabases INTO @v_DatabaseName
  END

CLOSE c_UserDatabases
DEALLOCATE c_UserDatabases 

这是在SQL Server2008 SP3上。我注意到一些文章提到,如果你不按名称排序,在某些版本上是不可靠的,但没有任何迹象表明这种失败情况。我认为我们可能处于一种罕见的情况,因为内部部分可能需要这么长时间才能运行?

我想知道有没有人看过这个。我计划将其重写为select到临时表中,并通过该临时表和游标。

EN

Stack Overflow用户

发布于 2012-03-30 13:42:26

尽管没有文档记录,但sp_MSForeachDB提供了一种对所有DB执行查询的好方法。这种方法会有帮助吗?

代码语言:javascript
运行
复制
EXEC sp_MSForeachDB '
    SELECT * FROM [?].sys.tables
'
票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9936970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档