SQL server一丢丢杂乱的整理

1.sql server单用户多用户的切换

2.转换大小写

3.查询数据库中用户名、数据库名、表名、字段名等

4.删除sql server登录时用户名中的自动记录的用户

5.查询存储过程包含的字段

6.排序,自增,表中相同的数据删除另一条

7.修改字段结构

8.判断数据库中表、字段、视图、函数等存在不存在

9.判断函数、视图等存在则删除

10.查询数据库所有的触发器

一、

sql server数据库中会存在单用户和多用户模式

有时候访问数据库,会提示出数据库被占用等异常,想做一些数据库操作,无法进行。

下面是我整理出的一点更改单用户模式和多用户模式的切换

alter database 数据库名字 set Single_user --单用户
alter database 数据库名字 set multi_user --多用户

OR

sp_dboption 数据库名字 ,“single user”,true --单用户

sp_dboption 数据库名字 ,“single user”,false --多用户

二、

转换大小写
SELECT UPPER('AsadSA')
ASADSA
SELECT LOWER('AsadSA')
asadsa

三、

1 .获取所有用户名:
SELECT name FROM Sysusers where  status = ' 2 '  and islogin = ' 1 '
islogin = ' 1 ' 表示帐户
islogin = ' 0 ' 表示角色
status = ' 2 ' 表示用户帐户
status = ' 0 ' 表示糸统帐户
 2 .获取所有数据库名:
SELECT Name FROM Master..SysDatabases ORDER BY Name
 3 .获取所有表名
SELECT Name FROM DatabaseName..SysObjects Where XType = ' U '  ORDER BY Name
XType = ' U ' :表示所有用户表;
XType = ' S ' :表示所有系统表;
 4 .获取所有字段名:
SELECT Name FROM SysColumns WHERE id = Object_Id( ' TableName ' )
 5 .获取数据库所有类型
select name from systypes 
 6 .获取主键字段
SELECT  name FROM SysColumns WHERE id = Object_Id( ' 表名 ' ) and colid = (select top 1  keyno from sysindexkeys where  id = Object_Id( ' 表名 ' ))

四、

删除数据库记录的用户名
C:\Users\%username%\AppData\Roaming\Microsoft\Microsoft SQL Server\100\Tools\Shell\SqlStudio.bin

五、
查询数据库存储过程包含字段
select name   
from sysobjects o, syscomments s   
where o.id = s.id   
and text like '%PresStatus%'   
and o.xtype = 'P'  

六、

select A.*, row_number() over( partition by name ) 工资排名
from A; 

--排序,自增列
select ROW_NUMBER() over(partition by xm Order by xm  ASC) As no from MedInfoTableHis


  with t1 as(select *,row_number() over ( Order by medonlycode  ASC) as id from MedInfoTableHis)
delete from t1 where t1.id in( 
  SELECT   max(ID)   FROM (select distinct s.no id,s.MedonlyCode from (SELECT ROW_NUMBER() over( Order by medonlycode  ASC) As no,*  from MedInfoTableHis ) s  group by MedonlyCode,s.no) aa group by MedonlyCode having count(*)>1 
  )

七、

--修改表的字段结构
   ALTER TABLE dbo.Windows ALTER COLUMN MachineID VARCHAR(100)

八、

1、判断表是否存在

select * from sysobjects where id = object_id(表名) and OBJECTPROPERTY(id, N'IsUserTable') = 1
2、判断视图是否存在

select table_name from information_schema.views where table_name = 视图名
或者

SELECT * FROM dbo.sysobjects WHERE id = object_id('视图名') AND OBJECTPROPERTY(id, N'IsView') = 1
3、判断函数是否存在

select * from sysobjects where xtype='fn' and name='函数名'
或者

select * from dbo.sysobjects where id = object_id(N'[dbo].[函数名]') and xtype in (N'FN', N'IF', N'TF')
4、判断字段是否存在

select 1 from syscolumns where id=object_id('表名') and name='字段名'
5、判断索引是否存在

if not exists(select * from sysindexes where id=object_id('表名') and name='索引名')

create nonclustered index [索引名] on [表名](字段 asc,字段 asc)

go

6、判断存储过程是否存在

IF exists(SELECT * FROM sysobjects WHERE id=object_id(N'[master].[存储过程名称]') and xtype='P')

begin

drop procedure [master].[存储过程名称]

End

GO

九、

-- SQL SERVER 判断是否存在某个触发器、储存过程

-- 判断储存过程,如果存在则删除
IF (EXISTS(SELECT * FROM sysobjects WHERE name='procedurename' AND type='P'))
DROP PROCEDURE procedurename

-- 判断触发器,如果存在则删除
IF (EXISTS(SELECT * FROM sysobjects WHERE id=object_id(N'[dbo].[triggername]') AND OBJECTPROPERTY(id, N'IsTrigger') = 1))
DROP TRIGGER triggername

-- 判断用户函数是否存在,如果存在则删除
-- 此处type有两种: 'TF'- Table-Value Function 表值函数 'FN'- Scalar-Value Function 标量值函数
IF (EXISTS(SELECT * FROM sysobjects WHERE id=object_id(N'[dbo].[userfunction]') AND (type='FN' OR type='TF')))
DROP FUNCTION userfunction

-- 判断视图是否存在,存在则删除
IF (EXISTS(SELECT TABLE_NAME FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_NAME=N'viewname'))
DROP VIEW viewname

-- 判断用户表 是否存在,若存在则删除
IF (EXISTS(SELECT * FROM sysobjects WHERE id=N'tablename' AND OBJECTPROPERTY(id, N'IsUserTable')=1))
DROP TABLE tablename

-- 判断数据库,如果存在则删除
IF (EXISTS(SELECT * FROM master.dbo.sysdatabases WHERE dbid=db_ID('dbname')))
DROP DATABASE dbname


-- 如果提示:删除数据库时提示数据库正在被使用,无法删除(Cannot drop database databasename because it is currently in use),使用:

IF (EXISTS(SELECT * FROM master.dbo.sysdatabases WHERE dbid=db_ID('dbname')))

BEGIN

  USE master
  ALTER DATABASE dbname
  SET single_user
  WITH ROLLBACK IMMEDIATE
  DROP DATABASE dbname

END

十、

SELECT  OBJECT_NAME(a.parent_obj) AS [表名] ,
        a.name AS [触发器名称] ,
        ( CASE WHEN b.is_disabled = 0 THEN '启用'
               ELSE '禁用'
          END ) AS [状态] ,
        b.create_date AS [创建日期] ,
        b.modify_date AS [修改日期] ,
        c.text AS [触发器语句]
FROM    sysobjects a
        INNER JOIN sys.triggers b ON b.object_id = a.id
        INNER JOIN syscomments c ON c.id = a.id
--WHERE   a.xtype = 'tr' and c.text like '%bom_weight_wkx%'
ORDER BY [表名]

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值