标签: sp-msforeachdb

如何在同一个查询中同时使用 sp_msforeachtable 和 sp_msforeachdb?

有什么方法可以引用在“sp_msforeachdb”循环内运行的“sp_MSforeachtable”循环内的表?

例如,在以下查询中,'?' 总是引用数据库:

DECLARE @cmd VARCHAR(8000);

SET @cmd = 'USE ?; EXEC sp_MSforeachtable @command1="select db_name = DB_NAME(), db_foreach = ''?'', tb_foreach = ''?'' "'

EXEC sp_msforeachdb @command1 =@cmd
Run Code Online (Sandbox Code Playgroud)

导致:

 db_name        db_forearch    tb_foreach
 ServerMonitor  master         master
Run Code Online (Sandbox Code Playgroud)

我想要一些类似的东西:

 db_name        db_forearch    tb_foreach
 ServerMonitor  master         <TABLE_NAME>
Run Code Online (Sandbox Code Playgroud)

我应该改变什么?


解决了。按照肖恩的建议,我使用了我的 ow 光标。但是 Ben Thul 建议的 @replacechar 解决方案正是我正在寻找的。

DECLARE @cmd VARCHAR(8000);

SET @cmd = 'USE ^; EXEC sp_MSforeachtable @command1="select db_name = DB_NAME(), db_foreach = ''^'', tb_foreach = ''?'' "'

EXEC sp_msforeachdb @command1 =@cmd, @replacechar = '^'
Run Code Online (Sandbox Code Playgroud)

sql-server sp-msforeachdb sql-server-2008 sp-msforeachtable

5
推荐指数
1
解决办法
3846
查看次数

使用隐藏的存储过程

我试图使用以下存储过程从服务器获取数据库.但是,我只想要一个月前创建的数据库.我需要做些什么来完成这项工作?

这是代码:

sp_msforeachdb 'IF ''?'' like ''z%'' 
BEGIN
  print ''?''
END'
Run Code Online (Sandbox Code Playgroud)

我只想要在某个月创建的以Z开头的数据库.

sql t-sql sql-server stored-procedures sp-msforeachdb

1
推荐指数
1
解决办法
655
查看次数

如何在sp_MSforeachdb中指定TABLE_SCHEMA名称以使数据库脱机

我需要搜索具有特定前缀的某些数据库.找到这些数据库后,我需要检查某个模式是否存在以及是否存在 - 使数据库脱机.我一直在尝试在Google上找到的各种建议,但没有任何效果.我有一个错误,我无法通过.错误是'XYZ'不是公认的选项.如果我分离出代码它运行正常但是当我添加sp_MSforeachdb时,错误返回.

EXEC sp_msforeachdb 'IF ''?'' LIKE ''abc_%''
  BEGIN
      IF (NOT EXISTS  (SELECT *
               FROM INFORMATION_SCHEMA.TABLES 
               WHERE TABLE_SCHEMA = 'XYZ'          
                               BEGIN
                               ALTER DATABASE [abc_xxxxxxxxx] SET OFFLINE WITH
                               ROLLBACK IMMEDIATE             
                               END'  
Run Code Online (Sandbox Code Playgroud)

这段代码工作正常:

SELECT *
 FROM INFORMATION_SCHEMA.TABLES 
 WHERE TABLE_SCHEMA = 'XYZ'
Run Code Online (Sandbox Code Playgroud)

sql-server sp-msforeachdb

0
推荐指数
1
解决办法
5613
查看次数