sql-server - T-SQL : sp_depends with a cursor

标签 sql-server database tsql cursor

我的数据库中有一堆 View ,我想列出它们的依赖项。目前,我正在使用“sp_depends”存储过程来执行此操作。为了加快这个过程,我试图在遍历 View 列表的游标中使用 sp_depends 存储过程。但是,我没有任何运气,我花了很多时间来尝试“霰弹枪”修复它。以下是我到目前为止所得到的。

DECLARE @ViewNames TABLE
(
     ViewName VARCHAR(255)
)
INSERT INTO @ViewNames
select name  from [AMF_Article].sys.views

declare @tableCursor cursor,
         @viewName varchar(100);
set @tableCursor = cursor for select ViewName from @ViewNames

open @tableCursor
fetch next from @tableCursor into @viewName
while(@@fetch_status = 0)
begin

    declare @sql varchar(max)
    set @sql = 'sp_depends ''[dbo].' + @viewName + ''
    PRINT @sql
    exec @sql

 fetch next from @tableCursor into @viewName
end

我认为引用与 EXEC 调用相结合会发生一些事情。我无法让我的单引号匹配,当我这样做时,它仍然告诉我不。当我运行语句时

sp_depends '[dbo].[V_AMF_Distinct_Products]'

一切都很好,但在一个循环中,不是那么多。

非常感谢任何帮助。

最佳答案

这是一种使用 sys.views 构建动态 sql 字符串的方法。这里不需要游标。

declare @SQL nvarchar(max) = ''

select @SQL = @SQL + 'exec sp_depends ''' + QUOTENAME(name) + ''';'
from sys.views

exec sp_executesql @SQL

关于sql-server - T-SQL : sp_depends with a cursor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38404134/

相关文章:

sql - SQL SERVER 2005如果是

mysql - 我想在 mySQL 中运行我的脚本,但在我运行它时它一直显示这个!错误 1215 (HY000) 在第 18 行 : Cannot add foreign key constraint

SQL - 服务器上所有数据库的 INFORMATION_SCHEMA

ruby-on-rails - rake 数据库 :migrate returning error rake db:migrate

使用另一个表过滤一个表的 SQL 查询

sql-server - TSQL STATS_STREAM(未记录的功能)的格式是什么?它包含所有统计数据吗?

sql-server - Golang 连接到 SQL Server 错误 - "TLS Handshake failed: Cannot read handshake packet: EOF"

SQL:对连续记录进行分组

mysql - 为什么没有更多的 .NET 应用程序使用 MySQL 或允许使用 MySQL 的 DAO?

php - 如何使用数组中存储数据的where条件