数据库技巧:整理SQLServer非常实用的脚本

今天给大家分享自己在工作当中用到的SQLServer一些常用的脚本,希望能对大家有所帮助!

1、  查询数据库所有表结构

通过该脚本可以快速查找表字段,或者生成数据库设计文档、进行数据库对比。

SELECT obj.name 表名,
col.colorder AS 序号 ,
col.name AS 列名 ,
ISNULL(ep.[value], '') AS 列说明 ,
t.name AS 数据类型 ,
CASE WHEN col.isnullable = 1 THEN '1'
ELSE ''
END AS 允许空 ,
ISNULL(comm.text, '') AS 默认值,
Coalesce(epTwo.value, '') AS documentation
FROM dbo.syscolumns col
LEFT JOIN dbo.systypes t ON col.xtype = t.xusertype
inner JOIN dbo.sysobjects obj ON col.id = obj.id
AND obj.xtype = 'U'
AND obj.status >= 0
LEFT JOIN dbo.syscomments comm ON col.cdefault = comm.id
LEFT JOIN sys.extended_properties ep ON col.id = ep.major_id
AND col.colid = ep.minor_id
AND ep.name = 'MS_Description'
LEFT JOIN sys.extended_properties epTwo ON obj.id = epTwo.major_id
AND epTwo.minor_id = 0
AND epTwo.name = 'MS_Description'
WHERE obj.name in(
SELECT
ob.name 
FROM sys.objects AS ob
LEFT OUTER JOIN sys.extended_properties AS ep
ON ep.major_id = ob.object_id
AND ep.class = 1
AND ep.minor_id = 0
WHERE ObjectProperty(ob.object_id, 'IsUserTable') = 1 
)
ORDER BY obj.name ;

2、SQLServer 查询数据库各个数据表、索引文件占用的存储空间

可以快速查询数据库中表、索引占用的存储空间,找到哪些表占用了大量的存储空间,便于进行数据库优化。

CREATE PROCEDURE [dbo].[sys_viewTableSpace]
ASBEGINSET NOCOUNT ON;CREATE TABLE [dbo].#tableinfo(表名 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,记录数 [int] NULL,预留空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,使用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,索引占用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,未用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL
)insert into #tableinfo(表名, 记录数, 预留空间, 使用空间, 索引占用空间, 未用空间)
exec sp_MSforeachtable "exec sp_spaceused '?'"select * from #tableinfo
order by 记录数 descdrop table #tableinfoEND
-- 执行方法
exec sys_viewtablespace

3、清理数据库日志文件

数据库日志文件一般都会非常大,甚至占用超过几百G甚至上T,如果不需要进行一直保留数据库日志文件,可以建一个数据库作业,定时清理数据库日志文件,具体可以采用下面的脚本。

USE masterALTER DATABASE DB SET RECOVERY SIMPLE WITH NO_WAITALTER DATABASE DB SET RECOVERY SIMPLE --调整为简单模式USE DBDBCC SHRINKFILE (N'DB_log' , 2, TRUNCATEONLY) --设置压缩后的日志大小为2M,可以自行指定USE masterALTER DATABASE DB SET RECOVERY FULL WITH NO_WAITALTER DATABASE DB SET RECOVERY FULL --还原为完全模式

4、SQLServer查看锁表和解锁

工作中遇到查询的时候一直查询不出来结果,可以执行该脚本判断是否锁表,然后解锁就可以正常查询数据了。

-- 查询被锁表
select request_session_id   spid,OBJECT_NAME(resource_associated_entity_id) tableName   
from   sys.dm_tran_locks where resource_type='OBJECT';
--参数说明 spid   锁表进程 ;tableName   被锁表名
-- 解锁语句 需要拿到spid然后杀掉缩表进程
declare @spid  int 
Set @spid  = 57 --锁表进程
declare @sql varchar(1000)
set @sql='kill '+cast(@spid  as varchar)
exec(@sql)

5、SQLServer生成日期维度表

该脚本可以生成一个日期维度的数据表,通过该数据表可以解决很多报表查询问题。非常实用。

--1、创建数据表 T_Date
CREATE TABLE [dbo].[T_Date](
[the_date] [int] NOT NULL,
[date_name] [nvarchar](30) NULL,
[the_year] [int] NULL,
[year_name] [nvarchar](30) NULL,
[the_quarter] [int] NULL,
[quarter_name] [nvarchar](30) NULL,
[the_month] [int] NULL,
[month_name] [nvarchar](30) NULL,
[the_week] [int] NULL,
[week_name] [nvarchar](30) NULL,
[week_day] [int] NULL,
[week_day_name] [nvarchar](30) NULL,
CONSTRAINT [PK_T_Date] PRIMARY KEY CLUSTERED 
(
[the_date] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO-- 2、创建生成日期的存储过程
GO
/****** Object: StoredProcedure [dbo].[SP_CREATE_TIME_DIMENSION]  ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GOCREATE PROCEDURE [dbo].[SP_CREATE_TIME_DIMENSION]
@begin_date nvarchar(50)='2015-01-01' ,
@end_date nvarchar(50)='2030-12-31'
as
/*
SP_CREATE_TIME_DIMENSION: 生成时间维数据
begin_date: 开始时间
end_date:结束时间
*/
declare 
@dDate date=convert(date,@begin_date),
@v_the_date varchar(10),
@v_the_year varchar(4),
@v_the_quarter varchar(2),
@v_the_month varchar(10),
@v_the_month2 varchar(2),
@v_the_week varchar(2),
@v_the_day varchar(10),
@v_the_day2 varchar(2),
@v_week_day nvarchar(10),
@adddays int=1;
WHILE (@dDate<=convert(date,@end_date))
begin
set @v_the_date=convert(char(10),@dDate,112);--key值格式为yyyyMMdd
set @v_the_year=DATEPART("YYYY",@dDate);--年份
set @v_the_quarter=DATEPART("QQ",@dDate);--季度
set @v_the_month=DATEPART("MM",@dDate);--月份(字符型)
set @v_the_day=DATEPART("dd",@dDate);--日(字符型)
set @v_the_week=DATEPART("WW",@dDate);--年的第几周
set @v_week_day=DATEPART("DW",@dDate); --星期几
-- 插入数据
insert into T_Date(the_date,date_name,the_year,year_name,the_quarter,quarter_name,the_month,month_name,the_week,week_name,week_day,week_day_name)
values(
@v_the_date,
convert(nvarchar(10),@v_the_year)+'年'+convert(nvarchar(10),@v_the_month)+'月'+convert(nvarchar(10),@v_the_day)+'日',
@v_the_year,
convert(nvarchar(10),@v_the_year)+'年',
@v_the_quarter,
convert(nvarchar(10),@v_the_year)+'年'+convert(nvarchar(10),@v_the_quarter)+'季度',
case when @v_the_month>=10 then 
convert(int,(convert(nvarchar(10),@v_the_year)+convert(nvarchar(10),@v_the_month)))
else convert(int,convert(nvarchar(10),@v_the_year)+'0'+convert(nvarchar(10),@v_the_month)) end,
convert(nvarchar(10),@v_the_year)+'年'+convert(nvarchar(10),@v_the_month)+'月',
@v_the_week
,'第'+convert(nvarchar(10),@v_the_week)+'周',
@v_week_day,
case @v_week_day-1 
when 1 then '星期一' 
when 2 then '星期二' 
when 3 then '星期三'
when 4 then '星期四' 
when 5 then '星期五' 
when 6 then '星期六'
when 0 then '星期日'
else '' end
);
set @dDate=dateadd(day,@adddays,@dDate);
continue
if @dDate=dateadd(day,-1,convert(date,@end_date))
break
end-- 3、执行存储过程生成数据
GO
DECLARE @return_value int
EXEC    @return_value = [dbo].[SP_CREATE_TIME_DIMENSION]
SELECT    'Return Value' = @return_value
GO

6、设置SQLServer 新加用户密码不过期

新增数据库用户要记得设置用户密码不过期

-- SQLSERVER设置新加数据库用户密码不过期 
- myuser 数据库用户名
-- 88888888 数据库密码USE MasterGOALTER LOGIN [myuser] WITH PASSWORD = '88888888'GOALTER LOGIN [myuser] WITHCHECK_POLICY = OFF,CHECK_EXPIRATION = OFF;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运维:Centos8安装supervisor守护Nginx进程笔记

目录 supervisor介绍 1.1 简介 1.2 工作原理 1.3 运行环境 1.4 supervisor 组成 2、

字节流与字符流的区别详解

字节流与字符流的区别详解 先来看一下流的概念&#xff1a; 在程序中所有的数据都是以流的方式进行传输或保存的&#xff0c;程序需要数据的时候要使用输入流读取数据&#xff0c;而当程序需要将一些数据保存起来的时候&#xff0c;就要使用输出流完成。 程序中的输入输出都是以…

HTTPS与HTTP的一些区别

HTTPS与HTTP的一些区别 HTTPS协议需要到CA申请证书&#xff0c;一般免费证书很少&#xff0c;需要交费。HTTP协议运行在TCP之上&#xff0c;所有传输的内容都是明文&#xff0c;HTTPS运行在SSL/TLS之上&#xff0c;SSL/TLS运行在TCP之上&#xff0c;所有传输的内容都经过加密的…

Docker知识:数据卷技术介绍

目录 Docker数据管理 1.2 Docker数据持久化 1.2 容器中数据管理的方式 2、数据卷的介绍 2.1 数据卷作用 2.2 卷的概念 2.3 数据卷的特点 3、Docker数据卷常见的作用 4、操作数据卷 4.1 常用命令 4.2 挂载数据卷 今天给大家简单聊聊Docker中的数据卷知识。 Docker数据管理 大家在…

Dubbo背景和简介

Dubbo背景和简介 Dubbo开始于电商系统&#xff0c;因此在这里先从电商系统的演变讲起。 单一应用框架(ORM) 当网站流量很小时&#xff0c;只需一个应用&#xff0c;将所有功能如下单支付等都部署在一起&#xff0c;以减少部署节点和成本。 缺点&#xff1a;单一的系统架构&…

2/19 福建四校联考

1.设计图案 给你一个n*m的矩阵&#xff0c;每个格子必须填或者不能填&#xff0c;要用环和1*2的小方块填满它&#xff0c;求方案数。 比如3*2&#xff0c;每个格子都必须填 有6种填法。 n*m<300 当时一看就觉得不可做然后就放弃了..... 题解&#xff1a;有个结论&#xff…

Docker基础:容器元数据详解

目录 1、命令格式 2、用法介绍 2.1 查看IP地址 2.2 查看MAC地址 2.3 查看容器详细信息

内容提供者的概念

* 应用场景&#xff1a;把应用程序的私有数据暴露出去&#xff0c;给其他应用程序使用 * 私有数据&#xff1a; /data/data/包名/ 数据库、txt、Xml转载于:https://www.cnblogs.com/loaderman/p/6420955.html

RPC调用和HTTP调用的区别你知道吗

前言 很长时间以来都没有怎么好好搞清楚RPC&#xff08;即Remote Procedure Call&#xff0c;远程过程调用&#xff09;和HTTP调用的区别&#xff0c;不都是写一个服务然后在客户端调用么&#xff1f;这里请允许我迷之一笑~Naive&#xff01; 本文简单地介绍一下两种形式的C/…

C#实战:基于ItextSharp技术标签生成小工具

目录 1、运行主界面 2、标签生成界面 3、需要引入的依赖包 4、解决方案目录 5、主要代码 1、新建PdfUtils工具类 2、Form1.cs 窗体主要代码 IT技术分享社区 / Itext Sharp Demo GitCode 今天给大家分享小编基于ItextSharp制作的一款标签生成小工具&#xff0c;可供大家…

NPOI使用手册

出处&#xff1a;http://blog.csdn.net/pan_junbiao/article/details/39717443 NPOI使用手册 目录 1.认识NPOI 2. 使用NPOI生成xls文件 2.1 创建基本内容 2.1.1创建Workbook和Sheet 2.1.2创建DocumentSummaryInformation和SummaryInformation 2.1.3创建单元格 2.1.5创建批注 2.…

开发工具:推荐一款非常好用的SSH客户端WindTerm

目录 1、主要功能 2、安装WindTerm 3、设置与使用 3.1 设置终端字体 3.2 外观设置 3.3 配置会话 3.5 新建会话 4、软件性能 5、总结 今天给大家推荐一款基于C语言开发的支持跨平台SSH客户端WindTerm&#xff0c;感兴趣朋友可以下载试试。 1、主要功能 支持 SSH v2、T…

idea for mac 最全快捷键整理

智能提示 ⌘ -> command ⇧ -> shift ⌥ -> option ⬆ -> 上箭头 ⬇ -> 下箭头 ⌃ -> Control 编辑 快捷键说明⌘ F在当前窗口查找⌘ ⇧ F在全工程查找⌘ ⇧ ⌥ N查找类中的方法或变量F3 / ⇧ F3移动到搜索结果的下/上一匹配处⌘ R在当前窗口替换⌘…

SP和Fuction的关系

它们之间是什么关系&#xff0c;谁调用谁转载于:https://www.cnblogs.com/researcher/p/6424409.html

Java实战:指定大小分组压缩文件夹里面的文件案例

目录 一、前言 二、代码示例 新建FileModel.java 实体 Main.java 代码&#xff1a; 三、展示效果 四、最后 一、前言 今天给大家分享一个J自己写的ava实战的小案例&#xff0c;主要功能是实现指定一个文件夹&#xff0c;然后分组压缩里面的文件。其实这个案例还是有一定用…

mac系统快捷键大全详细介绍

对于使用苹果电脑的操作系统的新人来说&#xff0c;快捷键是个很麻烦的问题&#xff0c;要一个个的找到快捷键也不是很容易的问题&#xff0c;今天这篇文章就解决了到处找快捷键的麻烦。 Mac中主要有四个修饰键&#xff0c;分别是Command&#xff0c;Control&#xff0c;Optio…

JavaScript 之 动态加载JS代码或JS文件

2、动态加载JS文件 <script type"text/javascript"> function loadScript(url, callback) {var script document.createElement("script");script.type "text/javascript";if(typeof(callback) ! "undefined"){if (script.rea…

Docker实战:Docker安装nginx并配置SSL

目录 1、拉取nginx镜像 2、启动nginx容器 3、创建挂载nginx目录 4、重新启动nginx容器 5、查看目录挂载是否成功 6、在宿主目录创建ssl目录&#xff0c;将ssl证书放在宿主主机 7、修改配置宿主主机nginx增加ssl证书配置 8、重启nginx容器 今天继续给大家分享Docker实战…

W模型和瀑布模型与“V”模式开发模型有何异同?

在做软件开发时&#xff0c;程序员们肯定接触过各式各样的软件开发模型&#xff0c;例如&#xff1a;写了再改模型、瀑布模型、增量模型等。其实&#xff0c;很多开发模型是在瀑布模型基础上衍生出来的。 然而&#xff0c;了解“V”模式开发模型的程序员应该不多。“V”模式开…