获取所有用户名 sql server

http://www.cnblogs.com/virusswb/articles/1259207.html

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( ' 表名 ' ))


[综合网络资料整理]

1.获取所有数据库名: 
   (1)、Select Name FROM Master..SysDatabases order by Name 
2.获取所有表名: 
   (1)、Select Name FROM SysObjects Where XType='U' orDER BY Name 
           XType='U':表示所有用户表; 
           XType='S':表示所有系统表;

   (2)、SELECT name FROM sysobjects WHERE type = 'U' AND sysstat = '83'

           注意:一般情况只需要type = 'U',但有时候会有系统表混在其中(不知道什么原因),加上后面一句后就能删除这些系统表了


3.获取所有字段名: 
(1)、Select Name FROM SysColumns Where id=Object_Id('TableName')

(2)、SELECT syscolumns.name,systypes.name,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND "syscolumns.id = object_id('tableName')

       注意点:
     (a)这里为了重点突出某些重要内容,选取了其中几项信息输出。
     (b)syscolumns表中只含有数据类型编号,要获取完整的名字需要从systypes表中找,一般用户使用的数据类型用xusertype对应比较好,不会出现一对多的情况。
     (c)syscolumns.length得到的是物理内存的长度,所以nvarchar和varchar等类型在数据库中的显示是这个的一半。

4、得到表中主键所包含的列名:

    SELECT syscolumns.name FROM syscolumns,sysobjects,sysindexes,sysindexkeys WHERE syscolumns.id = object_id('tablename') AND sysobjects.xtype = 'PK' AND sysobjects.parent_obj = syscolumns.id AND sysindexes.id = syscolumns.id AND sysobjects.name = sysindexes.name AND sysindexkeys.id = syscolumns.id AND sysindexkeys.indid = sysindexes.indid AND syscolumns.colid = sysindexkeys.colid

注意:这是在4张系统表中寻找的,关系比较复杂,大致可以表示为:
syscolumns中存有表中的列信息和表id,sysobjects表中存有主键名字(即PK_Table类似)和表id,sysindexes中存 有主键名字和表id和index编号,sysindexkeys中存有表id和index编号和列编号,一项一项对应起来后就能找到列名了。

 

另外的SQL代码

select syscolumns.name, systypes.name, syscolumns.length from syscolumns   

  left join systypes on syscolumns. xusertype =systypes. xusertype 

  where id=(select id from sysobjects where name='订货主档');

go;

或者用这样的写法,执行结果一样:

select syscolumns.namesystypes.namesyscolumns.length from syscolumns,systypes

where (syscolumns.id=object_id('订货主档') and syscolumns.xusertype=systypes.xusertype)

order by syscolumns.colorder;

go

执行结果:(字段只出现一次,正常)

订单号码    int 4

客户编号    nvarchar    10

员工编号    int 4

订单日期    datetime    8

要货日期    datetime    8

送货日期    datetime    8

送货方式    int 4

运费    money   8

收货人  nvarchar    80

送货地址    nvarchar    120

送货城市    nvarchar    30

送货行政区  nvarchar    30

送货邮政编码    nvarchar    20

送货国家地区    nvarchar    30

 

 

select syscolumns.name, systypes.name, syscolumns.length from syscolumns   

  left join systypes on syscolumns.xtype=systypes.xtype 

  where id=(select id from sysobjects where name='订货主档');

go;

执行结果:(部分字段出现两次,数据类型不同)

订单号码    int 4

客户编号    nvarchar   10

客户编号    sysname    10

员工编号    int 4

订单日期    datetime   8

订单日期    出生日期类型    8

要货日期    datetime   8

要货日期    出生日期类型    8

送货日期    datetime   8

送货日期    出生日期类型    8

送货方式    int 4

运费    money  8

运费    薪水类型    8

收货人  nvarchar   80

收货人  sysname    80

送货地址    nvarchar   120

送货地址    sysname    120

送货城市    nvarchar   30

送货城市    sysname    30

送货行政区  nvarchar   30

送货行政区  sysname    30

送货邮政编码    nvarchar   20

送货邮政编码    sysname    20

送货国家地区    nvarchar   30

送货国家地区    sysname    30

查询存储过程DepartmentSalaryInfo所有的信息,信息包含在系统视图syscolumns,systypes中

select syscolumns.*, systypes.* from syscolumns   

  left join systypes on syscolumns.xusertype=systypes.xusertype 

  where id=(select id from sysobjects where name='DepartmentSalaryInfo');

go

 

 

exec   sp_procedure_params_rowset   @procedure_name   =   'DepartmentSalaryInfo';

go

执行结果:

北风贸易    dbo DepartmentSalaryInfo;1   @RETURN_VALUE 0   4   0   NULL   0   3   NULL   NULL   10    NULL   NULL   intint

北风贸易    dbo DepartmentSalaryInfo;1   @department   1   1   0   NULL   1   129 10  10  NULL    NULL   NULL  varchar    varchar

北风贸易    dbo DepartmentSalaryInfo;1   @average   2   2   0   NULL   1   6   NULL   NULL   19    NULL   NULL   money money

北风贸易    dbo DepartmentSalaryInfo;1   @maximum   3   2   0   NULL   1   6   NULL   NULL   19    NULL   NULL   money money

北风贸易    dbo DepartmentSalaryInfo;1   @minimum   4   2   0   NULL   1   6   NULL   NULL   19    NULL   NULL   money money

 

--存储过程中的参数名,参数类型,参数长度

select syscolumns.name, systypes.name, syscolumns.length from syscolumns   

  left join systypes on syscolumns.xusertype=systypes.xusertype 

  where id=(select id from sysobjects where name='DepartmentSalaryInfo');



1:获取当前数据库中的所有用户表
select Name from sysobjects where xtype='u' and status>=0
2:获取某一个表的所有字段
select name from syscolumns where id=object_id('表名')
3:查询用户创建的所有数据库
select * from master..sysdatabases D where sid not in(select sid from
master..syslogins where name='sa')
或者
select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
4:查询某一个表的字段和数据类型
select column_name,data_type from information_schema.columns
where table_name = '表名'
[n].[标题]:
Select * From TableName Order By CustomerName
[n].[标题]:
8.如何修改数据库的名称:
sp_renamedb 'old_name', 'new_name'
9.只复制一个表结构,不复制数据
select top 0 * into [t1] from [t2]
10.连接远程数据库
select * from OPENDATASOURCE('SQLOLEDB','Data Source=远程ip;User
ID=sa;Password=密码').库名.dbo.表名
11.获取当前oracle数据库中的所有表
select table_name from user_tables
12 .获取当前oracle表中所有字段的类型
SELECT
      COLUMN_NAME,DATA_TYPE,DATA_LENGTH,NULLABLE
FROM 
         USER_TAB_COLS where TABLE_NAME='teacher';

【Blog】http://virusswb.cnblogs.com/

【MSN】jorden008@hotmail.com

【说明】转载请标明出处,谢谢

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 SQL Server 中,用户的用户名和密码是存储在系统表中的。可以使用以下 SQL 查询查看已定义的 SQL Server 登录名和密码: ``` SELECT name, password_hash FROM sys.sql_logins WHERE type_desc = 'SQL_LOGIN'; ``` 请注意,此查询仅适用于 SQL Server 登录名,而不适用于 Windows 身份验证。如果想查看 Windows 身份验证的用户名和密码,需要查看操作系统的用户和组。 ### 回答2: 在SQL Server中,我们可以通过以下几种方法来查看用户名和密码: 1. 使用系统存储过程:系统存储过程`sp_help_revlogin`可以显示所有登录名及其对应的密码哈希值。执行以下命令可以获得该存储过程的文本定义: ```sql sp_helptext 'sp_help_revlogin' ``` 然后执行该存储过程即可查看用户名和密码哈希值。 2. 查询系统表:我们可以查询系统表`sys.syslogins`来获取用户名和密码。以下是示例查询语句: ```sql SELECT name, password FROM sys.syslogins ``` 该查询将返回所有登录名和对应的密码哈希值。 需要注意的是,尽管可以查看密码的哈希值,但出于安全考虑,SQL Server不存储明文密码。因此,无法直接从数据库中获取明文密码。密码哈希值是通过加密算法对密码进行转换得到的,以增加安全性。 请注意,在查询用户密码时,务必确保权限和安全性。只有具有足够权限的用户才能执行上述的查询操作。为了保护用户密码的安全性,我们应该使用适当的加密手段来存储和管理用户密码。 ### 回答3: 在SQL Server中,我们可以通过以下方法查看用户名和密码。 1. 使用系统存储过程:在SQL Server中,有一个存储过程可以用来查看登录用户的用户名和密码。这个存储过程是sys.sp_help_revlogin。你可以执行以下命令来查看用户名和密码: EXEC sp_help_revlogin; 这个存储过程将返回一个结果集,包含所有登录用户的用户名、密码以及密码的哈希值。 2. 使用系统视图:SQL Server中有一个系统视图sys.sql_logins,可以用来查看所有登录用户的信息,包括用户名和密码。你可以执行以下查询语句来查看用户名和密码: SELECT name, password_hash FROM sys.sql_logins; 这个查询将返回一个结果集,包含所有登录用户的用户名和密码的哈希值。 需要注意的是,因为密码通常会进行哈希处理后存储在数据库中,所以无法直接查看明文密码。上述方法只能查看密码的哈希值。如果需要重置密码或者修改用户的密码,可以使用ALTER LOGIN语句来实现。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值