殊途哲

03月 25, 2008

MS SQL server2000 数据库置疑修复方法

归类于: SQLServer — shutuzhe @ 1:35 am

最近遇到系统重装,原来的数据库不能用了,就到网上查找方法,现将过程总结如下。

一、网上流传的分离数据库再附加的办法,试过了,不成功

二、自己实验:

1.新建一个同名的数据库learnter

2.再停掉sql server,操作为在(local)右键,选择 停止

3.复制旧数据库的文件覆盖掉这个新建的learnter数据库

4.再重新启动并连接sql server,在(local)右击选择操作

5.此时打开企业管理器时新建的同名数据库会出现置疑。

6.打开SQL查询分析器,执行下面的语句(注意修改其中的数据库名learnter为你自己的数据库名)。

USE MASTER
执行查询

SP_CONFIGURE ‘ALLOW UPDATES’,1 RECONFIGURE WITH OVERRIDE
/* 如果直接复制这里的语句,请修改单引号
执行查询

UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME=’Learnter’
执行查询

/* 事例中的引号注意修改

sp_dboption ‘learnter’, ’single user’, ‘true’
/* 如果遇到报无法打开数据库 ‘learnter’,因为该数据库的版本(611)晚于当前服务器版本(539)。表示曾升级SQL2000到SQL2005过。那就安装SQL2005再备份数据库,再导入SQL2000。只在SQL2000里操作的办法还没找到。
/* 如果报未能在 sysindexes 中找到数据库 ID 7 中对象 ID 1 的索引 ID 1 对应的行。请对 sysindexes 运行 DBCC CHECKTABLE。请执行查询:dbcc checktable(’sysindexes’)

执行查询

DBCC CHECKDB(’learnter’)
执行查询

update sysdatabases set status =28 where name=learnter
执行查询

sp_configure allow updates, 0 reconfigure with override
执行查询

sp_dboption learnter, single user, false
执行查询

7创建新数据库,然后:企业管理器–右键你的数据库–所有任务–导出数据
–目标标数据库选择新建
–选择”在两个sql数据库之间复制对象和数据”
–把”包含扩展属性”选上,其他的根据需要选择
–最后完成

01月 17, 2008

SQL重复记录处理

归类于: SQLServer — shutuzhe @ 11:12 pm

1 查询不重复记录条数:

select count(distinct culumn) from tablename

2 导出不重复记录到新表:

select distinct * into newtable from oldtable

3
3 查询重复记录

SELECT school, class, name, num FROM table GROUP BY school, class, name, num HAVING (COUNT(num) > 1)

select * from 表 group by 字段 having count(字段)>1

4查询重复记录条数

SELECT count(*) as cout,school, class, name, num FROM table GROUP BY school, class, name, num HAVING (COUNT(num) > 1)

5查询一个表中有在另一个表中没有的记录:

select * from table1 where column not in (select column from table2)

12月 7, 2007

SQL2000安装图示

归类于: SQLServer — shutuzhe @ 1:23 am

2007-12-06_101328.png

2007-12-06_101344.png2007-12-06_101407.png2007-12-06_101437.png2007-12-06_101447.png2007-12-06_101453.png2007-12-06_101503.png2007-12-06_101618.png2007-12-06_101625.png2007-12-06_101631.png2007-12-06_101649.png2007-12-06_101657.png2007-12-06_101728.png2007-12-06_101827.pngoutput.PNG

2007-12-06_101528.png2007-12-06_101535.png2007-12-06_101607.png2007-12-06_102309.png

2007-12-06_102338.png2007-12-06_102424.png2007-12-06_102457.png2007-12-06_102537.png2007-12-06_102936.png2007-12-06_103026.png2007-12-06_103124.png

11月 22, 2007

本周SQL学习记录

归类于: SQLServer — shutuzhe @ 8:51 am

1 对两组数据进行比较,找出在一个中有而另一个中没有的:
select * into tname3 from tname1 where key not in (select key from tname2)

2 学会了使用“作业”,就可以定时完成工作了 。

3  合并表:

insert tablea(a,b,c) slect a,b,c from tableb

11月 16, 2007

上周学习的SQL语句记录

归类于: SQLServer — shutuzhe @ 8:55 pm

学习环境:Win XP SP2+SQL2000

一 create

create做为sql的创建命令,主要用于数据库、视图、表的创建。SQL语句范例为:

1 create database DBname :创建以DBname为名称的数据库

如执行create database learnter,产生的结果为:

CREATE DATABASE 进程正在磁盘 ‘learnter’ 上分配 0.75 MB 的空间。
CREATE DATABASE 进程正在磁盘 ‘learnter_log’ 上分配 0.49 MB 的空间。

默认位置为X:\sql\MSSQL\Dat\下生成learnter.mdf和learnter_log.LDF两个文件。

2 create table table_name(cloumn1 int,cloumn2 char,cloumn3 float): 在默认数据里创建以table_name为名称的表

如执行create table learnter(number int,username char,regtime datetime)就在数据库learnter里创建了有三列number,username,regtime的表learnter。

二 Select

select 是SQL数据操作中最常用的命令,我在使用中犯过几次输成slect的错误,上面的create也输成creat过。select语句范例为:

1 select * from table_name :  从表table_name中查询所有

如 select * from learnter ,会将表learnter中的所有记录显示到查询结果中。

2  select * into another_table from table_name :  复制表table_name中所有内容到 表another_table

用于数据备份 ,以免接下来的删除类操作造成数据丢失。

3 select  count(*) from table_name 统计表table_name中的记录数

用于对数据统计,使用 count(distinct *)可排除重复记录,将*换成列名则只对一列内容进行统计。

4  select * from table_name where 条件判断语句 :找出符合条件的记录

5 select * into another_table from table_name  where 条件判断语句 :将符合条件的记录导入表another_table

6 SELECT COUNT(*) AS Expr1 FROM difff WHERE (num IN (SELECT num FROM wfall)) 统计difff表中的num在wfall表中有多少

7 SELECT *  INTO area_cs FROM s15  WHERE (SCHOOL LIKE ‘长沙%’)  将表s15中校名以长沙开头的记录保存到area_cs

8  SELECT * INTO area_wc FROM s15 WHERE (SCHOOL LIKE ‘望城%’) OR  (SCHOOL = ‘楠香一中’) 将表s15中校名以望城开头或者校名为楠香一中的记录保存到area_wc

9 SELECT * INTO area_cs FROM s15 WHERE (SCHOOL IN(’长沙一中’,'长沙二中’,'长沙三中’,'长沙四中’))将表s15中校名为长沙一中、长沙二中、长沙三中、长沙四中的记录保存到area_cs

Powered by WordPress