手机免费建站app,建设银信用卡网站首页,男生学平面设计好就业吗,wordpress社交系统主题今天给大家分享自己在工作当中用到的SQLServer一些常用的脚本#xff0c;希望能对大家有所帮助#xff01; 1、 查询数据库所有表结构 通过该脚本可以快速查找表字段#xff0c;或者生成数据库设计文档、进行数据库对比。 SELECT obj.name 表名,
col.colorder AS 序号 ,
co… 今天给大家分享自己在工作当中用到的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_viewtablespace3、清理数据库日志文件 数据库日志文件一般都会非常大甚至占用超过几百G甚至上T如果不需要进行一直保留数据库日志文件可以建一个数据库作业定时清理数据库日志文件具体可以采用下面的脚本。 USE masterALTER DATABASE DB SET RECOVERY SIMPLE WITH NO_WAITALTER DATABASE DB SET RECOVERY SIMPLE --调整为简单模式USE DBDBCC SHRINKFILE (NDB_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_typeOBJECT;
--参数说明 spid 锁表进程 tableName 被锁表名
-- 解锁语句 需要拿到spid然后杀掉缩表进程
declare spid int
Set spid 57 --锁表进程
declare sql varchar(1000)
set sqlkill 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 dateconvert(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 int1;
WHILE (dDateconvert(date,end_date))
begin
set v_the_dateconvert(char(10),dDate,112);--key值格式为yyyyMMdd
set v_the_yearDATEPART(YYYY,dDate);--年份
set v_the_quarterDATEPART(QQ,dDate);--季度
set v_the_monthDATEPART(MM,dDate);--月份(字符型)
set v_the_dayDATEPART(dd,dDate);--日(字符型)
set v_the_weekDATEPART(WW,dDate);--年的第几周
set v_week_dayDATEPART(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_month10 then
convert(int,(convert(nvarchar(10),v_the_year)convert(nvarchar(10),v_the_month)))
else convert(int,convert(nvarchar(10),v_the_year)0convert(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 dDatedateadd(day,adddays,dDate);
continue
if dDatedateadd(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 88888888GOALTER LOGIN [myuser] WITHCHECK_POLICY OFF,CHECK_EXPIRATION OFF;