MS-SQL Server数据库开发中技巧总结

数据库 SQL Server
我们今天是要和大家一起讨论的是MS-SQL Server数据库开发中精典技巧,以下的文章将会给你相应实际应用方案,以下就是相关内容的具体描述。

我们今天是要和大家一起讨论的是MS-SQL Server数据库开发中精典技巧,我们大家都知道MS-SQL Server数据库在实际应用中是经常出现的,所以MS-SQL Server数据库开发中精典技巧也是备受关注的。

1.按姓氏笔画排序:

 

 

  1. Select * From TableName Order By CustomerName Collate Chinese_PRC_Stroke_ci_as 

 

2.MS-SQL Server数据库加密:

select encrypt('原始密码')

 

select pwdencrypt('原始密码')

 

select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同 encrypt('原始密码')

 

select pwdencrypt('原始密码')

 

select pwdcompare('原始密码','加密后密码') = 1--相同;否则不相同

 

3.取回表中字段:

 

  1. declare @list varchar(1000),@sql nvarchar(1000)   
  2. select @list=@list+','+b.name from sysobjects a,syscolumns b where a.id=b.id and a.name='表A' 
  3. set @sql='select '+right(@list,len(@list)-1)+' from 表A'   
  4. exec (@sql) 

4.查看硬盘分区:

  1. EXEC master..xp_fixeddrives 

5.比较A,B表是否相等:

  1. if (select checksum_agg(binary_checksum(*)) from A)  
  2. =  
  3. (select checksum_agg(binary_checksum(*)) from B)  
  4. print '相等'  
  5. else  
  6. print '不相等' 

6.杀掉所有的事件探察器进程:

  1. DECLARE hcforeach CURSOR GLOBAL FOR SELECT 'kill '+RTRIM(spid) FROM master.dbo.sysprocesses  
  2. WHERE program_name IN('SQL profiler',N'SQL 事件探查器')  
  3. EXEC sp_msforeach_worker '?'  
  4. 'www.knowsky.com 

 

7.记录搜索:

 

开头到N条记录

 

Select Top N * From 表

 

 

N到M条记录(要有主索引ID)

 

Select Top M-N * From 表 Where ID in (Select Top M ID From 表) Order by ID Desc

 

 

N到结尾记录

 

 

  1. Select Top N * From 表 Order by ID Desc 

 

8.如何修改数据库的名称:

 

  1. sp_renamedb 'old_name', 'new_name' 

 

9:获取当前MS-SQL Server数据库中的所有用户表

 

  1. select Name from sysobjects where xtype='u' and status>=0 

 

10:获取某一个表的所有字段

 

  1. select name from syscolumns where id=object_id('表名') 

 

11:查看与某一个表相关的视图、存储过程、函数

 

  1. select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%' 

 

SQL Server的内存会不断增加敬业的IT人 2008-2-28 0:34:08 当 SQL Server 数据库引擎在 Microsoft® Windows NT® 或 Windows® 2000 上运行时,其默认内存管理行为并不是获取特定的内存量,而是在不产生多余换页 I/O 的情况下获取尽可能多的内存。为此,数据库引擎获取尽可能多的可用内存,同时保留足够的可用内存以防操作系统交换内存。

SQL Server 实例在启动时通常获取 8 到 12 MB 的内存以完成初始化过程。当实例完成初始化后,就不会再获取更多的内存,直到用户连接到该实例并开始产生工作负荷。这时,该实例根据需要不停地获取内存以支持工作负荷。

随着更多的用户连接并运行查询,SQL Server 将获取支持需求所需的额外内存。该实例将继续获取内存直到达到自身的内存分配目标,并且直到达到该目标的下限才会释放任何内存。

 

为了在不产生多余换页 I/O 的情况下获取尽可能多的内存,SQL Server 的每个实例都设置一个内存获取目标,直到计算机的可用物理内存在 4 MB 到 10 MB 的范围内。之所以选择该范围是因为测试表明 Windows NT 和 Windows 2000 都有最小内存交换,直到内存分配等于可用物理内存减去 4 MB。

工作负荷处理任务重的 SQL Server 实例保留的可用物理内存为范围的较低端 (4 MB);工作负荷处理任务轻的实例保留的可用物理内存为范围的较高端 (10 MB)。

SQL Server 实例的目标随工作负荷的改变而变化。当更多的用户连接并产生更多的工作时,该实例倾向于获取更多的内存以使可用的内存保持在 4 MB 的限制以下。当工作负荷减轻时,该实例将其目标调整为 10 MB 的可用空间,并释放内存给操作系统。将可用空间量保持在 10 MB 与 4 MB 之间可防止 Windows NT 或 Windows 2000 过多执行换页操作,同时使 SQL Server 得以获得尽可能最大的高速缓冲存储器而不至引起额外的交换。

实例的目标内存设置与MS-SQL Server数据库缓冲池的页相对于可用池大小的需求有关。在任何即时点,缓冲区页的总需求取决于满足所有当前执行的查询所需的数据页数。如果相对于高速缓冲存储器内的页数,数据页的需求很大,则当前在缓冲区内的每一页很可能在相对较短的时间内由新页替换。

这可由"缓冲区管理器"对象的"页生命期"性能计数器来度量。对于相对较小的缓冲区有较高需求的情况将生成短生命期,而纯粹的影响就是使 I/O 增加,因为在页可由多个逻辑读取引用之前往往要被重写。为减轻这个问题,数据库引擎可以获取更多的内存以增加高速缓冲存储器的大小。当页生命期长时,数据库引擎将可用内存定位于目标的高端 (10 MB);而当页生命期短时,数据库引擎定位于目标范围的低端 (4 MB)。

随着其它应用程序在运行 SQL Server 实例的计算机上启动,它们消耗内存致使可用物理内存量降到 SQL Server 的目标以下。SQL Server 实例于是从其地址空间释放足够内存,以使可用内存量回到 SQL Server 的目标。

如果有其它应用程序停止运行而使可用内存增多,SQL Server 实例将增加其内存分配大小。SQL Server 可以每秒释放并获取几 MB 字节的内存,这使它得以根据内存分配变化作出快速调整。

你可以通过设置允许SQL Server可以使用的最大内存来做限制:

最小和最大服务器内存的影响

min server memory 和 max server memory 配置选项建立由 SQL Server 数据库引擎使用的内存量的上限和下限。数据库引擎并不立即获取 min server memory 中指定的内存量。数据库引擎启动时只使用初始化所需的内存。

随着数据库引擎工作负荷的增加,它将继续获取支持工作负荷所需的内存。MS-SQL Server数据库引擎直到到达 min server memory 中指定的内存量才会释放任何所需的内存。一旦到达 min server memory,数据库引擎将使用标准算法(使操作系统的可用内存保持在 4 MB 到 10 MB 之间)获取和释放所需内存。唯一的区别是数据库引擎从不将内存分配降到 min server memory 所指定的水平下,也从不获取超过max server memory 所指定水平的内存。

 

数据库引擎获取的内存量完全取决于放置在实例上的工作负荷。不处理很多请求的 SQL Server 实例可能永远达不到 min server memory。

如果为 min server memory 和 max server memory 指定相同的值,则一旦分配给数据库引擎的内存达到该值,数据库引擎将停止动态释放和获取内存。

如果在运行 SQL Server 实例的计算机上频繁启动或停止其它应用程序,启动这些应用程序所需的时间可能会因 SQL Server 实例分配和释放内存而延长。另外,如果 SQL Server 是几个在一台计算机上运行的服务器应用程序中的一个,系统管理员可能需要控制分配给 SQL Server 的内存量。在这些情况下,可以使用 min server memory 和 max server memory 选项控制 SQL Server 可以使用的内存量。

 

何设置固定的内存量(企业管理器)

 

设置固定的内存量

 

展开一个服务器组。

 

右击一个服务器,再单击"属性"。

 

 

单击"内存"选项卡。

 

 

单击"使用固定的内存大小 (MB)",然后将固定内存滑块放在适当的位置。

 

 

说明 如果使用默认设置,则 Microsoft® SQL Server™ 将动态配置内存。

 

 

这是由SQL Server的内存管理机制决定的

 

12:查看当前MS-SQL Server数据库中所有存储过程

select name as 存储过程名称 from sysobjects where xtype='P'

 

13:查询用户创建的所有数据库

 

  1. select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa'

 

或者

 

 

  1. select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01 

 

14:查询某一个表的字段和数据类型

 

  1. select column_name,data_type from information_schema.columns 

 

where table_name = '表名'

 

[n].[标题]:

 

  1. Select * From TableName Order By CustomerName 

 

[n].[标题]:

 

  1. Select * From TableName Order By CustomerName  

 

上述的相关内容就是对MS-SQL Server数据库开发精典技巧的描述,希望会给你带来一些帮助在此方面。

【编辑推荐】

  1. 三种SQL Server 恢复模式的比较
  2. 造成SQL Server查询速度慢的10种原因
  3. SQL Server分布式数据库的优点与缺点
  4. SQL Server数据库的分布式数据库系统的终极目标
  5. 正确解决SQL Server警报问题
责任编辑:佚名 来源: 赛迪网
相关推荐

2011-03-21 10:13:31

Sql Server数分区

2009-07-06 21:20:34

SQL Server数

2010-07-22 13:59:14

MS SQL Serv

2011-03-08 09:27:34

SQL Server数死锁

2010-07-15 17:28:50

SQL Server

2009-03-11 15:40:20

2010-07-12 15:49:53

MS SQL Serv

2010-06-01 10:58:57

MySQL数据库

2011-03-28 17:12:36

sql server数优化

2011-08-29 14:17:10

SQL Serverdefault val

2010-03-16 10:12:40

SQL Server

2011-03-30 13:24:23

SQL Server数故障修复

2010-07-01 11:49:13

SQL Server

2015-04-14 15:24:01

SQL ServerOLAPDBA

2010-07-08 11:05:14

SQL Server数

2011-07-26 17:19:32

SQL Server数随机抽取数据

2010-11-29 11:51:59

Sybase数据库维护

2021-05-17 06:57:34

SQLServer数据库

2011-04-06 11:16:47

SQL Server数查询优化

2010-06-30 08:27:45

SQL Server数
点赞
收藏

51CTO技术栈公众号