Skip to content
Menu
莱风 莱风
  • 序章
莱风 莱风

SQL Server

Posted on 2020/05/122021/12/10 by zhou

-- 按关键字搜索所有表和字段
declare @str varchar(100)
set @str='keyword'  --要搜索的字符串

declare @s varchar(8000)
declare tb cursor local for
    select 'if exists(select 1 from ['+b.name+'] where ['+a.name+'] like ''%'+@str+'%'')
        print '' ['+b.name+'].['+a.name+']'''
    from syscolumns a join sysobjects b on a.id=b.id
    where b.xtype='U' and a.status>=0
        and a.xusertype in(175,239,231,167)
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
    exec(@s)
    fetch next from tb into @s
end
close tb
deallocate tb
-- 查询某个表的外键
select object_name(B.referenced_object_id),
a.name as 约束名,
object_name(b.parent_object_id) as 外键表,
d.name as 外键列,
object_name(b.referenced_object_id) as 主健表,
c.name as 主键列
from sys.foreign_keys A
inner join sys.foreign_key_columns B on A.object_id=b.constraint_object_id
inner join sys.columns C on B.parent_object_id=C.object_id and B.parent_column_id=C.column_id
inner join sys.columns D on B.referenced_object_id=d.object_id and B.referenced_column_id=D.column_id
where object_name(B.referenced_object_id)='Tb_HSPR_Fees';
-- 查询所有表的大小

SELECT
t.NAME AS TableName,
s.Name AS SchemaName,
p.rows AS RowCounts,
SUM(a.total_pages) * 8 AS TotalSpaceKB,
CAST(ROUND(((SUM(a.total_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS TotalSpaceMB,
SUM(a.used_pages) * 8 AS UsedSpaceKB,
CAST(ROUND(((SUM(a.used_pages) * 8) / 1024.00), 2) AS NUMERIC(36, 2)) AS UsedSpaceMB,
(SUM(a.total_pages) - SUM(a.used_pages)) * 8 AS UnusedSpaceKB,
CAST(ROUND(((SUM(a.total_pages) - SUM(a.used_pages)) * 8) / 1024.00, 2) AS NUMERIC(36, 2)) AS UnusedSpaceMB
FROM
sys.tables t
INNER JOIN
sys.indexes i ON t.OBJECT_ID = i.object_id
INNER JOIN
sys.partitions p ON i.object_id = p.OBJECT_ID AND i.index_id = p.index_id
INNER JOIN
sys.allocation_units a ON p.partition_id = a.container_id
LEFT OUTER JOIN
sys.schemas s ON t.schema_id = s.schema_id
WHERE
t.NAME NOT LIKE 'dt%'
AND t.is_ms_shipped = 0
AND i.OBJECT_ID > 255
GROUP BY
t.Name, s.Name, p.Rows
ORDER BY
t.Name

--或者
create table #Data(name varchar(100),row varchar(100),reserved varchar(100),data varchar(100),index_size varchar(100),unused varchar(100)) 
 
declare @name varchar(100) 
declare cur cursor  for 
    select name from sysobjects where xtype='u' order by name 
open cur 
fetch next from cur into @name 
while @@fetch_status=0 
begin 
    insert into #data 
    exec sp_spaceused   @name 
    print @name 
 
    fetch next from cur into @name 
end 
close cur 
deallocate cur 
 
create table #DataNew(name varchar(100),row int,reserved int,data int,index_size int,unused int) 
 
insert into #dataNew 
select name,convert(int,row) as row,convert(int,replace(reserved,'KB','')) as reserved,convert(int,replace(data,'KB','')) as data, 
convert(int,replace(index_size,'KB','')) as index_size,convert(int,replace(unused,'KB','')) as unused from #data  
 
select * from #dataNew order by data desc


--刷新所有视图
alter PROCEDURE sp_refallview
AS

--刷新所有视图
DECLARE @ViewName VARCHAR(MAX);
DECLARE @i INT;
SET @i = 0;
DECLARE #_cursor CURSOR
FOR
    SELECT  name
    FROM    sysobjects
    WHERE   type = 'V';

OPEN #_cursor;

FETCH NEXT FROM #_cursor INTO @ViewName;

WHILE @@fetch_status = 0
    BEGIN
  begin try
        PRINT '成功刷新视图: ' + @ViewName; 
        EXEC sp_refreshview @ViewName;  
        SET @i = @i + 1; 
     end try
  begin catch
  print ERROR_MESSAGE()
  end catch
        FETCH NEXT FROM #_cursor INTO @ViewName;
   
    END;

CLOSE #_cursor;
DEALLOCATE #_cursor;
PRINT '刷新视图完成';
PRINT '共成功刷新' + CONVERT(VARCHAR(10), @i) + '个视图';

--开启xp_cmdshell
EXEC sp_configure 'show advanced options', 1
GO
-- 重新配置
RECONFIGURE
GO
-- 启用xp_cmdshell
EXEC sp_configure 'xp_cmdshell', 1
GO
--重新配置
RECONFIGURE
GO


--开启Ole Automation Procedures
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

--查看各磁盘剩余空间
Exec master.dbo.xp_fixeddrives 

--重启SQL server服务
 declare @o int,@f int,@t int,@ret int
  exec sp_oacreate 'scripting.filesystemobject',@o out
  exec sp_oamethod @o,'createtextfile',@f out,'c:\restart.bat',1
  exec @ret=sp_oamethod @f,'writeline',NULL,'net stop mssqlserver'
  exec @ret=sp_oamethod @f,'writeline',NULL,'net start mssqlserver'
  --执行重启脚本
  exec master..xp_cmdshell 'c:\restart.bat'

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

5 + 0 = ?

近期文章

  • redhat Linux centos7 安装或卸载官方MySQL8
  • WordPress文章游客评论时添加验证码
  • 宝塔面板MySQL设置单数据库主从双向同步
  • wordpress修改底部版权信息删除RSS订阅按钮
  • centos7安装sql server 2022

分类

  • docker (4)
  • Linux (2)
  • MySQL (1)
  • sql (8)
  • Windows (5)
  • WordPress (5)
  • 未分类 (11)
  • 飞跃长城 (5)

近期评论

    其他操作

    • 登录
    ©2025 莱风