SQLServer
周道
天之道损有余而补不足。人道则不然,损不足,奉有余。
展开
-
SQLServer 使用SQL语句导入数据提示内存不足
SQLServer 使用SQL语句导入数据提示内存不足处理方法1、打开window的命令窗口(最好是管理员权限)。2、执行以下语句:D:\11.sql 为文件路径,MIOT_BI 为要导入的数据库sqlcmd -i D:\11.sql -d MIOT_BI官方链接:https://docs.microsoft.com/zh-cn/sql/tools/sqlcmd-utility原创 2018-01-31 11:24:32 · 5425 阅读 · 1 评论 -
SQLServer DROP 和 TRUNCATE Table 时数据文件无变化
SQLServer 数据库 DROP Table 和 TRUNCATE Table 时数据文件大小均不会有变化。情况一收缩:如果此时收缩数据库或者收缩数据文件,数据文件大小会变化。情况二不收缩:如果再往数据库里插入数据(不管是被删除的表还是数据库里其他的表),只要新插入的数据量大小不超过删除的数据量大小,SQLServer 数据库数据文件大小不会有变化。即可以理解为 新插入的数据 写在了 被原删除...原创 2017-06-14 11:16:08 · 1752 阅读 · 0 评论 -
SQLserver数据库每月有多少天基表
涉及按数据统计,常常会按时间进行统计,而有时用户业务数据时间不是很完整或者用不到用户时间。这里建一个基表存储每月有多少天,方便查询。建表:CREATE TABLE YEAR_MONTH_DAY(YAER_MONTH VARCHAR(50), TOTALDAYS INT);填充数据:DECLARE @I INT =0WHILE @I<480BEGININSERT INTO ...原创 2017-06-08 15:36:39 · 651 阅读 · 0 评论 -
SQLServer事务、阻塞、死锁
阻塞和死锁是数据库应用的设计问题。从根本上来说,因为关系型数据库事务的原因,阻塞是必须的。阻塞和死锁产生的三大因素:连接持有锁的时间过长、锁的粒度较大、数目过多。锁产生的背景:事务。因为事务的ACID(原子性、一致性、隔离性、持久性)使得数据库在事务过程中,必须锁定要修改的资源。换句话说,阻塞是实现事务的隔离所带来的不可避免的代价。为了减少阻塞,可以从以下方面考虑:1、申请锁的互斥度。2、锁的范围...原创 2017-05-08 09:20:34 · 6139 阅读 · 1 评论 -
Lead()和Lag() 分析函数
Lead()和Lag() 是Oracle和SQL Server 都支持的分析函数。Lead() 取下几行,默认为1。Lag()取上几行,默认也为1。原创 2017-04-07 12:00:56 · 398 阅读 · 0 评论 -
SQL Server cross apply 和outer apply
cross apply 用于 将左边表中行中的值,一行一行的取出放入右边运算。左边如果未与右边匹配,不显示。outer apply 则是左边全显示。原创 2017-04-07 09:42:59 · 255 阅读 · 0 评论 -
SQLServer 日志(2012版本)
1、日志为完整日志模式,限制日志大小。 如果数据库未做过备份此时如果当前事务日志的大小大于剩余日志空间大小。则会报以下错误。 消息 9002,级别 17,状态 4,第 3 行 数据库“test”的事务日志已满,原因为“ACTIVE_TRANSACTION”。 --如果未做备份,且事务为小事务,则类似于简单日志模式,会重用日志空间。 如原创 2018-04-02 10:28:51 · 1270 阅读 · 0 评论 -
当天、三天、七天数据统计
语句一:with s as ( select cast(getdate() as date) as 'shift_date',1 as 'do_code','当天入库' as 'type' union all select cast(getdate() as date) as 'shift_date',0 as 'do_c...原创 2018-07-18 10:57:39 · 402 阅读 · 0 评论 -
SQLSERVER 删除重复的数据(没有主键,数据完全一样)。
SQLSERVER 删除重复的数据(没有主键,数据完全一样)。在Oracle中即使数据完全一样,也可以根据rowid来删除数据,SQLSERVER没有这种方法。根据表中的数据进行不同的操作:1、如果数据量不多,可以将数据去重,插入到新表中。然后删除旧表,重命名新表。 select distinct * INTO B from A; drop table A; ...原创 2018-08-13 15:18:04 · 6947 阅读 · 2 评论 -
SQLServer语句启动作业
USE msdb ;GOEXEC dbo.sp_update_job @job_name = N'作业名称', @new_name = N'作业名称', @description = N'', @enabled = 0 ;--1 启用作业 ,0 禁用作业GO转载 2018-12-28 11:06:22 · 1556 阅读 · 0 评论 -
SQLServer 杂记
1、LINQ:Language-Integrated Query(语言集成查询)例子: var m = from n in arr where n<50 orderby n select n;2、Hierarchyid:SQLServer 2008 中提出的新的数据类型,用于表现树层次的数据结构。存储的值形式为:'/1/1/1/'。3、SQLServer 2008 之后的版本可以直接操作...原创 2017-06-20 10:08:51 · 257 阅读 · 0 评论 -
SQL Server 索引
聚集索引创建的时机:1、明确的创建语句。2、表中没有聚集索引,在创建主键的时候,会在主键所在的列(单一列、组合列)创建唯一索引。此时如果没有指定索引类型,则默认的索引类型为聚集索引即唯一聚集索引。非聚集索引创建的时机:1、明确的创建语句。2、表中添加唯一约束的时候,会在约束的列上(单一列、组合列)创建唯一索引。此时如果没有指定索引类型,则默认的索引类型为非聚集索引即唯一非聚集索引。在表中有聚集索引...原创 2017-07-19 11:26:06 · 278 阅读 · 0 评论 -
SQLServer定期重建索引的作业
IF NOT exists(select 1 from msdb.dbo.sysjobs_view where name = 'BI_index_rebuild_job')BEGINBEGIN TRANSACTIONDECLARE @ReturnCode INTSELECT @ReturnCode = 0IF NOT EXISTS (SELECT name FROM msdb.dbo.syscat...原创 2018-02-22 21:43:08 · 1737 阅读 · 0 评论 -
SQLServer 索引重建存储过程
SQLServer建议索引碎片在5%--30%之间用重新组织索引(REORGANIZE),超过30%的重新生成索引(REBUILD)生成索引可以在线也可以离线(ONLINE = OFF):离线索引不能访问。USE [zws]GO/****** Object: StoredProcedure [dbo].[p_index_rebuild] Script Date: 2018/1/9 11:0...原创 2018-01-08 09:10:30 · 1545 阅读 · 0 评论 -
SQLServer 语句优化
1、表按查询用到的最多的条件建立聚集索引(即聚集索引表)。2、查询使用到非聚集索引的地方,最好能够索引覆盖。3、大表按查询用到的最多的条件建立分区,分区最好在不同的磁盘上,以分散IO;分区后建立聚集索引。4、在表连接条件上建立索引。5、索引列不要涉及到运算。6、过滤条件提前过滤,有时候放在 where 后的条件 可以放在 on 后。查看SQL语句执行计划1、在Microsoft SQL Serve...原创 2017-12-29 11:00:22 · 470 阅读 · 0 评论 -
SQLServer DAC连接
服务器-->方面连接:文件-->新建-->数据库引擎查询/使用当前连接的查询原创 2017-12-13 17:49:30 · 1426 阅读 · 0 评论 -
SQLServer 分区表
步骤:分区函数-->分区方案-->表/索引 on 分区方案(分区列)分区函数:指定分区方法分区方案:绑定分区函数以及文件组可创建表时直接分区,亦可将已有表进行分区。对现有表分区时,会将表中的数据按分区函数,转移到相应的分区。USE [zws]GOBEGIN TRANSACTIONCREATE PARTITION FUNCTION [partition_function_b0](int/...原创 2017-11-02 10:45:36 · 642 阅读 · 0 评论 -
SQLServer 测试
1、SQLServer 数据库不做其他操作的情况下,数据库表有聚集索引、非聚集索引各一个。插入500万数据要5分钟。(insert into a select * from a)插入1000万条数据要 12分27秒。(insert into a select * from a)插入2000万条数据要 21分54秒。(insert into a select * from a) --插入数据过...原创 2017-10-31 14:15:35 · 1217 阅读 · 0 评论 -
SQLServer 提示
表连接提示:1、select aa.*,a.*from dbo.a inner hash/loop/merge join dbo.aa on a.aa=aa.a1;2、select aa.*,a.*from dbo.a inner remote join dbo.aa on a.aa=aa.a1; --指定联接操作在右表处执行。只可用于 INNER JOIN 操作。查询提示:1、selec...原创 2017-10-23 09:01:41 · 748 阅读 · 0 评论 -
SQLServer 语句
1、动态执行语句:set @sql='select top 1 1 from '+@miot_db+'.dbo.syscolumns where id=object_id(''dbo.aa'') and name =''a''';SET @Sql = 'SELECT * FROM OPENQUERY('+@dblink+', ''' + REPLACE(@Sql, '''', '''''') + ...原创 2017-10-12 16:53:53 · 448 阅读 · 0 评论 -
SQLServer 数据库附加后为只读
原数据文件放在了C盘,数据增长一段时候后,导致C盘空间耗尽。现将数据文件从C盘转移到D盘。步骤:数据库-->要转移的数据库-->任务-->分离-->删除连接-->确定。将数据文件拷贝到D盘。附加数据文件:数据库-->附加-->选择D盘的数据文件(修改日志文件路径)-->确定。此时数据库可能会出现只读的现象或者提示附加报错。解决方法:方法1、在分离附加...原创 2017-08-08 14:12:38 · 2626 阅读 · 0 评论 -
SQLServer 系统资源等待
SELECT s.session_id,s.status,s.login_time,s.host_name,s.program_name,s.host_process_id,s.client_version,s.client_interface_name,s.login_name,s.last_request_start_time,s.last_request_end_time,c.connect...原创 2017-08-01 15:35:55 · 2045 阅读 · 0 评论 -
SQLServer 页中数据行存储格式解析
DBCC TRACEON(3604)DBCC PAGE(ZWS,1,179,1)30 00 0800 7b000000 04 0004 0300 1800 1800 1c00 4142434445 43434343状态位A:0X30(十六进制)=110000(二进制)==>0011 0000==>bit7bit6bit5bit4 bit3bi...原创 2017-07-31 16:32:55 · 961 阅读 · 0 评论 -
SQLServer 常用命令
1、dbcc showcontig(aaaa) WITH ALL_INDEXES; --查看表碎片以及所占页数。2、dbcc traceon(3604);godbcc log(zws,3) --查看日志godbcc traceoff(3604);go3、sp_spaceuseddbcc showfilestats -- 查看文件大小dbcc sqlperf(logspace...原创 2017-07-29 14:32:14 · 430 阅读 · 0 评论 -
SQLServer 表 索引 在页中的存储
select * from sys.objects a where a.object_id=OBJECT_ID('aaaa');select * from sys.partitions b where b.object_id=OBJECT_ID('aaaa'); --index_id=1为聚集索引 index_id=0为堆表 index_id>1为非聚集索引select * from sy...原创 2017-07-29 10:38:00 · 575 阅读 · 0 评论