日度归档:2018年8月28日

mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享


摘要:
数据表中,有一列是自动流水号,由于各种操作异常原因(或者插入失败),此列数据会变的不连续,下文将讲述使用sql脚本的方式获取数据表中的数据是否连续的方法分享,如下所示:
实验环境:sqlserver 2008 R2


例:获取表test中keyId是否为连续的数据
实现思路:
1.采用row_number 对表test重新生成流水号
2.采用with as (cte)表达式将重新生成流水号的表放入临时表
3.对临时表自身进行 左连接(前一行和后一行互补),然后比较行中两张表的keyId 是否相差1,
如果相差1,则代表连续数据行,反之为非连续行数据

 create table test 
(keyId int,info varchar(60))
go
insert into test(keyId,info)values
(1,'maomao365.com'),(2,N'连续数判断'),
(4,N'blog教程'),(5,'maomao'),
(8,'test'),(9,'info')
;
with  tmp as 
 (select  ROW_NUMBER() over (order by keyId asc ) as keyIdNew,
* from test  ) 
select a.keyIdNew,
a.keyId,a.info ,
 case  when ISNULL(a.keyId,0)-1 = b.keyId 
              or b.keyId is null  then '连续'
       else '不连续'
 end as '连续标志'
 from tmp a 
left join tmp b on a.keyIdNew = b.keyIdNew+1
;
go
truncate table test 
drop     table test 
mssql_sqlserver_连续数据检测方法分享

mssql_sqlserver_连续数据检测方法分享

mssql sqlserver 数据库置疑的修复方法分享


摘要:
下文分享数据库置疑的修复方法,如下所示:
实验环境:sqlserver 2008 R2


处理步骤如下所示:
1.停止sqlserver服务
2.备份数据库涉及的数据文件(mdf ndf ldf)
3.找另一台sqlserver服务器,新建数据库-需保证数据文件同原数据文件名称一致
4.停止sqlserver服务
5.将备份的数据库文件覆盖刚刚新建的数据库文件
5.重启sqlserver服务
6.在sql server 查询分析器 输入以下命令
use master
go
sp_configure “allow updates”,
reconfigur with override
go
7.将数据库设置为 “紧急模式”
update sysdatabases set status = 32768
where name=”数据库名称”
go
8.使用dbcc checkdb命令检查数据库
dbcc checkdb(‘数据库名称’)
go
—多次执行以上命令,直至没有错误信息存在
9.清除数据库置疑状态
sp_resetstatus “数据库名称”
10.修改数据库为多用户模式

mssql 查询当前登录名信息列表,查看指定数据库下用户列表的方法分享


摘要:
下文分享使用sql脚本获取当前数据库引擎下的登录名信息列表,
使用sql脚本获取指定数据库下用户信息列表
如下所示:
实验环境:sqlserver 2008 R2


   use master;
    go

  select * from  syslogins    --- 获取数据库引擎 登录名的方法
   /* 
   查找指定数据库boss下用户信息列表,如下所示
   */
  use boss
   go
SELECT DP.name as[user_name],SP.name as [logion_name] 
FROM sys.database_principals DP ,sys.server_principals SP 
WHERE SP.sid = DP.sid