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 [表名]