MSSQL
朝闻道-夕死可矣
朝闻道,夕死可矣!
展开
-
MS Sqlserver执行计划理解-转
要站在巨人的肩上,哈!要理解执行计划,怎么也得先理解,那各种各样的名词吧。鉴于自己还不是很了解。本文打算作为只写懂的,不懂的懂了才写。 在开头要先说明,第一次看执行计划要注意,SQL Server的执行计划是从右向左看的。 名词解析: 扫描:逐行遍历数据。 先建立一张表,并给大家看看大概是什么样子的。 CREATE TABLE Person( I...转载 2020-04-03 09:28:56 · 200 阅读 · 0 评论 -
Sqlserver命令SQLCMD备份恢复数据库
1,备份,创建脚本bak.bat,内容sqlcmd -i "f:\dbbak\bak.sql"脚本调用恢复的语句文本:connect .backup database db1 to disk = 'f:\dbbak\db1.bak' with initgo说明:init代表覆盖之前的文件,如果noinit代表append to the most recent backup2,还原,创建还原脚本...原创 2017-05-12 15:34:43 · 10004 阅读 · 0 评论 -
Mssql 查看文件路径
-- 查看所有库的文件select name,dbid,filename from master.dbo.sysdatabases order by filename; -- 查看具体某个库的use dbname;select * from [sysfiles];原创 2017-04-10 13:58:50 · 1643 阅读 · 0 评论 -
mssql查看表记录
SELECT a.name, b.rowsFROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.idWHERE (a.type = 'u') AND (b.indid IN (0, 1))ORDER BY b.rows DESC库占用空间大小:select ...原创 2017-04-07 14:21:57 · 974 阅读 · 0 评论 -
MS SQL SERVER 中merge join合并连接介绍(转)
1概述Merge join 合并连接。两个集合进行merge join,需要有一个等值的条件,然后需要两个已排序好的集合。2 one-to-many与many-to-many2.1 One-to-many当参与merge join的两个集合中,其中一个集合在等值条件上是具有唯一性(如SELECT * FROM T1 INNER JOIN T2 ON T1.A=T2.B,如果T1转载 2017-03-01 16:17:35 · 3172 阅读 · 0 评论 -
MSSQL 查看表结构
SELECT CASE WHEN col.colorder = 1 THEN obj.name ELSE '' END AS 表名, col.colorder AS 序号, col.name AS 列名, t.name AS 数据类型,原创 2016-03-07 11:36:02 · 2018 阅读 · 0 评论 -
sqlserver 2008 数据库 可疑
原因:在进行些不正常操作如数据库在读写时而无故停止数据库,从而导致Sql Server 数据库不正常中断,当再次打开数据库时会发现某些数据库会被标记为“可疑”(suspect)解决:1、修改数据库为紧急模式ALTER DATABASE SSDB SET EMERGENCY2、使数据库变为单用户模式ALTER DATABASE SSDB SET SINGLE_原创 2017-02-16 14:39:26 · 7508 阅读 · 1 评论 -
mssql数据库单用户修改为多用户访问
-- 其中db1是要修改的数据库USE master;GODECLARE @SQL VARCHAR(MAX);SET @SQL=''SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID)FROM master..sysprocessesWHERE dbid=DB_ID('db1');EXEC(@SQL);GOALTER原创 2016-11-23 16:34:26 · 1790 阅读 · 0 评论 -
sqlserver数据库一直显示正在还原
restore database XXX with recovery原创 2016-08-26 18:26:34 · 4154 阅读 · 0 评论 -
sqlserver 审核
-- 创建测试库use mastergocreate database prodgouse prodgocreate table table1(ID int primary key ,name varchar(20),weight numeric(10,2));insert into table1 values(1,'union',70.2),(3,'mobil',75.1)go原创 2016-09-03 12:17:07 · 609 阅读 · 0 评论 -
mssql锁表解除
-- 查看锁状态select spid, blocked, loginame, last_batch, status, cmd, hostname, program_name from sys.sysprocesses where spid in (select blocked from s...原创 2016-07-27 15:51:49 · 1310 阅读 · 0 评论 -
Mssql全局临时表--永久存在
全局临时表的生命周期在会话终止时候将销毁。在存储过程中创建的全局临时表,超出存储过程范围时,并不会销毁,直到创建会话终止。在某些情况下,需要创建一个永久存在的全局临时表,这个时候需要一个不属于任何会话的全局临时表。这样可以创建一个特殊的存储过程-存在于master中,并使用startup选项标记该存储过程,sqlserver数据库在每次启动时候调用启动过程startup procedure原创 2017-04-10 15:16:00 · 2193 阅读 · 0 评论 -
sqlserver job使用
-- job创建,使用agent导出的DECLARE @jobId BINARY(16)EXEC @ReturnCode = msdb.dbo.sp_add_job @job_name=N'J_STAT', @enabled=1, @notify_level_eventlog=0, @notify_level_email=0,原创 2017-03-27 14:53:12 · 1192 阅读 · 0 评论 -
SQL Server数据库体系结构
目录服务器结构内存结构主要进程(线程)SQL Server系统数据库服务器结构SQL Server服务器可以看成是由实例及数据库构成。实例包括SQL Server占用的内存及后台线程。与Oracle显著不同的是,SQL Server服务器的数据库是多个,其中包括5个系统数据库及若干个用户数据库(其中的resource数据库存储系统数据,对用户不可见)。每个数据库包...转载 2019-03-16 20:53:45 · 868 阅读 · 0 评论 -
Sqlserver 创建基于时间的表分区简单用法
环境:select @@versionMicrosoft SQL Server 2017 (RTM-CU13) (KB4466404) - 14.0.3048.4 (X64) Nov 30 2018 12:57:58 Copyright (C) 2017 Microsoft Corporation Developer Edition (64-bit) on Lin...原创 2019-02-21 15:02:52 · 2792 阅读 · 0 评论 -
sqlserver 触发器监控表记录修改
-- 建测试表create table sto(id int not null, -- 主键字段 de datetime -- 被跟踪的字段 constraint pk_sto primary key(id))-- 建日志表create table log_sto(logid int not null identity(1,1), -- 日志序号(日志主键转载 2018-01-31 16:24:34 · 6310 阅读 · 1 评论 -
SQL Server单用户模式强制改为多用户模式
USE master; GO DECLARE @SQL VARCHAR(MAX); SET @SQL='' SELECT @SQL=@SQL+'; KILL '+RTRIM(SPID) FROM master..sysprocesses WHERE dbid=DB_ID('库名'); EXEC(@SQL); GO ALTER DATABASE 库名 SET MULTI_USE原创 2017-11-10 15:13:05 · 9609 阅读 · 2 评论 -
mssql查询表&过程等
-- 记录下,按照表的记录数倒叙SELECT a.name, b.rowsFROM sysobjects AS a INNER JOIN sysindexes AS b ON a.id = b.idWHERE (a.type = 'u') AND (b.indid IN (0, 1))ORDER BY b.rows DESC原创 2016-07-04 18:54:42 · 363 阅读 · 0 评论 -
sqlserver简单的创建用户授权
-- 创建登陆,无密码策略,密码不过期CREATE LOGIN [test_l] WITH PASSWORD='pwd1213',DEFAULT_DATABASE=[db_1], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;GO USE db_1;GO-- 创建用户CREATE USER [test_u] FROM LOGIN [test_l];GO原创 2017-08-05 18:03:45 · 392 阅读 · 2 评论 -
sql server创建 DBLINK
前提:sqlserver服务器需要安装oracle客户端程序一,步骤:--创建oracle连接EXEC master.dbo.sp_addlinkedserver @server = N'SERVER_LINKNAME', @srvproduct=N'ORACLE', @provider=N'OraOLEDB.Oracle', @datasrc=N'dblink' -- 连接服务名--创建认证方...原创 2015-03-19 09:40:12 · 1013 阅读 · 0 评论 -
sql server 索引超出了数组界限
是因为使用的客户端版本低于数据库版本引起原创 2017-07-26 11:27:32 · 27930 阅读 · 3 评论 -
sqlserver 命令行执行过程
windows命令行执行存储过程:sqlcmd -S localhost -U sa -PXXX -d DB1 -Q "EXEC p1" -o "c:\p.txt"windows命令行创建任务计划schtasks /create /tn schename /tr D:\test.bat /sc DAILY /st 13:00:00原创 2017-04-25 16:58:06 · 1857 阅读 · 0 评论 -
mssql批量删除表,批量增加列
--批量删除用户表--1.删除外键约束DECLARE c1 cursor for select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; ' from sysobjects where xtype = 'F'open c1declare @c1 varcha原创 2016-07-21 15:14:22 · 1488 阅读 · 0 评论 -
mssql 两个日期之间序列
select substring(convert(varchar,dateadd(m,number,'2016-01-01'),112),1,6)from master..spt_valueswhere type = 'p' and dateadd(m,number,'2016-01-01') >= '2016-01-01'and dateadd(m,number,'2016-01-01'原创 2016-06-07 11:22:38 · 392 阅读 · 0 评论 -
mssql查看语句执行情况
SELECT SS.SUM_EXECUTION_COUNT, T.TEXT, SS.SUM_TOTAL_ELAPSED_TIME, SS.SUM_TOTAL_WORKER_TIME, SS.SUM_TOTAL_LOGICAL_READS, SS.SUM_TOTAL_LOGICAL_WRITESFROM (SELEC原创 2016-06-08 13:17:57 · 1233 阅读 · 0 评论 -
sqlserver 2008 R2 无法打开项 unknown components
1,管理员打开cmd2,执行C:\Users\Administrator>secedit /configure /cfg %windir%\inf\defltbase.inf /db defltbase.sdb /verbose任务已结束。在此操作期间,一些属性出现警告。 可以忽略此警告。有关详细信息,请参阅日志 %windir%\security\logs\scesrv.原创 2016-01-12 13:51:45 · 3191 阅读 · 2 评论 -
mssql constraint
-- 准备CREATE TABLE TA (ID INT,TA_NAME VARCHAR(30));CREATE TABLE TB (ID DECIMAL(10,0),TB_NAME VARCHAR(30));-- 主键ALTER TABLE DBO.TB ADD CONSTRAINT PK_TA PRIMARY KEY (ID) -- 修改列定义添加外键ALTER TABLE T原创 2016-01-28 14:15:14 · 592 阅读 · 0 评论 -
sqlserver identity
1,环境:create table tb (id int identity(1,1),value varchar(20));--这里的列可以是:alter table tb alter column id decimal(10,0);2, 如果迁移数据,需要显示指定标识的可以使用此语法set identity_insert tb on;insert into tb(id,val原创 2016-01-28 11:33:35 · 339 阅读 · 0 评论 -
MSSQL STUFF
在一个位置截断并插入字符串很实用select STUFF('abc',4,1,'gg') go-- nullselect STUFF('abc',-1,1,'gg') go-- nullselect STUFF('abc',1,-1,'gg') go-- nullselect STUFF('abc',2,4,'gg') go--agg以下是官方解释STUFF原创 2016-01-27 14:04:02 · 799 阅读 · 0 评论 -
mssql for xml path
很实用的一个功能,环境准备drop table ta;create table ta (id int identity(1,1) not null primary key,name varchar(10),value varchar(20));insert into ta values('a','beij');insert into ta values('a','shangh');in原创 2016-01-27 13:50:36 · 791 阅读 · 0 评论 -
优化SQL查询:如何写出高性能SQL语句
1、 首先要搞明白什么叫执行计划?执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录,那查询优化器会选择“索引查找”方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 “全表扫描”方式。可见,执行计划并不是固定的,它是“个性化的”。产生一个转载 2013-12-05 22:12:07 · 482 阅读 · 0 评论 -
ROLLUP&CUBE
对于数据的汇总,是数据库经常用到的任务之一,除了我们通常使用的GROUP BY分组配合聚合函数对数据汇总,以及使用UNION ALL 对数据汇总之外,SQL还提供了 GROUP BY Col1,Col2.. WITH CUBE | ROLLUP,以及COMPUTE BY 等汇总方式,本文主要介绍了使用CUBE 与ROLLUP运算符来实现数据的分级汇总。IF OBJECT_ID('tb')转载 2013-09-25 15:29:06 · 400 阅读 · 0 评论 -
dbcc使用简介
DBCC是SQL Server提供的一组控制台命令,功能很强大,尤其在bug shooting 的时候,掌握一些必要的语句,对操作数据库有不少帮助,所以决定整理一下,发现已有不少类似的整理,减少了不少工作,但DBCC 消耗资源归类如下:一、DBCC 帮助类命令* DBCC HELP('?')查询所有的DBCC命令* DBCC HELP('命令')查询指定的DBCC命令的语法说明...原创 2013-09-24 18:10:58 · 535 阅读 · 0 评论 -
sql server 索引简单使用
--创建表use new_dbcreate table test_table ( id int IDENTITY(1,1) PRIMARY KEY, [name] varchar(20), code varchar(20), date datetime ) ---插入表declare @m int set @m=1 while @mbegin原创 2013-09-24 17:47:23 · 485 阅读 · 0 评论 -
sqlserver 区分大小写
sqlserver列值不区分大小写字符集是Chinese_PRC_CS_AI,大小写敏感字符集是Chinese_PRC_CI_AI,大小写不敏感 1,修改列明alter table T_PLS_USERINFOALTER COLUMN userName varchar(50) COLLATE Chinese_PRC_CS_AI;2,直接查看select * from原创 2016-02-19 10:55:05 · 372 阅读 · 0 评论 -
MSSQL 表明转大小写
转自网络:declare @sql varchar(300)--,@rowcount varchar(10),@dyncnum int declare @tablename varchar(100) declare cursor1 cursor for select name from sysobjects where xt原创 2016-02-25 13:32:28 · 1561 阅读 · 0 评论 -
MSSQL 创建用户和权限简单操作
-- 创建登陆,无密码策略,密码不过期CREATE LOGIN [test_l] WITH PASSWORD='pwd1213',DEFAULT_DATABASE=[db_1], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF;GO USE db_1;GO-- 创建用户CREATE USER [test_u] FROM LOGIN [test_l];GO原创 2016-03-21 11:25:42 · 4043 阅读 · 0 评论 -
sqlserver2008收缩日志
-- 查看错误日志EXEC xp_ReadErrorLog 0, 1, 'Failed', '', '2016-06-01', '2016-06-04', 'DESC'-- 查看各个库日志使用DBCC SQLPERF (Logspace) -- 收缩日志sqlserver2008USE [master]GOALTER DATABASE DB_NAME SET R原创 2016-06-03 09:04:05 · 386 阅读 · 0 评论 -
mssql表值函数
-- 字符串分隔函数CREATE FUNCTION [dbo].[StrSplit] (@str nvarchar(max) -- 字符串 ,@spliter nvarchar(10)) -- 分隔符returns @tb table(str2table nvarchar(256))ASBEGINDECLARE @Num int,@Pos int, @NextPos int原创 2016-05-20 15:00:46 · 633 阅读 · 0 评论 -
mssql游标
1,使用过程返回游标CREATE PROCEDURE P_PRO1 @O_CUR_RESULT CURSOR VARYING OUTPUTASBEGIN SET @O_CUR_RESULT = CURSOR FORWARD_ONLY STATIC FOR SELECT XXX OPEN @O_CUR_RESULT原创 2016-05-31 16:45:51 · 449 阅读 · 0 评论