SQL获取所有数据库名、表名、储存过程以及参数列表
sql数据库查找名称列语句
sql数据库查找名称列语句
当你需要从数据库中查找名称列时,你可以使用以下SQL语句: sql.
SELECT name.
FROM your_table_name;
这条SQL语句将从指定的表中选择名称列的所有数据。
现在让
我们来创作一篇文章,标题为“SQL数据库查询,从表中获取名称
列数据”。
---。
SQL数据库查询,从表中获取名称列数据。
在数据库管理中,经常需要从表中获取特定列的数据。
一种常
见的需求是获取名称列中的信息。
为了实现这一目标,我们可以使
用SQL语句来从数据库中检索所需的数据。
假设我们有一个名为`your_table_name`的表,其中包含了名称列。
为了获取这个列的所有数据,我们可以使用以下SQL语句:
sql.
SELECT name.
FROM your_table_name;
这条SQL语句将返回`your_table_name`表中名称列的所有数据。
通过这种方式,我们可以轻松地从数据库中提取所需的信息。
总结而言,通过使用SQL语句,我们可以在数据库中快速、有
效地获取名称列的数据。
这种方法为数据库管理提供了便利,使我
们能够轻松地满足各种数据检索需求。
希望本文能够帮助您更好地理解如何使用SQL语句来获取名称
列的数据,并在数据库查询中发挥作用。
如何获取SQL的表名,库名
1.获取表的基本字段属性--获取SqlServer中表结构SELECT ,,syscolumns.isnullable,syscolumns.lengthFROM syscolumns, systypesWHERE syscolumns.xusertype = systypes.xusertypeAND syscolumns.id =object_id('你的表名')2.获取字段的描述信息--获取SqlServer中表结构主键,及描述declare@table_name as varchar(max)set@table_name='你的表名'select , , sys.columns.max_length, sys.columns.is_nullabl e,(select count(*) from sys.identity_columns where sys.identity_columns.object_id= sys.colum ns.object_id and sys.columns.column_id = sys.identity_columns.column_id) as is_identity , (select value from sys.extended_properties where sys.extended_properties.major_id = sys.c olumns.object_id and sys.extended_properties.minor_id = sys.columns.column_id) as descrip tionfrom sys.columns, sys.tables, sys.types where sys.columns.object_id= sys.tables.object_i d and sys.columns.system_type_id=sys.types.system_type_id and =@table_ name order by sys.columns.column_id3.单独查询表的递增字段--单独查询表递增字段select[name]from syscolumns whereid=object_id(N'你的表名') and COLUMNPROPERTY(id,name,'IsIdentity')=14.获取表的主外键--获取表主外键约束exec sp_helpconstraint '你的表名' ;5.相当完整的表结构查询--很全面的表结构exec sp_helpconstraint '你的表名' ;SELECT表名=CASE a.colorder WHEN 1 THEN ELSE''END,序 = a.colorder,字段名= ,标识 = CASE COLUMNPROPERTY(a.id,,'IsIdentity') WHEN 1 THEN '√' ELSE '' END,主键 = CASEWHEN EXISTS ( SELECT * FROM sysobjects WHERE xtype='PK'AND name IN (SELECT [name] FROM sysindexes WHERE id=a.idAND indid IN (SELECT indid FROM sysindexkeys WHERE id=a.idAND colid IN (SELECT colid FROM syscolumns WHERE id=a.idAND name=)))) THEN '√' ELSE '' END,类型= ,字节数= a.length,长度 = COLUMNPROPERTY(a.id,,'Precision'),小数 = CASE ISNULL(COLUMNPROPERTY(a.id,,'Scale'),0) WHEN 0 THEN '' ELSE CAST(COLUMNPROPERTY(a.id,,'Scale') AS VARCHAR) END,允许空= CASE a.isnullable WHEN 1 THEN '√' ELSE '' END,默认值= ISNULL(d.[text],''),说明 = ISNULL(e.[value],'')FROM syscolumns aLEFT JOIN systypes b ON a.xtype=b.xusertypeINNER JOIN sysobjects c ON a.id=c.id AND c.xtype='U' AND <>'dtpr operties'LEFT JOIN syscomments d ON a.cdefault=d.idLEFT JOIN sys.extended_properties e ON a.id=e.class AND a.colid=e.min or_idORDER BY , a.colorder6.获取所有的库名--获取服务器中的所遇库名select*from master..sysdatabases7.获取服务器上所有库的所有表--获取服务器上所有库的所有表名use masterdeclare @db_name varchar(100)declare @sql varchar(200)declare cur_tables cursorforselect name from sysdatabases /*where name like 'by_%'*/open cur_tablesfetch next from cur_tables into @db_namewhile @@fetch_status = 0begin--set @db_name = @db_name + '.dbo.sysobjects'print @db_nameset @sql = 'select * from ' + @db_name + '.dbo.sysobjects where xtype = ''U'''exec (@sql)fetch next from cur_tables into @db_nameendclose cur_tablesdeallocate cur_tablesgo。
获取SQL数据库中的数据库名、所有表名、所有字段名、列描述
xusertype smallint 扩展的用户定义数据类型 ID。
length smallint systypes 中的最大物理存储长度。
xprec tinyint 仅限内部使用。
xscale tinyint 仅限内部使用。
colid smallint 列或参数 ID。
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
UQ = UNIQUE 约束(类型是 K)
V = 视图
X = 扩展存储过程
uid smallint 所有者对象的用户 ID。
info smallint 保留。仅限内部使用。
status int 保留。仅限内部使用。
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
L = 日志
FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程
S = 系统表
TF = 表函数
TR = 触发器
U = 用户表
int
版本号,该版本号在每次表的架构更改时都增加。
stats_schema_
ver
int
保留。仅限内部使用。
type
char(2)
对象类型。可以是下列值之一: C = CHECK 约束
D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束
FN = 标量函数
sql存储过程
SQL存储过程简介SQL存储过程是一种预编译的数据库操作,它被存储在数据库服务器中,并可以由应用程序调用。
存储过程可以包含SQL语句、控制流程和业务逻辑,它们提供了一种更高效、更安全的处理方法。
本文将介绍SQL存储过程的基本语法和用法,并提供一些示例来帮助您更好地理解。
存储过程语法SQL存储过程使用CREATE PROCEDURE语句来创建。
下面是一般存储过程的语法:CREATE PROCEDURE procedure_name[parameter1 data_type, [parameter2 data_type, ...]][OUT return_value data_type]BEGIN-- 存储过程主体,包括SQL语句、控制流程和业务逻辑END;•procedure_name是存储过程的名称,可以自定义。
•parameter1, parameter2, ...是可选参数列表,用于传递数据给存储过程。
参数包括参数名称和数据类型。
•OUT return_value是可选的输出参数,用于返回存储过程的结果。
存储过程示例下面是一个简单的示例,展示了如何创建一个存储过程。
该存储过程接受一个参数,并返回对应参数的平方值:CREATE PROCEDURE calculate_square@input INT,@output INT OUTBEGINSET @output = @input * @input;END;在上面的示例中,calculate_square是存储过程的名称,@input是输入参数,@output是输出参数。
调用存储过程一旦创建了存储过程,可以使用EXECUTE或EXEC语句来调用它。
下面是一个调用存储过程的示例:DECLARE @result INT;EXEC calculate_square 5, @result OUT;SELECT @result;在上面的示例中,@result是一个变量,用于接收存储过程的输出结果。
使用SQL语句查询MySQL数据库
使用SQL语句查询MySQL数据库在现代信息技术领域中,数据库是应用广泛的基础设施之一。
而MySQL数据库作为一种开源的关系型数据库管理系统,成为了许多企业和个人的首选。
在使用MySQL数据库时,经常需要使用SQL语句来进行各种查询操作,以获取所需的数据或进行数据分析。
本文将深入探讨如何使用SQL语句查询MySQL数据库,以及一些高效的查询技巧。
1. 连接到MySQL数据库在开始查询之前,首先需要连接到MySQL数据库。
可以使用以下命令连接到MySQL数据库:```mysql -u 用户名 -p```其中,用户名是数据库用户的名称。
输入以上命令后,系统会要求输入用户的密码。
正确输入密码后,就会成功连接到MySQL数据库。
2. 查询单个表中的所有数据最简单的查询操作是获取单个表中的所有数据。
可以使用以下SQL语句实现:```SELECT * FROM 表名;```其中,表名是要查询的数据库表的名称。
使用上述语句,就能够获取指定表中的所有数据。
3. 查询特定条件下的数据往往我们需要根据一些条件来过滤数据,以获取符合特定要求的数据。
以下是一个示例查询,获取学生表中所有年龄大于18岁的学生数据:```SELECT * FROM 学生表 WHERE 年龄 > 18;```在上述语句中,SELECT用于指定要返回的列,FROM用于指定要查询的表,WHERE用于指定过滤条件。
可以根据具体需求修改表名、列名和过滤条件。
4. 查询多个表中的数据有时候需要从多个表中获取数据,可以使用JOIN语句连接多个表。
以下是一个示例查询,获取学生表和成绩表中相关联的数据:```SELECT * FROM 学生表 INNER JOIN 成绩表 ON 学生表.学号 = 成绩表.学号;```在上述语句中,使用INNER JOIN来连接学生表和成绩表,ON语句用于指定两个表之间的连接条件。
可以根据实际需求修改表名和连接条件。
5. 查询结果排序通过使用ORDER BY子句,可以对查询结果进行排序。
sql语句获取表名方法
sql语句获取表名方法获取表名的SQL 语句可以通过查询系统表来实现。
以下是获取表名的SQL 语句:```sqlSELECT name FROM sys.tables;```这个语句将返回当前数据库中的所有表名。
如果要获取特定模式的表名,则可以使用以下语句:```sqlSELECT name FROM sys.tables WHERE schema_id = SCHEMA_ID('schema_name');```其中,`schema_name` 是模式的名称。
如果要获取特定表的名称,则可以使用以下语句:```sqlSELECT name FROM sys.tables WHERE object_id =OBJECT_ID('table_name');```其中,`table_name` 是表的名称。
这个语句将返回指定表的名称。
除了`sys.tables`,还有其他系统表可以用于获取表名,例如`INFORMATION_SCHEMA.TABLES`。
以下是使用`INFORMATION_SCHEMA.TABLES` 获取表名的SQL 语句:```sqlSELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'schema_name';```其中,`schema_name` 是模式的名称。
这个语句将返回指定模式中的所有表名。
无论使用哪种方法,都可以通过SQL 语句获取表名。
这些语句可以帮助开发人员更好地管理数据库中的表。
SQL Server存储过程和参数示例
一些用在SQL 2000的企业管理GUI中,并且不打算用于其他的流程。
微软已预计将其中的一些存储过程从未来的SQL Server版本中删除(或已经删除了)。
虽然这些存储过程可能很有用并为你节省了很多时间,但是他们可以在任何时候改变他们的函数或简单的删除掉。
下面的图表显示了当许多存储过程从一个Microsoft SQL Server版本移入另一个版本时,引入了新的存储过程,而原来的一些则从安装包里删除了。
大多数的存储过程,如果不是所有的,要求用户是系统管理员服务器角色以便执行这些存储过程。
和文件系统交互的存储过程还要求执行存储过程的用户(还有SQL Server的服务帐户)具有访问文件/文件夹的权限。
sp_executeresultset微软在SQL Server 2005中删除了这个名为sp_executeresultset的便利小程序。
它允许你在空闲时通过使用SELECT查询产生动态SQL代码。
然后,作为结果的SQL命令将会在数据库上执行。
它允许你创建单独的一行代码,这行代码可以在单步中查询到你的数据库里的每一个表的记录数目(就像例子中所显示的)。
这是一个未公开的存储过程,而且无法知道它为什么被删除了。
但是,唉,这个便利的有用存储过程已经没有了。
exec sp_execresultset 'SELECT ''SELECT '''''' + name + '''''',count(*) FROM '' + namefrom sysobjectswhere xtype = ''U'''sp_MSforeachdb / sp_MSforeachtablesp_MSforeachdb / sp_MSforeachtable两个存储过程,sp_MSforeachdb和sp_MSforeachtable封装了一个指针。
sql 查询带参数存储过程用法
题目:SQL 查询带参数存储过程用法内容:一、存储过程的概念和作用1.1 存储过程的定义和特点1.2 存储过程的作用和优点二、SQL 查询带参数存储过程的创建和使用2.1 创建带参数的存储过程2.2 存储过程参数的类型和使用2.3 调用带参数的存储过程三、示例演示3.1 实际案例分析3.2 示例代码演示和分析四、存储过程参数的优化和注意事项4.1 存储过程参数的优化方法4.2 存储过程参数的注意事项五、结语在当今大数据时代,数据库的应用变得越来越广泛。
在数据库操作中,存储过程是一种非常常见和重要的工具。
本文将重点探讨 SQL 中带参数的存储过程的用法。
首先将介绍存储过程的概念和作用,随后具体讲解 SQL 查询带参数存储过程的创建和使用,然后通过示例演示加深理解,最后总结存储过程参数的优化和注意事项。
一、存储过程的概念和作用1.1 存储过程的定义和特点存储过程是一组经过预编译并存储在数据库中的SQL语句集合,它的执行速度比单独执行SQL语句要快,因为它们是预编译的。
存储过程可以带参数,可以返回结果。
另外,存储过程是封装了业务逻辑的数据库操作,可以简化客户端程序的开发,提高数据库操作的效率。
1.2 存储过程的作用和优点存储过程的作用包括:减少网络传输量、提高执行速度、封装复杂的业务逻辑、提高数据安全性、简化代码的维护和管理。
二、SQL 查询带参数存储过程的创建和使用2.1 创建带参数的存储过程在 SQL 中,创建带参数的存储过程需要使用 CREATE PROCEDURE 语句,其中包括存储过程的名称、参数的定义以及存储过程体中的SQL语句。
在定义参数时,需要指定参数的名称、类型和长度。
参数的类型可以是 IN、OUT 和 INOUT,分别表示输入参数、输出参数和输入输出参数。
2.2 存储过程参数的类型和使用存储过程支持各种类型的参数,如整型、字符型、日期型等。
在使用存储过程时,需要指定参数的值,并根据需要获取存储过程的返回值。
sql调用存储过程的语句
sql调用存储过程的语句SQL是一种用来操作和管理关系型数据库的计算机语言,而存储过程则是SQL Server数据库中的一种数据库对象。
存储过程是指预先编写好的一组SQL语句,可以被多次调用,其目的是为了提高数据库的安全性和效率。
下面我们就来看一下如何调用存储过程的语句。
在SQL Server中,调用存储过程的语句是通过EXECUTE或者EXEC命令来实现的。
通常情况下,完整的调用存储过程的语句可以分为以下几个部分:1. EXECUTE或者EXEC命令:该命令用于执行存储过程。
2. 存储过程的名称:指定需要调用的存储过程的名称。
3. 参数列表:指定存储过程所需要的参数列表,如果存储过程不需要参数,则可以省略该部分。
举一个例子,假设我们有一个名为“GetOrderDetails”的存储过程,该存储过程需要传递一个订单编号作为参数,然后返回该订单的详细信息。
那么,我们可以使用以下语句来调用该存储过程:EXECUTE GetOrderDetails @OrderID = 1001;在上面的语句中,“GetOrderDetails”是需要调用的存储过程的名称,“@OrderID= 1001”是该存储过程所需要的参数列表。
需要注意的是,当存储过程执行完毕后,它会返回一个结果集或者一个或多个输出参数。
如果存储过程返回一个或多个结果集,则可以使用SELECT语句来检索结果集。
如果存储过程返回一个或多个输出参数,则可以使用SET语句来读取这些输出参数的值。
下面是一个示例代码:DECLARE @TotalAmount decimal(10,2);EXECUTE GetOrderTotal @OrderID = 1001, @TotalAmount =@TotalAmount OUTPUT;PRINT 'The total amount of the order is ' + CAST(@TotalAmount AS varchar(20));在上面的代码中,我们首先定义了一个名为“@TotalAmount”的变量,用于存储存储过程返回的输出参数值。
SQL查询某库所有的表所有的字段及字段的属性
SQL查询某库所有的表所有的字段及字段的属性SELECT (case when a.colorder=1then else null end) 表名,a.colorder 字段序号, 字段名,(case when COLUMNPROPERTY( a.id,,'IsIdentity')=1then'√'else''end) 标识,(case when (SELECT count(*) FROM sysobjects WHERE (name in (SELECT name FROM sysindexes WHERE (id = a.id) AND (indid in (SELECT indid FROM sysindexkeys WHERE (id = a.id) AND (colid in (SELECT colid FROM 类型,a.length 占⽤字节数,COLUMNPROPERTY(a.id,,'PRECISION') as长度,isnull(COLUMNPROPERTY(a.id,,'Scale'),0) as⼩数位数,(case when a.isnullable=1then'√'else''end) 允许空,isnull(e.text,'') 默认值,isnull(g.[value], '') AS[说明]FROM syscolumns aleft join systypes b on a.xtype=b.xusertypeinner join sysobjects d on a.id=d.id and d.xtype='U'and <>'dtproperties'left join syscomments e on a.cdefault=e.idleft join sys.extended_properties g on a.id=g.major_id AND a.colid=g.minor_idleft join sys.extended_properties f on d.id=f.class and f.minor_id=0where is not null order by a.id,a.colorder如果只需要查表名就不⽤那么⿇烦Sql Server1,利⽤sysobjects系统表在这个表中,在数据库中创建的每个对象(例如约束、默认值、⽇志、规则以及存储过程)都有对应⼀⾏,我们在该表中筛选出xtype等于U的所有记录,就为数据库中的表了。
sql中存储过程的用法
sql中存储过程的用法一、概述存储过程是一种保存在数据库中的程序,可以执行一系列操作,包括数据查询、数据更新、事务控制和多个SQL语句的执行,等等。
存储过程可以简化许多重复的工作,提高数据库的性能,增加数据的安全性和保密性。
二、创建存储过程在SQL Server中,创建存储过程可以使用CREATE PROCEDURE语句。
例如:```CREATE PROCEDURE [dbo].[proc_SelectUsers]ASBEGINSELECT * FROM UsersEND```上述语句创建了一个名为proc_SelectUsers的存储过程,它会查询Users表中所有的数据。
注意,存储过程创建语句的标准格式如下:```CREATE [OR ALTER] PROCEDURE procedure_name [parameter_list][WITH <procedure_option> [,...n]]ASsql_statement [;] [,...n]```参数列表(parameter_list)是可选的,用于指定存储过程所需的参数。
WITH子句是可选的,用于指定存储过程的一些选项,如ENCRYPTION、EXECUTE AS和RECOMPILE等。
sql_statement则是存储过程要执行的一系列SQL语句。
三、执行存储过程在SQL Server中,可以使用EXECUTE语句或者EXEC语句(两者等效)来执行存储过程。
例如:```EXEC proc_SelectUsers```以上语句将会执行名为proc_SelectUsers的存储过程,返回查询结果。
如果存储过程有参数,则执行语句应该像这样:```EXEC proc_SelectUsersByGender @Gender = 'F'```上述语句将会执行名为proc_SelectUsersByGender的存储过程,传递Gender参数值为“F”,返回查询结果。
使用SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名
使⽤SQL语句查询MySQL,SQLServer,Oracle所有数据库名和表名,字段名MySQL中查询所有数据库名和表名查询所有数据库show databases;查询指定数据库中所有表名select table_name from information_schema.tables where table_schema='database_name' and table_type='base table';查询指定表中的所有字段名select column_name from information_schema.columns where table_schema='database_name' and table_name='table_name';查询指定表中的所有字段名和字段类型select column_name,data_type from information_schema.columns where table_schema='database_name' and table_name='table_name';SQLServer中查询所有数据库名和表名查询所有数据库select * from sysdatabases;查询当前数据库中所有表名select * from sysobjects where xtype='U';xtype='U':表⽰所有⽤户表,xtype='S':表⽰所有系统表。
查询指定表中的所有字段名select name from syscolumns where id=Object_Id('table_name');查询指定表中的所有字段名和字段类型select , from syscolumns sc,systypes st where sc.xtype=st.xtype and sc.id in(select id from sysobjects where xtype='U' and name='table_name');Oracle中查询所有数据库名和表名查询所有数据库由于Oralce没有库名,只有表空间,所以Oracle没有提供数据库名称查询⽀持,只提供了表空间名称查询。
SQL获取所有数据库名、表名、储存过程以及参数列表
注意:这是在4张系统表中寻找的,关系比较复杂,大致可以表示为:
syscolumns中存有表中的列信息和表id,sysobjects表中存有主键名字(即PK_Table类似)和表id,sysindexes中存有主键名字和表id和index编号,sysindexkeys中存有表id和index编号和列编号,一项一项对应起来后就能找到1)、Select Name FROM SysColumns Where id=Object_Id('TableName')
(2)、SELECT ,,syscolumns.isnullable,syscolumns.length FROM syscolumns, systypes WHERE syscolumns.xusertype = systypes.xusertype AND "syscolumns.id = object_id('tableName')
where (syscolumns.id=object_id('订货主档') and syscolumns.xusertype=systypes.xusertype)
order by syscolumns.colorder;
go
执行结果:(字段只出现一次,正常)
订单号码 int 4
送货城市 nvarchar 30
送货城市 sysname 30
送货行政区 nvarchar 30
送货行政区 sysname 30
送货邮政编码 nvarchar 20
送货邮政编码 sysname 20
送货国家地区 nvarchar 30
另外的SQL代码
select , , syscolumns.length from syscolumns
SQL_SERVER_2012_常用命令
SQL系统视图,系统表,系统存储过程的使用获取数据库中用户表信息1、获取特定库中所有用户表信息select*from sys.tablesselect*from sys.objects where type='U' --用户表第二条语句中当type='S'时是系统表2、获取表的字段信息select*from sys.columns where object_id=object_id('表名')select*from syscolumns where id=OBJECT_ID('表名' )3、获取当前库中表的字段及类型信息(1)select'字段名'=,'类型名'=,'字段长度'=a.max_length,'参数顺序'=a.column_idfrom sys.columns a left join sys.types bon er_type_id=er_type_idwhere object_id=object_id('表名')syscolumns与sys.columns表用法类似。
获取索引或主键信息1、获取对象及对应的索引的信息select'对象名'=,'对象类型'=a.type,'索引名'=,'索引类型'=case b.type when 1 then'聚集索引'when 2 then'非聚集索引'when 3 then'xml索引'else'空间索引'end,'主键否'=case when b.is_primary_key=1 then'主键'else''endFROM sys.objects A JOIN sys.indexes B ON A.object_id=B.object_id WHERE A.type='U'AND IS NOT NULL order by 2、获取表的主键及对应的字段(1)select'表名'=,'主键名'=,'字段名'=from sys.indexes a join sys.index_columns bon a.object_id=b.object_id and a.index_id=b.index_idjoin sys.columns c on a.object_id=c.object_id andc.column_id=b.column_idjoin sys.objects d on d.object_id=c.object_idwhere a.is_primary_key=1(2)SELECT'表名'=OBJECT_NAME(b.parent_obj),'主键名'=,'字段名'=FROM syscolumns a,sysobjects b,sysindexes c,sysindexkeys d WHERE b.xtype='PK'AND b.parent_obj=a.id AND c.id=a.idAND = AND d.id=a.idAND d.indid=c.indid AND a.colid=d.colid(3)select'所属架构'=,'表名'=,'主键名'=,'列名'=,'键列序数'=ic.key_ordinalfrom sys.key_constraints as kjoin sys.tables as ton t.object_id=k.parent_object_idjoin sys.schemas as son s.schema_id=t.schema_idjoin sys.index_columns as icon ic.object_id=t.object_idand ic.index_id=k.unique_index_idjoin sys.columns as con c.object_id=t.object_idand c.column_id=ic.column_id where k.type='pk';(4)使用系统存储过程获取指定表的主键信息EXEC sp_pkeys'表名'--表名只能是当前数据库下的单独表名不能带上架构名3、查询哪些表创建了主键select'表名'= from(select name,object_id from sys.objects where type='u')aleft joinsys.indexes bon a.object_id=b.object_id and b.is_primary_key=1where is not null注:查询哪些表没有创建主键,将where条件改成is null 即可。
获取SqlServer数据库、表(字段、索引..)、视图、存储过程等信息脚本
获取SqlServer数据库、表(字段、索引..)、视图、存储过程等信息脚本⼀个服务器(实例)下:1、所有数据库:select[name]as database_name,database_id,create_datefrom sys.databasesorder by name2、所有登录账号:--基本服务器登录账号信息select as login_account,sp.type_desc as login_type,sl.password_hash,sp.create_date,sp.modify_date,case when sp.is_disabled =1then'Disabled'else'Enabled'end as statusfrom sys.server_principals spleft join sys.sql_logins slon sp.principal_id = sl.principal_idwhere sp.type not in ('G', 'R')order by ;--服务器登录账号及账号拥有的服务器⾓⾊declare@loginUsers table (serverName sysname, loginName sysname,serverRole sysname)insert@loginUsersselect@@SERVERNAME serverName, loginName, isnull(DB_Roles.Roles,'public') serverRolefrom sys.syslogins slleft join(select'sysadmin'as Rolesunion allselect'securityadmin'union allselect'serveradmin'union allselect'setupadmin'union allselect'processadmin'union allselect'diskadmin'union allselect'dbcreator'union allselect'bulkadmin'union allselect'No serverRole'union allselect'public') DB_RolesonCase When sl.sysadmin=1and DB_Roles.Roles='sysadmin'then'sysadmin'When sl.sysadmin = 1 and DB_Roles.Roles = 'public' then 'public'When sl.securityadmin=1and DB_Roles.Roles='securityadmin'then'securityadmin'When sl.serveradmin=1and DB_Roles.Roles='serveradmin'then'serveradmin'When sl.setupadmin=1and DB_Roles.Roles='setupadmin'then'setupadmin'When sl.processadmin=1and DB_Roles.Roles='processadmin'then'processadmin'When sl.diskadmin=1and DB_Roles.Roles='diskadmin'then'diskadmin'When sl.dbcreator=1and DB_Roles.Roles='dbcreator'then'dbcreator'When sl.bulkadmin=1and DB_Roles.Roles='bulkadmin'then'bulkadmin'else null end=DB_Roles.Rolesorder by2--select*from@loginUsersselect user1.loginName,STUFF((SELECT','+CONVERT(VARCHAR(500),serverRole)FROM@loginUsers user2WHEREuser1.loginName=user2.loginNameFOR XML PATH('')),1,1,'') AS serverRolefrom@loginUsers user1 group by user1.loginName order by user1.loginName3、数据库对应⽤户及⽤户拥有的数据库⾓⾊--完整DECLARE@DB_USers TABLE(DBName sysname, UserName sysname, LoginType sysname, AssociatedRole varchar(max),create_date datetime,modify_date datetime)INSERT@DB_USersEXEC sp_MSforeachdb'use [?]SELECT ''?'' AS DB_Name,case when ''dbo'' then + '' (''+ (select SUSER_SNAME(owner_sid) from master.sys.databases where name =''?'') + '')'' else end AS UserName,prin.type_desc AS LoginType,isnull(USER_NAME(mem.role_principal_id),'''') AS AssociatedRole ,create_date,modify_dateFROM sys.database_principals prinLEFT OUTER JOIN sys.database_role_members mem ON prin.principal_id=mem.member_principal_idWHERE prin.sid IS NOT NULL and prin.sid NOT IN (0x00) andprin.is_fixed_role <> 1 AND NOT LIKE ''##%'''SELECTdbname,username ,logintype ,create_date ,modify_date ,STUFF((SELECT','+CONVERT(VARCHAR(500),associatedrole)FROM@DB_USers user2WHEREuser1.DBName=user2.DBName AND erName=erNameFOR XML PATH('')),1,1,'') AS Permissions_userFROM@DB_USers user1--where dbname ='master' and username = 'public'GROUP BY dbname,username ,logintype ,create_date ,modify_dateORDER BY DBName,username--简单的declare@DB_USers table (DBName sysname, UserName sysname)insert@DB_USersexec sp_MSforeachdb'use [?]SELECT ''?'' AS DB_Name, AS UserNameFROM sys.database_principals prinLEFT OUTER JOIN sys.database_role_members mem ON prin.principal_id=mem.member_principal_id WHERE prin.sid IS NOT NULL and prin.sid NOT IN (0x00) andprin.is_fixed_role <> 1 AND NOT LIKE ''##%'''declare@DB_USers2table (DBName sysname, UserName sysname)insert@DB_USers2select dbname,username from@DB_USers group by dbname,usernameselect dbname,STUFF((SELECT','+CONVERT(VARCHAR(500),username)FROM@DB_USers2 user2WHEREuser1.DBName=user2.DBNameFOR XML PATH('')),1,1,'') AS usernamefrom@DB_USers2 user1 group by dbname order by dbname4、所有作业与计划SELECT[job].[job_id]AS'作业唯⼀标识符',[job].[name]AS'作业名称',[jstep].[step_uid]AS'步骤唯⼀标识符',[jstep].[step_id]AS'步骤编号',[jstep].[step_name]AS'步骤名称',CASE[jstep].[subsystem]WHEN'ActiveScripting'THEN'ActiveX Script'WHEN'CmdExec'THEN'Operating system (CmdExec)'WHEN'PowerShell'THEN'PowerShell'WHEN'Distribution'THEN'Replication Distributor'WHEN'Merge'THEN'Replication Merge'WHEN'QueueReader'THEN'Replication Queue Reader'WHEN'Snapshot'THEN'Replication Snapshot'WHEN'LogReader'THEN'Replication Transaction-Log Reader'WHEN'ANALYSISCOMMAND'THEN'SQL Server Analysis Services Command'WHEN'ANALYSISQUERY'THEN'SQL Server Analysis Services Query'WHEN'SSIS'THEN'SQL Server Integration Services Package'WHEN'TSQL'THEN'Transact-SQL script (T-SQL)'ELSE[jstep].[subsystem]END AS'作业步骤类型',CASEWHEN[px].[name]IS NULL THEN'SQL SERVER代理服务账户'ELSE[px].[name]END AS'步骤运⾏账户',[jstep].[database_name]AS'执⾏数据库名',[jstep].[command]AS'执⾏命令',CASE[jstep].[on_success_action]WHEN1THEN'退出报表成功的作业'WHEN2THEN'退出报告失败的作业'WHEN3THEN'转到下⼀步'WHEN4THEN'转到步骤: '+QUOTENAME(CAST([jstep].[on_success_step_id]AS VARCHAR(3))) +''+[sOSSTP].[step_name]END AS'执⾏成功后操作',[jstep].[retry_attempts]AS'失败时的重试次数',[jstep].[retry_interval]AS'重试间的等待时间(分钟)',CASE[jstep].[on_fail_action]WHEN1THEN'退出报告成功的作业'WHEN2THEN'退出报告失败的作业'WHEN3THEN'转到下⼀步'WHEN4THEN'转到步骤: '+QUOTENAME(CAST([jstep].[on_fail_step_id]AS VARCHAR(3))) +''+[sOFSTP].[step_name]END AS'执⾏失败后操作'FROM[msdb].[dbo].[sysjobsteps]AS[jstep]INNER JOIN[msdb].[dbo].[sysjobs]AS[job]ON[jstep].[job_id]=[job].[job_id]LEFT JOIN[msdb].[dbo].[sysjobsteps]AS[sOSSTP]ON[jstep].[job_id]=[sOSSTP].[job_id]AND[jstep].[on_success_step_id]=[sOSSTP].[step_id]LEFT JOIN[msdb].[dbo].[sysjobsteps]AS[sOFSTP]ON[jstep].[job_id]=[sOFSTP].[job_id]AND[jstep].[on_fail_step_id]=[sOFSTP].[step_id]LEFT JOIN[msdb].[dbo].[sysproxies]AS[px]--代理账户信息ON[jstep].[proxy_id]=[px].[proxy_id]ORDER BY[job].[name], [jstep].[step_id]gowith testtemp as(SELECTsch.job_id,--his.[server] as InstanceNameCONVERT(nvarchar(150),his.[server]) as InstanceName, as job_nameCONVERT(nvarchar(150),) as job_name,job.[enabled]as job_enabled, --schs.[name] AS [ScheduleName]CONVERT(nvarchar(150),schs.[name]) as ScheduleName, CASE schs.[enabled]WHEN1THEN'是'WHEN0THEN'否'else'未知'END AS[IsEnabled], CASEWHEN[freq_type]=64THEN'SQL Server代理启动时⾃动启动'WHEN[freq_type]=128THEN'CPU空闲时启动'WHEN[freq_type]IN (4,8,16,32) THEN'重复执⾏'WHEN[freq_type]=1THEN'One Time'else'unkown'END[ScheduleType], CASE[freq_type]WHEN1THEN'⼀次'WHEN4THEN'每天'WHEN8THEN'每周'WHEN16THEN'每⽉'WHEN32THEN'每⽉ - 相对频率间隔'WHEN64THEN'SQL Server代理启动时⾃动启动'WHEN128THEN'CPU空闲时启动'else'unkown'END[Occurrence], CASE[freq_type]WHEN4THEN'Occurs every '+CAST([freq_interval]AS VARCHAR(3)) +' day(s)'WHEN8THEN'Occurs every '+CAST([freq_recurrence_factor]AS VARCHAR(3))+' week(s) on '+CASE WHEN[freq_interval]&1=1THEN'Sunday'ELSE''END+CASE WHEN[freq_interval]&2=2THEN', Monday'ELSE''END+CASE WHEN[freq_interval]&4=4THEN', Tuesday'ELSE''END+CASE WHEN[freq_interval]&8=8THEN', Wednesday'ELSE''END+CASE WHEN[freq_interval]&16=16THEN', Thursday'ELSE''END+CASE WHEN[freq_interval]&32=32THEN', Friday'ELSE''END+CASE WHEN[freq_interval]&64=64THEN', Saturday'ELSE''ENDWHEN16THEN'Occurs on Day '+CAST([freq_interval]AS VARCHAR(3))+' of every '+CAST([freq_recurrence_factor]AS VARCHAR(3)) +' month(s)'WHEN32THEN'Occurs on '+CASE[freq_relative_interval]WHEN1THEN'First'WHEN2THEN'Second'WHEN4THEN'Third'WHEN8THEN'Fourth'WHEN16THEN'Last'END+''+CASE[freq_interval]WHEN1THEN'Sunday'WHEN2THEN'Monday'WHEN3THEN'Tuesday'WHEN4THEN'Wednesday'WHEN5THEN'Thursday'WHEN6THEN'Friday'WHEN7THEN'Saturday'WHEN8THEN'Day'WHEN9THEN'Weekday'WHEN10THEN'Weekend day'END+' of every '+CAST([freq_recurrence_factor]AS VARCHAR(3))+' month(s)'else'unknown'END AS[Recurrence], CASE[freq_subday_type]WHEN1THEN'Occurs once at '+STUFF(STUFF(RIGHT('000000'+CAST([active_start_time]AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':')WHEN2THEN'Occurs every '+CAST([freq_subday_interval]AS VARCHAR(3)) +' Second(s) between '+STUFF(STUFF(RIGHT('000000'+CAST([active_start_time]AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':')+' & '+STUFF(STUFF(RIGHT('000000'+CAST([active_end_time]AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':')WHEN4THEN'Occurs every '+CAST([freq_subday_interval]AS VARCHAR(3)) +' Minute(s) between '+STUFF(STUFF(RIGHT('000000'+CAST([active_start_time]AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':')+' & '+STUFF(STUFF(RIGHT('000000'+CAST([active_end_time]AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':')WHEN8THEN'Occurs every '+CAST([freq_subday_interval]AS VARCHAR(3)) +' Hour(s) between '+STUFF(STUFF(RIGHT('000000'+CAST([active_start_time]AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':')+' & '+STUFF(STUFF(RIGHT('000000'+CAST([active_end_time]AS VARCHAR(6)), 6), 3, 0, ':'), 6, 0, ':')else'unkown'END[Frequency],job.category_id,job.[description]as job_description,his.sql_message_id,his.sql_severity,his.[message]as job_message,his.run_status as last_run_status,job.date_created,'LastRunDateTime'=CASEWHEN his.run_date =0THEN nullELSE msdb.dbo.agent_datetime(his.run_date, his.run_time)END,'NextRunDateTime'=CASEWHEN sch.next_run_date =0THEN nullELSE msdb.dbo.agent_datetime(sch.next_run_date, sch.next_run_time)END,dateadd(second,(run_duration /10000*3600+ (run_duration /100) %100*60+ run_duration %100),msdb.dbo.agent_datetime(his.run_date, his.run_time)) as LastRunFinishDateTime ,((run_duration /10000*3600+ (run_duration /100) %100*60+ run_duration %100)) AS'RunDurationSeconds'FROM msdb..sysjobschedules AS schINNER JOIN msdb..sysjobs AS job ON sch.job_id = job.job_idinner join msdb..sysschedules as schs on sch.schedule_id=schs.schedule_idLEFT JOIN (select hi.*from msdb..sysjobhistory as hi inner join(select job_id,max(instance_id) as instance_idfrom msdb..sysjobhistory jh where jh.step_id =0GROUP BY jh.job_id) as jh on hi.job_id = jh.job_id and hi.instance_id = jh.instance_id) AS his ON his.job_id = job.job_id)selectisnull(job_id, null) as job_id,isnull(InstanceName,'')as InstanceName,isnull(job_name,'')as job_name,isnull(job_enabled,0) as job_enabled,isnull(ScheduleName,'')as ScheduleName,isnull(IsEnabled,'')as IsEnabled,isnull(ScheduleType, '')as ScheduleType,isnull(Occurrence, '')as Occurrence,isnull(Recurrence,'')as Recurrence,isnull(Frequency,'')as Frequency,isnull(category_id, 0)as category_id,isnull(job_description , '')as job_description,isnull(sql_message_id, 0)as sql_message_id,isnull(sql_severity,0)as sql_severity,isnull(job_message , '')as job_message,isnull(last_run_status,0)as last_run_status,isnull(date_created , '1900-01-01')as date_created,isnull(LastRunDateTime,'1900-01-01')as LastRunDateTime,isnull(NextRunDateTime,'1900-01-01')as NextRunDateTime,isnull(LastRunFinishDateTime,'1900-01-01')as LastRunFinishDateTime,isnull(RunDurationSeconds,0)as RunDurationSecondsfrom testtemp where job_name<>'syspolicy_purge_history'5、实例版本及配置信息SELECT@@version as[version]SELECT*FROM sys.configurations c6、获取所有数据库缺失的索引use[master]SELECTavg_total_user_cost * avg_user_impact * (user_seeks + user_scans)AS PossibleImprovement,equality_columns,included_columns,last_user_seek,last_user_scan,statement AS[Object],'CREATE INDEX [IX_'+CONVERT(VARCHAR,GS.Group_Handle) +'_'+CONVERT(VARCHAR,D.Index_Handle) +'_'+REPLACE(REPLACE(REPLACE([statement],']',''),'[',''),'.','') +']'+' ON '+[statement]+' ('+ISNULL (equality_columns,'')+CASE WHEN equality_columns IS NOT NULL AND inequality_columns ISNOT NULL THEN','ELSE''END+ISNULL (inequality_columns, '')+')'+ISNULL (' INCLUDE ('+ included_columns +')', '')AS Create_Index_SyntaxFROMsys.dm_db_missing_index_groups AS GINNER JOINsys.dm_db_missing_index_group_stats AS GSONGS.group_handle = G.index_group_handleINNER JOINsys.dm_db_missing_index_details AS DONG.index_handle = D.index_handleOrder By PossibleImprovement DESC7、获取⾼频⼤量被更新,但低频使⽤的索引SELECTDB_NAME() AS DatabaseName, SCHEMA_NAME(o.Schema_ID) AS SchemaName, OBJECT_NAME(s.[object_id]) AS TableName, AS IndexName, i.type_desc, er_updates, s.system_seeks + s.system_scans + s.system_lookupsAS[System usage]INTO #TempUnusedIndexesFROM sys.dm_db_index_usage_stats sINNER JOIN sys.indexes i ON s.[object_id]= i.[object_id]AND s.index_id = i.index_idINNER JOIN sys.objects o ON i.object_id= o.object_idWHERE1=2EXEC sp_MSForEachDB 'USE [?];INSERT INTO #TempUnusedIndexesSELECT TOP 20DB_NAME() AS DatabaseName, SCHEMA_NAME(o.Schema_ID) AS SchemaName, OBJECT_NAME(s.[object_id]) AS TableName, AS IndexName, i.type_desc, er_updates, s.system_seeks + s.system_scans + s.system_lookupsAS [System usage]FROM sys.dm_db_index_usage_stats sINNER JOIN sys.indexes i ON s.[object_id] = i.[object_id]AND s.index_id = i.index_idINNER JOIN sys.objects o ON i.object_id = o.object_idWHERE s.database_id = DB_ID()AND OBJECTPROPERTY(s.[object_id], ''IsMsShipped'') = 0AND er_seeks = 0AND er_scans = 0AND er_lookups = 0AND IS NOT NULLORDER BY er_updates DESC'SELECT*FROM #TempUnusedIndexes ORDER BY[user_updates]DESCDROP TABLE #TempUnusedIndexes8、获取默认Backup、DATA路径--仅测试:2008 R2、2012 可⽤-- 获取Backup路径EXECUTE[master].dbo.xp_instance_regread N'HKEY_LOCAL_MACHINE', N'SOFTWARE\Microsoft\MSSQLServer\MSSQLServer', N'BackupDirectory'-- 获取DATA路径,⽅式1SELECT SUBSTRING(physical_name, 1, CHARINDEX(N'master.mdf', LOWER(physical_name)) -1) FROM master.sys.master_filesWHERE database_id =1AND file_id=1-- 获取DATA路径,⽅式2use master --或指定的数据名declare@path varchar(8000)select@path=rtrim(reverse(filename)) from sysfilesset@path=reverse(substring(@path,charindex('\',@path),8000))select@path9、获取所有数据库连接会话SELECT*FROM[Master].[dbo].[SYSPROCESSES]WHERE[DBID]IN (SELECT [DBID]FROM [Master].[dbo].[SYSDATABASES])⼀个数据库下:1、所有架构:--仅⽤户创建的select as schema_name,s.schema_id, as schema_ownerfrom sys.schemas sinner join sys.sysusers uon u.uid = s.principal_idwhere u.issqluser =1and not in ('sys', 'guest', 'INFORMATION_SCHEMA')--所有select as schema_name,s.schema_id, as schema_ownerfrom sys.schemas sinner join sys.sysusers uon u.uid = s.principal_idorder by 2、所有⽤户:select name as username,create_date,modify_date,type_desc as type,authentication_type_desc as authentication_type, default_schema_namefrom sys.database_principalswhere type not in ('A', 'G', 'R', 'X')and sid is not nulland name != 'guest'order by username;3、所有表:select schema_name(t.schema_id) as schema_name, as table_name,t.create_date,t.modify_date,f.value as[description]from sys.tables t left join sys.extended_properties fon t.object_id=f.major_id and f.minor_id=0order by schema_name,table_name;4、所有表字段(2021-10-09,修正同表名、架构不同时结果重复的错误;2021-11-1;2021-11-24 获取设定的字段长度):select schema_name(tab.schema_id) as[schema_name], as table_name,col.column_id, as column_name, as data_type,(case cast(c.CHARACTER_MAXIMUM_LENGTH as varchar(6)) when '-1' then 'max' else cast(c.CHARACTER_MAXIMUM_LENGTH as varchar(6)) end) [data_length],col.max_length,col.precision,case when exists(SELECT1FROM sysobjects where xtype='PK'and name in(SELECT name FROM sysindexes WHERE indid in(SELECT indid FROM sysindexkeys WHERE id=col.object_id AND colid= col.column_id))) then1else0end is_identity,ep.value AS[description],c.COLLATION_NAME [collation],c.COLUMN_DEFAULT default_value,col.is_nullablefrom sys.tables as tabinner join sys.columns as col on tab.object_id= col.object_idleft join sys.types as t on er_type_id = er_type_id--2021-11-24 c.ORDINAL_POSITION = col.column_id 是错误的,当前表中字段有后来被删除的,c.ORDINAL_POSITION 是 1~n 的数字连续排序,但 col.column_id(列id唯⼀)不是连续数字--left join INFORMATION_SCHEMA.COLUMNS c on c.ORDINAL_POSITION = col.column_id and c.TABLE_NAME = and c.TABLE_SCHEMA = schema_name(tab.schema_id)left join INFORMATION_SCHEMA.COLUMNS c on c.COLUMN_NAME = and c.TABLE_NAME = and c.TABLE_SCHEMA = schema_name(tab.schema_id)left join sys.extended_properties ep on ep.major_id = col.object_id and ep.minor_id = col.column_id--left join INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc on tc.TABLE_NAME = and tc.TABLE_SCHEMA = schema_name(tab.schema_id) --此脚本中未⽤到此句,仅屏蔽,作为笔记--left join INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE cc on cc.CONSTRAINT_NAME=tc.CONSTRAINT_NAME and cc.TABLE_SCHEMA = schema_name(tab.schema_id) --此脚本中未⽤到此句,仅屏蔽,作为笔记--where schema_name(tab.schema_id)+'.'+ = 'dbo.Table1' --可根据实际情况使⽤where语句order by schema_name, table_name, column_id;5、所有表、视图索引:select i.[name]as index_name,substring(column_names, 1, len(column_names)-1) as[columns],case when i.[type]=1then'Clustered index'when i.[type]=2then'Nonclustered index'when i.[type]=3then'XML index'when i.[type]=4then'Spatial index'when i.[type]=5then'Clustered columnstore index'when i.[type]=6then'Nonclustered columnstore index'when i.[type]=7then'Nonclustered hash index'end as index_type,case when i.is_unique =1then'Unique'else'Not unique'end as[unique],schema_name(t.schema_id) +'.'+ t.[name]as table_view,case when t.[type]='U'then'Table'when t.[type]='V'then'View'end as[object_type]from sys.objects tinner join sys.indexes ion t.object_id= i.object_idcross apply (select col.[name]+', 'from sys.index_columns icinner join sys.columns colon ic.object_id= col.object_idand ic.column_id = col.column_idwhere ic.object_id= t.object_idand ic.index_id = i.index_idorder by key_ordinalfor xml path ('') ) D (column_names)where t.is_ms_shipped <>1and index_id >0order by i.[name]6、所有表触发器:select as trigger_name,schema_name(tab.schema_id) +'.'+ as[table],case when is_instead_of_trigger =1then'Instead of'else'After'end as[activation],(case when objectproperty(trg.object_id, 'ExecIsUpdateTrigger') =1 then'Update 'else''end+case when objectproperty(trg.object_id, 'ExecIsDeleteTrigger') =1 then'Delete 'else''end+case when objectproperty(trg.object_id, 'ExecIsInsertTrigger') =1 then'Insert'else''end) as[event],case when trg.parent_class =1then'Table trigger'when trg.parent_class =0then'Database trigger'end[class],case when trg.[type]='TA'then'Assembly (CLR) trigger'when trg.[type]='TR'then'SQL trigger'else''end as[type],case when is_disabled =1then'Disabled'else'Active'end as[status],object_definition(trg.object_id) as[definition]from sys.triggers trgleft join sys.objects tabon trg.parent_id = tab.object_idorder by ;7、所有视图:SELECT schema_name, ,m.definitionFROM sys.sql_modules AS minner join sys.all_objects AS o ON m.object_id= o.object_idinner join sys.schemas as sch on sch.schema_id = o.schema_id WHERE o.[type]='v'8、所有视图及其列:select schema_name(v.schema_id) as schema_name,object_name(c.object_id) as view_name,c.column_id, as column_name,type_name(user_type_id) as data_type,c.max_length,c.precisionfrom sys.columns cjoin sys.views von v.object_id= c.object_idorder by schema_name,view_name,column_id;9、所有存储过程:SELECT schema_name, proc_name,m.definitionFROM sys.sql_modules AS mINNER JOIN sys.all_objects AS o ON m.object_id= o.object_idinner join sys.schemas as sch on sch.schema_id = o.schema_id WHERE o.[type]='p'10、所有存储过程及其参数:SELECTSCHEMA_NAME(SCHEMA_ID) AS[Schema], AS[ObjectName],SO.Type_Desc AS[ObjectType (UDF/SP)],P.parameter_id AS[ParameterID], AS[ParameterName],TYPE_NAME(er_type_id) AS[ParameterDataType],P.max_length AS[ParameterMaxBytes],P.is_output AS[IsOutPutParameter]FROM sys.objects AS SOINNER JOIN sys.parameters AS P ON SO.OBJECT_ID= P.OBJECT_ID WHERE so.type ='P'ORDER BY[Schema], , P.parameter_idGO11、所有函数:SELECT schema_name, func_name,m.definitionFROM sys.sql_modules AS mINNER JOIN sys.all_objects AS o ON m.object_id= o.object_idinner join sys.schemas as sch on sch.schema_id = o.schema_id WHERE o.[type]in ('FN', 'IF', 'TF')12、所有函数及其参数:SELECTSCHEMA_NAME(SCHEMA_ID) AS[Schema], AS[ObjectName],SO.Type_Desc AS[ObjectType (UDF/SP)],P.parameter_id AS[ParameterID], AS[ParameterName],TYPE_NAME(er_type_id) AS[ParameterDataType],P.max_length AS[ParameterMaxBytes],P.is_output AS[IsOutPutParameter]FROM sys.objects AS SOINNER JOIN sys.parameters AS P ON SO.OBJECT_ID= P.OBJECT_ID WHERE so.type in ('FN', 'IF', 'TF')ORDER BY[Schema], , P.parameter_idGO13、当前数据库所有⽂件SELECT dbf.file_id AS FileID, AS[LogicName], s.filename AS PhysFileFullName, SUBSTRING(s.filename,1,len(s.filename)-CHARINDEX('\',REVERSE(s.filename)))+'\'as[PhysPath], replace(s.filename,SUBSTRING(s.filename,1,len(s.filename)-CHARINDEX('\',REVERSE(s.filename)))+'\','') as[PhysFileName], CAST(dbf.size/128.0AS DECIMAL(19,2)) AS FileSizeMB, CAST(CAST(FILEPROPERTY(, 'SpaceUsed') AS int)/128.0AS DECIMAL(19,2)) AS SpaceUsedMB, CAST(dbf.size/128.0-CAST(FILEPROPERTY(, 'SpaceUsed') AS int)/128.0AS DECIMAL(19,2)) AS AvailableSpaceMB, CAST((dbf.size /128.0- (FILEPROPERTY(, 'SpaceUsed') /128.0)) / (dbf.size /128.0) *100AS DECIMAL(19,2)) AS[%FreeSpace] , dbf.growth /128AS FileGrowthMB, AS FilegroupNameFROM sys.database_files dbfINNER JOIN sys.sysfiles s ON = LEFT JOIN sys.filegroups f ON dbf.data_space_id = f.data_space_idORDER BY ;14、表占⽤空间⼤⼩信息select schema_name(tab.schema_id) +'.'+ as[table],cast(sum(ed_pages *8)/1024.00as numeric(36, 2)) as UsedSpace_MB, --占⽤磁盘空间⼤⼩cast(sum(spc.total_pages *8)/1024.00as numeric(36, 2)) as Allocated_MB --分配磁盘空间⼤⼩from sys.tables tabinner join sys.indexes indon tab.object_id= ind.object_idinner join sys.partitions parton ind.object_id= part.object_id and ind.index_id = part.index_idinner join sys.allocation_units spcon part.partition_id = spc.container_idwhere schema_name(tab.schema_id) +'.'+ ='{$$TableName}'group by schema_name(tab.schema_id) +'.'+ order by sum(ed_pages) desc15、表分区字段select partition_columnfrom sys.tables tjoin sys.indexes ion(i.object_id= t.object_idand i.index_id <2)join sys.index_columns icon(ic.partition_ordinal >0and ic.index_id = i.index_id and ic.object_id= t.object_id)join sys.columns con(c.object_id= ic.object_idand c.column_id = ic.column_id)where t.object_id=object_id('dbo.table1')16、检查数据库是否存在错误(对于巨⼤数据库,执⾏时间可能持续若⼲⼩时):DECLARE@tbDbcc Table ([Error][int]NULL,[Level][int]NULL,[State][int]NULL,[MessageText][varchar](max) NULL,[RepairLevel][varchar](200) NULL,[Status][int]NULL,[DbId][int]NULL,[DbFragId][int]NULL,[ObjectId][int]NULL,[IndexId][int]NULL,[PartitionID][bigint]NULL,[AllocUnitID][bigint]NULL,[RidDbtId][int]NULL,[RidDPrutId][int]NULL,[File][int]NULL,[Page][int]NULL,[Slot][int]NULL,[RefDbId][int]NULL,[RefPruId][int]NULL,[RefFile][int]NULL,[RefPage][int]NULL,[RefSlot][int]NULL,[Allocation][int]NULL)INSERT INTO@tbDbcc ([Error], [Level], [State], MessageText, RepairLevel, [Status], [DbId], [DbFragId], [ObjectId], [IndexId], PartitionId, AllocUnitId, [RidDbtId], [RidDPrutId] ,[File], [Page], Slot,[RefDbId], [RefPruId], RefFile, RefPage, RefSlot,Allocation)EXEC ('DBCC CHECKDB(''指定的数据库名'') WITH TableResults')select*from@tbDbcc where[RepairLevel]is not null。
SqlServer获取数据库名,表信息,字段信息,主键信息等
SqlServer获取数据库名,表信息,字段信息,主键信息等--Sql Server获取数据库名,表信息,字段信息,主键信息等--获取所有数据库名:SELECT name FROM master..sysdatabases WHERE name NOT IN ( 'master', 'model', 'msdb', 'tempdb', 'northwind','pubs' )--获取某数据库的所有表:SELECT name FROM 数据库名..sysobjects Where xtype='U' ORDER BY name--获取所有表名--XType='U':表⽰所有⽤户表;--XType='S':表⽰所有系统表;--获取某表所有字段名:SELECT * FROM syscolumns WHERE id=Object_Id('表名')--获取数据库所有类型select name from systypes--获取某表的主键字段SELECT name FROM syscolumns WHERE id=Object_Id('表名') and colid IN(SELECT keyno from sysindexkeys WHERE id=Object_Id('表名'))--存储过程获取主键exec sp_helpindex 表名--获取字段类型select as [column], as type from syscolumns a,systypes b where a.id=object_id('表名') and a.xtype=b.xtype--或者可以通过存储过程exec sp_help 表名--取表结构SELECT c.TABLE_SCHEMA ,c.TABLE_NAME ,c.COLUMN_NAME ,c.DATA_TYPE ,c.CHARACTER_MAXIMUM_LENGTH ,c.COLUMN_DEFAULT ,c.IS_NULLABLE ,c.NUMERIC_PRECISION ,c.NUMERIC_SCALEFROM [INFORMATION_SCHEMA].[COLUMNS] cWHERE TABLE_NAME = '表名'。
使用sql语句获取数据库表的信息
使⽤sql语句获取数据库表的信息下⾯的sql语句可以查看表的信息。
其中modify_date和create_date可以根据表的修改时间来查看。
如果不需要删除后,就能看到所有表的字段信息SELECT TOP (100) PERCENT AS表名, ISNULL(f.value, '') AS表说明, AS字段名, CASE WHEN EXISTS(SELECT1FROM sysobjectsWHERE xtype ='PK'AND name IN(SELECT nameFROM sysindexesWHERE indid IN(SELECT indidFROM sysindexkeysWHERE id = a.id AND colid = a.colid))) THEN'是'ELSE'否'END AS主键, AS类型, a.length AS占⽤字节数, COLUMNPROPERTY(a.id, , 'PRECISION') AS长度, ISNULL(COLUMNPROPERTY(a.id, , 'Scale'), 0) AS⼩数位数,CASE WHEN a.isnullable =1THEN'是'ELSE'否'END AS允许空, ISNULL(e.text, '') AS默认值, ISNULL(g.value, '') AS字段说明FROM sys.syscolumns AS a LEFT OUTER JOINsys.systypes AS b ON a.xusertype = b.xusertype INNER JOINsys.sysobjects AS d ON a.id = d.id AND d.xtype ='U'AND <>'dtproperties'LEFT OUTER JOINsys.syscomments AS e ON a.cdefault = e.id LEFT OUTER JOINsys.extended_properties AS g ON a.id = g.major_id AND a.colid = g.minor_id LEFT OUTER JOINsys.extended_properties AS f ON d.id = f.major_id AND f.minor_id =0WHERE ( IN((SELECT nameFROM sys.tablesWHERE (modify_date >='2016-12-01') AND (create_date >='2016-12-01'))))ORDER BY a.id, a.colorder。
获取SQL_Server中的所有数据库用户,数据表,列,备注说明,主外键
获取SQL_Server中的所有数据库用户,数据表,列,备注说明,主外键获取SQL Server中的所有数据库,数据表,列,备注说明在MS SQL Server中,可通过如下语句查询相关系统信息,如:使用:Select name from sysobjects where xtype=’U’;可得到所有用户表的名称;------------------------------------Select name from sysobjects where xtype=’S’;得到所有系统表的名称;相应的,使用:Select count(*)-1 from sysobjects where xtype=’U’;得到用户表的张数。
上面之所以要减1,是因为在SQLServer2000中,有一系统表:dtproperties被标记为了用户表,这或许是SQLServer2000中的一个BUG,在2005中,就不存在该表了,而是用表:sysdiagram代替,该表是用来存储数据关系图可通过:Select @@version;查询数据库的版本------------------------------------------------在SQL Server2000下sysproperties表中的type=3表示当前的对象是"表",type=4表示是"字段"在SQL Server2005下表中的minor_id=0表示当前的对象是"表",minor_id> 0表示是"字段"可通过如下语句提取用户表的描述或列的描述,该描述全放在一个叫做sysproperties的系统表中select ,from sysproperties,sysobjectswhere =and ='MS_Description'and ='3'order by在该表中,id 列与sysobjects中的id列是对应的,当该表的type值为3时,是对表的描述,为4,是对列的描述……………………………………………………………………………………………………--1.获取所有数据库名:SELECT Name FROM ORDER BY Name--2.获取所有表名:SELECT Name FROM ..SysObjects Where XType='U' ORDER BY Name--XType='U':表示所有用户表;--XType='S':表示所有系统表;--3.获取所有字段名及说明:(Server2000)SELECT ,sysproperties.[value] AS CommentFROM sysproperties INNER JOIN sysobjects ON =INNER JOIN syscolumns ON = AND =WHERE = 4) AND = 'message')--------------------------------------------------------------------------------------获取表中字段信息(主外键,字段名,数据类型,字段长度,列说明)select(case when is null then '' else 'PK' end) +(case when is null then ''when NOT is null then ',FK' else 'FK' end) as [主/外键],as 字段名称,DATA_TYPE as DataType,(case when CHARACTER_MAXIMUM_LENGTH is null then '' else CAST(CHARACTER_MAXIMUM_LENGTH as varchar(50)) end) as 字段长度,--(case when is null then '' else end) AS 字段说明,*ISNULL (CAST(coldesc.[value] AS nvarchar(50)) , '') AS 字段说明from as colLEFT OUTER JOIN(select COLUMN_NAME,TABLE_NAME FROMKeyColLEFT OUTER JOIN RefCol ON= AND=WHERE IS NULL) PKeyColON = AND =LEFT OUTER JOINKeyCol2INNER JOIN RefCol2 ON= AND=ON = AND =LEFT OUTER JOIN ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', "+tableName+", 'column', default) as coldescON = COLLATE Chinese_PRC_CI_ASwhere ="+tableName+"将"+tableName+"换成你要查询的表名就可以了--------------------------------------------获取表中所有信息,没有字段说明exec sp_columns " + tableName + "----------------------------------------------获取表中主键的字段select COLUMN_NAME AS KeyName FROM KeyCol LEFT OUTER JOIN RefCol ON = AND = WHERE IS NULL AND ="+tableName+"-------------------------------------------------------获取表中字段的信息(列名称,数据类型,长度,字段说明)select as FieldName,DATA_TYPE as DataType,(case when CHARACTER_MAXIMUM_LENGTH is null then '' else CAST(CHARACTER_MAXIMUM_LENGTH as varchar(50)) end) as FieldLength,ISNULL (CAST(coldesc.[value] AS nvarchar(50)) , '') AS FieldExplain from as col LEFT OUTER JOIN ::fn_listextendedproperty (NULL, 'user', 'dbo', 'table', " + tableName +", 'column', default) as coldesc ON = COLLATE Chinese_PRC_CI_AS where =" + tableName + "----------------------------------获取数据库文件信息:select*from----------------------------------------------可以使用内置的存储过程sp_MShelpcolumns查询表的结构。
oraclemysqlsqlserver查看当前所有数据库及数据库基本操作命令
oraclemysqlsqlserver查看当前所有数据库及数据库基本操作命令oracle mysql sqlserver 查看当前所有数据库及数据库基本操作命令1.oracle(1)启动监听lsnrctl start;(2)进入sqlplus界面sqlplus /nologSQL>conn sys/jiaxiaoai@orcl as sysdba;(3)启动数据库实例SQL>startup;(4)查看当前所有的数据库select * from v$database;或select name from v$database;(5)查看哪些用户拥有sysdba、sysoper权限select * from V_$PWFILE_USERS;show user;查看当前数据库连接用户(6)进入某个数据库:database 数据库名;查看数据库结构:desc v$database;(7)查看所有用户实例:select * from v$instance;或select instance_name from v$instance;(8)查看当前库的所有数据表select * from all_tables;select table_name from all_tables;select table_name from user_tables;select table_name from all_tables where owner='用户名';(9)查看表结构desc 表名;(10)增加数据库用户create user 用户名identified by 密码default tablespace users Temporary TAB LESPACE Temp;(11)用户授权grant connect,resource,dba to 用户名;grant sysdba to 用户名;(12)更改数据库用户密码alter user 用户名identified by 密码;2.mysql(1)显示所有数据库show database;(2)显示所有表show tables;(3)显示表结构desc 表名;3.sqlserver查询所有表:select * from sysobjects where xtype=“U”。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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 Name3.获取所有表名SELECT Name FROM DatabaseName..SysObjects Where XType='U' ORDER BY NameXType='U':表示所有用户表;XType='S':表示所有系统表;4.获取所有字段名:SELECT Name FROM SysColumns WHERE id=Object_Id('TableName')5.获取数据库所有类型select name from systypes6.获取主键字段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 Name2.获取所有表名:(1)、Select Name FROM SysObjects Where XType='U' orDER BY NameXType='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.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 FROMsyscolumns,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 = 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.length from syscolu mnsleft join systypes on syscolumns. xusertype =systypes. xusertype where id=(select id from sysobjects where name='订货主档');go;或者用这样的写法,执行结果一样:select , , syscolumns.length from syscolu mns,systypeswhere(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 30select , , syscolumns.length from syscolu mnsleft join systypes on syscolumns.xtype=systypes.xtypewhere 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 syscolumnsleft join systypes on syscolumns.xusertype=systypes.xusertypewhere id=(select id from sysobjects where name='DepartmentSalaryInf o');goexec sp_procedure_params_rowset @procedure_name ='Department SalaryInfo';go执行结果:北风贸易 dbo DepartmentSalaryInfo;1 @RETURN_VALUE 0 4 0 NULL 0 3 NULL NULL 10 NULL NULL int int北风贸易 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.length from syscolumns left join systypes on syscolumns.xusertype=systypes.xusertypewhere id=(select id from sysobjects where name='DepartmentSalaryInfo');。