当前位置:  数据库>sqlserver
本页文章导读:
    ▪镜像会话中主服务器的扩容      某一个镜像会话中的主库所在服务器磁盘容量不足了,现要新添加一个磁盘分区用于扩容。通常的做法是:加完分区后,添加新数据文件(或者新文件组)到新分区,之后再重做镜像。如果此库.........
    ▪SQL Server 得到数据库中所有表的名称及数据条数      --方法一select b.name as tablename , c.row_count as datacount from sys.indexes a , sys.objects b , sys.dm_db_partition_stats c where a.[object_id] = b.[object_id] AND b.[object_id] = c.[object_id] AND a.index_id = c.index_id AND a.index_id < 2 AN.........
    ▪SQL 表结构信息查询 含主外键、自增长      最近项目需要做什么数据字典,需要表结构信息。在网上看了许多关于表结构信息的查询,感觉都不怎么样。相对好一点就是SQL2005 SQL2008 表结构信息查询升级版(含外键信息)  ,但是这.........

[1]镜像会话中主服务器的扩容
    来源:    发布时间: 2013-10-29

某一个镜像会话中的主库所在服务器磁盘容量不足了,现要新添加一个磁盘分区用于扩容。通常的做法是:加完分区后,添加新数据文件(或者新文件组)到新分区,之后再重做镜像。

如果此库比较大,则重做镜像会是件耗时和拖累性能的事情。会不会有更好的方法呢?在实际操作中,我以”数据库文件布局方式”分为三种情况:

1. 主库和镜像库的文件布局一样,而且新增加分区盘符在两台机上都存在。

     “一样”指mdf/ndf和ldf文件目录地址相同。在创建镜像时,还原数据库未指定“MOVE”则会一样。

如主库包含C:\DB_Test\Mirror_test_data.mdf和C:\DB_Test\Mirror_test_log.ldf,则镜像库的文件目录地址也是这样。

主机新加的分区为D,新增数据文件或文件组一样指向D:\NewFile。镜像机上也要有D分区。模拟代码如下:

use master
go
CREATE DATABASE [Mirror_Test] ON  PRIMARY
( NAME = N'Mirror_Test', FILENAME = N'C:\DB_Test\Mirror_test_data.mdf' , SIZE = 3072KB ,
  MAXSIZE = 5120KB , FILEGROWTH = 1024KB )
LOG ON
( NAME = N'Mirror_Test_log', FILENAME = N'C:\DB_Test\Mirror_test_log.ldf' , SIZE = 5120KB ,
  MAXSIZE = 10240KB , FILEGROWTH = 1024KB )
GO
use Mirror_Test
go
--每行占一页,方便快速填充满数据
create table tb1(id int not null,val char(8000));
go
set nocount on;
declare @i int=0,@val char(8000)='abc';
--不到1000行就会充满,然后报错
while (@i<1000)
begin
insert into tb1 values(@i,@val);
set @i=@i+1;
end
set nocount off;
go

创建并填充数据后,再配置镜像。

成功添加新分区D盘(两边都有)后,开始添加

    
[2]SQL Server 得到数据库中所有表的名称及数据条数
    来源:    发布时间: 2013-10-29
--方法一

select b.name as tablename ,

c.row_count as datacount

from sys.indexes a ,

sys.objects b ,

sys.dm_db_partition_stats c

where a.[object_id] = b.[object_id]

AND b.[object_id] = c.[object_id]

AND a.index_id = c.index_id

AND a.index_id < 2

AND b.is_ms_shipped = 0

--方法二

select b.name as tablename ,

a.rowcnt as datacount

from sysindexes a ,

sysobjects b

where a.id = b.id

and a.indid < 2

and objectproperty(b.id, 'IsMSShipped') = 0

 

本文链接


    
[3]SQL 表结构信息查询 含主外键、自增长
    来源:    发布时间: 2013-10-29

最近项目需要做什么数据字典,需要表结构信息。在网上看了许多关于表结构信息的查询,感觉都不怎么样。相对好一点就是SQL2005 SQL2008 表结构信息查询升级版(含外键信息)  ,但是这里有一点小问题,缺少一个过滤以致运行有一点小bug。在AdventureWorks2012数据库中的Address表查询结果如图:

在查询过滤中我们添加以下信息就ok了:

  AND g.class_desc = 'OBJECT_OR_COLUMN'

修改后的SQL如下:

SELECT 表名 = CASE WHEN a.colorder = 1 THEN d.name
ELSE ''
END ,
表说明 = CASE WHEN a.colorder = 1 THEN ISNULL(f.value, '')
ELSE ''
END ,
字段序号 = a.colorder ,
字段名 = a.name ,
标识 = CASE WHEN COLUMNPROPERTY(a.id, a.name, 'IsIdentity') = 1 THEN '√'
ELSE ''
END ,
主键 = CASE WHEN EXISTS ( SELECT 1
FROM dbo.sysindexes si
INNER JOIN dbo.sysindexkeys sik ON si.id = sik.id
AND si.indid = sik.indid
INNER JOIN dbo.syscolumns sc ON sc.id = sik.id
AND sc.colid = sik.colid
INNER JOIN dbo.sysobjects so ON so.name = so.name
AND so.xtype = 'PK'
WHERE sc.id = a.id
AND sc.colid = a.colid ) THEN '√'
ELSE ''
END ,
外键 = CASE WHEN tony.fkey IS NOT NULL
AND tony.fkey = a.colid THEN '√'
ELSE ''
END ,
外键表 = CASE WHEN tony.fkey IS NOT NULL
AND tony.fkey = a.colid THEN OBJECT_NAME(tony.fkeyid)
ELSE ''
END ,
外键字段 = CASE WHEN tony.fkey IS NOT NULL
AND tony.fkey = a.colid
THEN ( SELECT name
FROM syscolumns
WHERE colid = tony.fkey
AND id = tony.fkeyid
)
ELSE ''
END ,
类型 = b.name ,
长度 = a.length ,
精度 = COLUMNPROPERTY(a.id, a.name, 'PRECISION') ,
小数位数 = ISNULL(COLUMNPROPERTY(a.id, a.name, 'Scale'), 0) ,
允许空 = CASE WHEN a.isnullable = 1 THEN '√
    
最新技术文章:
 




特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3