• sp_MSforeachdb&sp_MSforeachtable&sp_MSforeachobject&查看某个对象的依赖对象


    --查看某个对象的依赖对象
    EXEC sp_MSforeachdb 'use ? ; 
    IF EXISTS(SELECT top 1 1 FROM sys.syscomments WHERE text LIKE ''%test%'')
    SELECT ''?'' as dbname,object_name(id) as object FROM sys.syscomments 
    WHERE text LIKE ''%test%'''
    
    
    --统计数据库里每个表的详细情况
    exec sp_MSforeachtable 'sp_spaceused ''?''' 
    --获得每个表的记录数和容量
    exec sp_MSforeachtable 'select ''?''','?', 'sp_spaceused ''?''', 'SELECT count(*) FROM ? ' 
    --获得所有的数据库的存储空间
    exec sp_MSforeachdb  'select  ''?''','?','sp_spaceused '
    
    --更新PUBS数据库中已t开头的所有表的统计
    exec sp_MSforeachtable
           'print ''*'' update statistics * ',
           '*',
           null,
           null,
           ' and o.name like ''t%''',
           'print ''Updating Statistics.....''',
           'print ''Complete Update Statistics!''' 
    ----检查所有的数据库
    exec sp_MSforeachdb  'print ''?'' DBCC CHECKDB (?)'
    --删除当前数据库所有表中的数据
    --exec sp_MSforeachtable 'Delete from ?'
    --exec sp_MSforeachtable 'Truncate Table ?'
    --更新Table1/Table2中note列为NULL的值
    exec sp_MSforeachtable @command1='Update ? Set note='''' Where note is null', @whereand=' AND o.name in (''Table1'',''Table2'') '
    
    exec sp_MSforeachObject 4,'sp_helptext ''?'''
    exec sp_MSforeachObject 1,'sp_changeobjectowner ''?'', ''dbo'''  --当然这个可以应用sp_MSforeachtable 来完成
    
    
    /*
    Create proc sp_MSforeachdb
        @command1 nvarchar(2000), 
        @replacechar nchar(1) = N'?', 
        @command2 nvarchar(2000) = null, 
        @command3 nvarchar(2000) = null,
        @precommand nvarchar(2000) = null, 
        @postcommand nvarchar(2000) = null
    as
    */
    
    /*
    create proc sp_MSforeachtable
        @command1 nvarchar(2000),             --第一条运行的T-SQL
        @replacechar nchar(1) = N'?',          --指定的占位符
        @command2 nvarchar(2000) = null,      --第二条运行的T-SQL   
        @command3 nvarchar(2000) = null,      --第三条运行的T-SQL
        @whereand nvarchar(2000) = null,      --表的选择条件
        @precommand nvarchar(2000) = null,    --在表前执行的指令
        @postcommand nvarchar(2000) = null    --在表后执行的指令
    as
    
    */
    View Code

     以上有关sp_MSforeachdb和sp_MSforeachtable都是sqlserver自带的,以上脚本中只是为了方便执行时添加对应参数,只是将参数列表列出,如果有想看这两个procedure详细脚本,大家可以sp_helptext一下就可以看到了

    sp_MSforeachObject不是sqlserver自带的,需要自己创建上去。

    具体脚本可以从以下链接中获取,本文也基本是参考以下链接

    --http://www.cnblogs.com/piaoqingsong/archive/2007/06/12/780290.html

    以上是自己学习过程的整理,如有任何问题希望大家能够留言跟我一起讨论

  • 相关阅读:
    C# 开发(创蓝253)手机短信验证码接口
    33条C#、.Net经典面试题目及答案
    请用一句sql语句取出各科的平均成绩,显示字段,科目,平均成绩
    写出一条Sql语句:取出表A中第31到第40记录(SQLServer,以自动增长的ID作为主键,注意:ID可能不是连续的。
    SQL的四种连接-左外连接、右外连接、内连接、全连接
    C# 获取mp3文件的歌曲时间长度
    欧拉公式
    linux环境java入门
    C内存分配
    机器学习网址归纳
  • 原文地址:https://www.cnblogs.com/shihuai355/p/3966738.html
Copyright © 2020-2023  润新知