SQL server 的系统环境变量-

   好久没看SQL SERVER  2000,以为不会再用,然上次笔试,题多,竟不能答,遂有下文.
先复习一下系统环境变量:
1   @@CONNECTIONS返回自上次启动 Microsoft SQL Server以来连接或试图连接的次数。 
返回类型 integer
示例:SELECT GETDATE() AS 'Todays Date and Time',
   @@CONNECTIONS AS 'Login Attempts'
返回:
Today's Date and Time              Login Attempts
---------------------------        ---------------
2008-02-19 15:53:20.340            22
2  @@CPU_BUSY返回自上次启动 Microsoft SQL Server以来 CPU 的工作时间,单位为毫秒(基于系统计时器的分辨率)。
返回类型integer
示例:
显示了到当前日期和时间为止 SQL Server CPU 的活动。
SELECT @@CPU_BUSY AS 'CPU ms', GETDATE() AS 'As of'
返回:
CPU ms               As of
-----------------    ---------------------------
153                 2008-02-19 15:56:39.077
3 @@VERSION返回类型nvarchar
注释
@@VERSION 返回的信息与 xp_msver 存储过程返回的产品名、版本、平台和文件数据相似,但 xp_msver 存储过程提供更详细的信息。
示例
下面的示例返回当前安装的日期、版本和处理器类型。
SELECT @@VERSION
说明一下serverproperty:

SELECT  SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'),  SERVERPROPERTY ('edition'),SERVERPROPERTY(N'Collation')



4 @@TEXTSIZE返回 SET 语句 TEXTSIZE 选项的当前值,它指定 SELECT 语句返回的 text 或 image 数据的最大长度,以字节为单位。
返回类型integer
SELECT @@TEXTSIZE
SET TEXTSIZE 2048
SELECT @@TEXTSIZE
5 @@servicename 返回值NVARCHAR
select @@servicename

6 更新数据库类型和数据库内容

use pubs
alter table authors alter column state varchar(80)
update authors
set state='china' where au_id='172-32-1176'
select * from authors
use pubs
select au_id as 作者ID ,firstname=
case au_fname
when
 'c' then 'cheng'
 else 'not find'
end,
city as 城市
from authors
7 timestamp类型

SQL Server timestamp 数据类型与时间和日期无关。SQL Server timestamp 是二进制数字,它表明数据库中数据修改发生的相对顺序。实现 timestamp 数据类型最初是为了支持 SQL Server 恢复算法。每次修改页时,都会使用当前的 @@DBTS 值对其做一次标记,然后 @@DBTS 加1。这样做足以帮助恢复过程确定页修改的相对次序,但是 timestamp 值与时间没有任何关系。

二 系统函数&视图
数据库文件大小相关:

exec sp_helpdb
exec sp_heldb  'master' --取出databaseid
sys.master_files   -- 在视图里查详细信息
select database_id,file_id,type_desc,name,physical_name,state_desc,growth,size/128 as 'size(MB)',max_size/128  as 'max_siz(MB)' from sys.master_files where database_id='8'
sys.database_files  
--没有
sys.indexes    --在存在二进制数据时统计信息不准备
sp_spaceused   --
表大小相关,这里贴几个常用的分析sql,第一个是sp_spaceused对表的取法
SELECT  OBJECT_NAME(object_id),
        
SUM (reserved_page_count)*8/1024 as 'reserved(MB)',
         
SUM (used_page_count)*8/1024 as 'used(MB)',
         
SUM (
            
CASE
                
WHEN (index_id < 2THEN (in_row_data_page_count + lob_used_page_count + row_overflow_used_page_count)
                
ELSE lob_used_page_count + row_overflow_used_page_count
            
END
            )
*8/1024 as 'pgaes(Mb)',
    
SUM (
            
CASE
                
WHEN (index_id < 2THEN row_count
                
ELSE 0
            
END
            ) 
as 'ROWS'
    
FROM sys.dm_db_partition_stats  where left(object_name(object_id),3)<>'sys'
    
group by object_Id  order by rows
这个就是用sp_spaceused
declare @sql varchar(2000),@count int ,@maxbh int,@name varchar(200)
set @count=0
create table #tmp_cxf1
(name 
varchar(100),rows char(30),reserved char(40),data char(40),index_size varchar(40),unused char(30))
--
create table #tmp_cxf  (i int identity(0,1),name varchar(300))
insert into #tmp_cxf 
select name  from sys.objects where type='u' 
--
select  @maxbh=max(i) from #tmp_cxf
while @count<@maxbh
begin
  
select @name=name from #tmp_cxf where i=@count
  
set @sql='exec sp_spaceused'
   
set @sql=@sql+''''+@name+''''
  
--select @sql
  insert into #tmp_cxf1 exec(@sql
  
set @count=@count+1
end 
--取大于100mb的表的大小
select convert(int,replace(rtrim(data),'kb',''))/1024 as mb,* from #tmp_cxf1 where convert(int,replace(rtrim(data),'kb',''))/1024>100
drop table #tmp_cxf,#tmp_cxf1

--这个有lob对像不准
select object_name(id)                 as tablename,
8*reserved/1024                        as reserved,
rtrim(8*dpages/1024)+'mb'              as used,
8*(reserved-dpages)/1024               as unused,
8*dpages/1024-rows/1024*minlen/1024    as free, rows
from sysindexes 
where indid=1  
and rtrim(8*dpages/1024>=100           /*已使用大于mb*/
or  rows >=5000000                       /*行数大于万行*/
order by reserved desc 

三sqlserver用户管理
建立用户:

create login qdb with password='test';
use qdb
create user qdb for login qdb with default_schema=qdb;
grant create procedure,create view to qdb  
--删除用户
drop user qdb
drop login qdb
--创建角色   

create role ProgramerRole   
 --用于创建 存储过程 视图   
grant create procedure,create view to ProgramerRole   
--execute用以执行存储过程,alter用以创建、修改存储过程和视图,   
--并可以新建立表,但不能修改表,但也可以删除表和对表改名了  
 grant update,delete,select,insert,execute,alter on schema::dbo to ProgramerRole   
 --用于允许用户查看 显示估计的执行计划(081205)   
grant showplan to ProgramerRole   
--将用户TestUser添加到TestRole角色中
exec  sp_addrolemember 'ProgramerRole','username'
检常用户权限

exec sp_helpuser qdb


select DbRole = g.name, MemberName = u.name, MemberSID = u.sid
from sys.database_principals u, sys.database_principals g, sys.database_role_members m
where g.principal_id = m.role_principal_id
and u.principal_id = m.member_principal_id
order by 1, 2

 

select SrvRole = g.name, MemberName = u.name, MemberSID = u.sid
from sys.server_principals u, sys.server_principals g, sys.server_role_members m
where g.principal_id = m.role_principal_id
and u.principal_id = m.member_principal_id
order by 1, 2

exec sp_helprotect @username = 'qdb'


posted on 2008-02-19 16:09 snowhill 阅读(2089) 评论(0)  编辑 收藏 引用 所属分类: 数据库-oracle


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

公告

又一年...........

留言簿(3)

随笔分类(13)

文章分类(131)

文章档案(124)

c++

java

linux

oracle

常用软件

其他

网络配置

系统安全

音乐

搜索

最新评论

阅读排行榜