我是靠谱客的博主 动听星月,最近开发中收集的这篇文章主要介绍SQL server一丢丢杂乱的整理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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

2.转换大小写

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

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

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

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

7.修改字段结构

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

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

一、

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%AppDataRoamingMicrosoftMicrosoft SQL Server100ToolsShellSqlStudio.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

最后

以上就是动听星月为你收集整理的SQL server一丢丢杂乱的整理的全部内容,希望文章能够帮你解决SQL server一丢丢杂乱的整理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(35)

评论列表共有 0 条评论

立即
投稿
返回
顶部