创建链接服务器语句
--//创建链接服务器【在本地服务器创建】
exec sp_addlinkedserver '链接服务器名称','','SQLOLEDB','远程服务器地址'
-- exec sp_addlinkedserver '链接服务器名称','','SQLOLEDB','远程地址'(版本不同时在远程地址处加上远程地址sql版本)
--//登录链接服务器
EXEC sp_addlinkedsrvlogin '链接服务器名称','false',null,'登录名',密码'
创建只读副本的服务器链接 --主要用于开始了sql2012 always on功能的情况,在访问只读数据库副本的时候,需要在连接串中增加“MultipleActiveResultSets=True;ApplicationIntent=ReadOnly”,否则无法进行查询
Data Source=只读副本地址;Initial Catalog=数据库名称;MultipleActiveResultSets=True;ApplicationIntent=ReadOnly
查询字段中是否包含中文内容 --方法有多种,这一种感觉比较简单
SELECT *
FROM 表名
WHERE 需要检索的字段 not LIKE '%[吖-座]%'
取每个分组最大的一行数据
--示例
select a.* from tb a where val = (select max(val) from tb where name = a.name) order by a.name
tb:表
val:需要判断最大值的字段
name:分组依据
表索引相关
--查询表索引密度情况
DBCC SHOWCONTIG('表名') --如果是默认的dbo架构,可以去掉引号,直接在小括号中写表名,如果为dbo以外架构,需要带上单引号,带架构名
主要关注扫描密度、逻辑扫描碎片、平均页密度
扫描密度:数据量较大的表一般保持在80%↑即可,实际计数5000+可算做数据量较大的表;
逻辑扫描碎片:越低越好,一般重构索引后保持在15%↓,这个可以理解为已经失效的索引碎片垃圾,每次进行查询的时候会连同碎片一起过滤,浪费资源、降低数据库效率;
平均页密度:比例越高越好,数据量较大的表一般保持在80%↑即可;
--索引重构
DBCC DBREINDEX('表名','索引名',重构目标密度) --
索引名:如果是需要重构表的所有索引,索引名可以不填写(引号需保留)
重构目标密度:需要重构密度达到的值,例如写90,即需要重构后密度达到90%
快速插入并新建同结构的临时表 --先按照原始表结构,新建一个临时表,再将表中所有数据插入该临时表
SELECT * INTO 临时表名 FROM 原始表名
--脚本加密
该加密方法暂时无法用于表脚本,适用于存储过程、视图、函数等
在AS关键字前加入 WITH ENCRYPTION语法,然后执行脚本即可,下次重新登陆数据库则会显示一个小锁标志,代表已加密文本。