Archive

Archive for the ‘Database’ Category

数据库表某一列中相同值的个数

August 24th, 2009 Tony hu 2 comments

今天整理一大堆数据(一共900行数据),我发现仓库管理员可能在处理这些数据时出错了,所在验证了一下。

我使用了以下SQL语句:

Select [1],count([1]) as Qty from
(SELECT [1] FROM  [Shelfs]
union all  SELECT [2] FROM  [Shelfs]
union all  SELECT [3] FROM  [Shelfs]
union all  SELECT [4] FROM  [Shelfs]
union all  SELECT [5] FROM  [Shelfs]
union all  SELECT [6] FROM  [Shelfs]
union all  SELECT [7] FROM  [Shelfs]) a where [1]<>” group by [1] order by Qty desc

得出的结果很清楚地可以看到,有的是相同的数据,而我需要的是不同的数据,即他整理重复了。特别记录一下。

Categories: SQL, Sql Server Tags:

ASP.net & Sql Server 2005 中单引号处理办法

July 27th, 2009 Tony hu No comments

今天遇到一个问题,sql 语句中有单引号,故出现语法错误。

两种方案:

1.使用存储过程,这个谁都知道。

2.将字符串中的1个单引号,换成两个单引号。本来我以为这个方法行不通(我以为读取时还要处理),没有想到居然是可以的。存储在数据库里的是两个单引号的,通过ASP.net 程序读出来显示在Gridview中是一个单引号的,这个暂时不知道为什么。

SQL Server 分区表和分区索引(1)

July 19th, 2009 Tony hu No comments

1. 分区表简介
使用分区表的主要目的,是为了改善大型表以及具有各种访问模式的表的可伸缩性和可管理性。
大型表:数据量巨大的表。
访问模式:因目的不同,需访问的不同的数据行集,每种目的的访问可以称之为一种访问模式。
分区一方面可以将数据分为更小、更易管理的部分,为提高性能起到一定的作用;
另一方面,对于如果具有多个CPU的系统,分区可以是对表的操作通过并行的方式进行,这对于提升性能是非常有帮助的。

注意:只能在 SQL Server Enterprise Edition 中创建分区函数。只有 SQL Server Enterprise Edition 支持分区。

2. 创建分区表或分区索引的步骤
可以分为以下步骤:
1. 确定分区列和分区数
2. 确定是否使用多个文件组
3. 创建分区函数
4. 创建分区架构(Schema)
5. 创建分区表
6. 创建分区索引

Categories: Database, Sql Server Tags: ,

关于在SQL语句中使用字符N

July 18th, 2009 Tony hu No comments

Database Name: Northwind
数据库的目前排序规则:SQL_Latin1_General_CP1_CI_AS
Orders 表中的字段ShipCity 字段类型是 nvarchar(15),即可以存放多语言字符串

插入:
insert into orders (shipcity) values (‘苏州’)
insert into orders (shipcity) values (N’苏州’)

结果:前面插入的字符是乱码,后一个字符正常。

查询:
SELECT * FROM [Northwind].[dbo].[Orders] where ShipCity =N’苏州’
SELECT * FROM [Northwind].[dbo].[Orders] where ShipCity =’苏州’

结果:前面可以得到一条记录,后面查询不到。

结论:  如果一个数据库是处理多语言事务的(实际情况要根据他的排序规则决定),那在操作时需要在相应的段值前面加上修饰符’N',否则就会出现乱码。

————————————————–

如果数据库的排序规则是:Chinese_PRC_CI_AS

经过测试存放“简体”和“繁體”都不会乱码,无论是加N还是不加N.

如果排序规则是 SQL_Latin1_General_CP1_CI_AS,如果 字段的类型是 varchar 类的,那是不能存放“中文”的,无论是加N还是不加N.

if your database’s collation is english collation, such as sql_latin1_general_ci_as, and
if you want to input chinese characters into a nvarchar column, then you have to use
N’字符’ to input chinese.
Note: ‘字符’ is wrong character string for english collation, and can not be inserted into any varchar/nvarchar column

Categories: SQL, Sql Server Tags:

使用ADO.net连接SQL Server镜像数据库

July 9th, 2009 Tony hu No comments

可能有朋友们会比较有疑惑,SQL Server 做镜像时有两个数据库服务器,他们的ip地址不一样,到时候数据库切换过去了,我的数据库的连接字符串可如何是好?难道还得在代码中去控制是连接哪个数据库吗?
其实这个问题是这样的,使用ADO.NET或者SQL Native Client能够自动连接到故障转移后的伙伴,连接字符串如下所示:

ConnectionString=”DataSource= A;Failover Partner=B;Initial Catalog=AdventureWorks;Integrated Security=true;”

DataSource= A;这个就是我们常用的主数据库的ip地址,Failover Partner=B;这个填写的就是镜像数据库的ip地址,一旦出现了连接错误,Ado.NET会在超时以后自动去连接镜像数据库。