分类目录归档:数据库

SQL Server 自增字段归零

方法一:    如果曾经的数据都不需要的话,可以直接清空所有数据,并将自增字段恢复从1开始计数

truncate table 表名

方法二:  dbcc checkident (‘table_name’, reseed, new_reseed_value)  当前值设置为

new_reseed_value。如果自创建表后没有将行插入该表,则在执行  DBCC  CHECKIDENT  后插入的第一行

将使用  new_reseed_value  作为标识。否则,下一个插入的行将使用  new_reseed_value  +  1。如果

new_reseed_value  的值小于标识列中的最大值,以后引用该表时将产生  2627  号错误信息。

SQLSERVER、ACCESS和EXCEL的数据转换/zz/

熟悉SQL SERVER 2000的数据库管理员都知道,其DTS可以进行数据的导入导出,其实,我们也可以使用Transact-SQL语句进行导入导出操作。在Transact-SQL语句中,我们主要使用OpenDataSource函数、OPENROWSET 函数,关于函数的详细说明,请参考SQL联机帮助。利用下述方法,可以十分容易地实现SQL SERVER、ACCESS、EXCEL数据转换,详细说明如下:

一、            SQL SERVER 和ACCESS的数据导入导出

Transact-SQL语句进行导入导出:

1.          在SQL SERVER里查询access数据:

— ======================================================

SELECT *

FROM OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0’,

‘Data Source=”c:\DB.mdb”;User ID=Admin;Password=’)…表名

————————————————————————————————-

2.          将access导入SQL server

— ======================================================

在SQL SERVER 里运行:

SELECT *

INTO newtable

FROM OPENDATASOURCE (‘Microsoft.Jet.OLEDB.4.0’,

‘D103fata Source=”c:\DB.mdb”;User ID=Admin;Password=’ )…表名

————————————————————————————————-

3.          将SQL SERVER表里的数据插入到Access表中

— ======================================================

在SQL SERVER 里运行:

insert into OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0’,

‘Data Source=” c:\DB.mdb”;User ID=Admin;Password=’)…表名

(列名1,列名2)

select 列名1,列名2   from   sql表

实例:

insert into   OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’,

‘C:\db.mdb’;’admin’;”, Test)

select id,name from Test

INSERT INTO OPENROWSET(‘Microsoft.Jet.OLEDB.4.0’, ‘c:\trade.mdb’; ‘admin’; ”, 表名)

SELECT *

FROM sqltablename

————————————————————————————————-

二、            SQL SERVER 和EXCEL的数据导入导出

1、在SQL SERVER里查询Excel数据:

— ======================================================

SELECT *

FROM OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0’,

‘Data Source=”c:\book1.xls”;User ID=Admin;Password=;Extended properties=Excel 5.0’)…[Sheet1$]

下面是个查询的示例,它通过用于 Jet 的 OLE DB 提供程序查询 Excel 电子表格。

SELECT *
FROM OpenDataSource ( ‘Microsoft.Jet.OLEDB.4.0’,
‘Data Source=”c:\Finance\account.xls”;User ID=Admin;Password=;Extended properties=Excel 5.0’)…xactions
————————————————————————————————-

2、将Excel的数据导入SQL server :

— ======================================================

SELECT * into newtable

FROM OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0’,

‘Data Source=”c:\book1.xls”;User ID=Admin;Password=;Extended properties=Excel 5.0’)…[Sheet1$]

实例:

SELECT * into newtable

FROM OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0’,

‘Data Source=”c:\Finance\account.xls”;User ID=Admin;Password=;Extended properties=Excel 5.0’)…xactions

————————————————————————————————-

3、将SQL SERVER中查询到的数据导成一个Excel文件

— ======================================================

T-SQL代码:

EXEC master..xp_cmdshell ‘bcp 库名.dbo.表名out c:\Temp.xls -c -q -S”servername” -U”sa” -P””‘

参数:S 是SQL服务器名;U是用户;P是密码

说明:还可以导出文本文件等多种格式

实例:EXEC master..xp_cmdshell ‘bcp saletesttmp.dbo.CusAccount out c:\temp1.xls -c -q -S”pmserver” -U”sa” -P”sa”‘

EXEC master..xp_cmdshell ‘bcp “SELECT au_fname, au_lname FROM pubs..authors ORDER BY au_lname” queryout C:\ authors.xls -c -Sservername -Usa -Ppassword’

在VB6中应用ADO导出EXCEL文件代码:

Dim cn   As New ADODB.Connection

cn.open “Driver={SQL Server};Server=WEBSVR;DataBase=WebMis;UID=sa;WD=123;”

cn.execute “master..xp_cmdshell ‘bcp “SELECT col1, col2 FROM 库名.dbo.表名” queryout E:\DT.xls -c -Sservername -Usa -Ppassword'”

————————————————————————————————-

103f

4、在SQL SERVER里往Excel插入数据:

— ======================================================

insert into OpenDataSource( ‘Microsoft.Jet.OLEDB.4.0’,

‘Data Source=”c:\Temp.xls”;User ID=Admin;Password=;Extended properties=Excel 5.0’)…table1 (A1,A2,A3) values (1,2,3)

T-SQL代码:

INSERT INTO

OPENDATASOURCE(‘Microsoft.JET.OLEDB.4.0’,

‘Extended Properties=Excel 8.0;Data source=C:\training\inventur.xls’)…[Filiale1$]

(bestand, produkt) VALUES (20, ‘Test’)

sql2005数据库日志文件清理

最近整理一个项目对要对sql 2005下几个数据进行整理,整理后发现库数据文件才1g左右,但是相应的log日志文件超大,都4,5G左右,极端的占空间。我们都知道log文件保存了对数据库所做的各种操作等,在数据出错的时候可以通过日志文件恢复数据库,是一个非常重要的文件,而且不能直接删除掉,那么怎么才能安全的给数据搜身呢?

——————————————————————————————————————————-

建议更改数据库的事务日志,限制文件增长的最大值和定期备份日志和数据。在以下处理之前,最好整体备份整个数据库:

1:由小的事务引起日志溢出,系统能正常启动。

解决办法:

扩大数据库日志空间:
alter database 数据库名 on 设备名=数量(M为单位)

sp_logdevice 数据库名,设备名

清除日志
dump transaction 数据库名 with no_log(no_truncate)

2:由大的事物引起日志溢出,系统较长时间内无法正常启动或数据库无法恢复
103f
解决办法:

强行清空日志。
在实在无法恢复数据库或有近期备份的情况下,可采用强行清空日志的方法。采取这种方法的后果有可能彻底破坏数据库。执行步骤如下:

Ⅰ 以-v 方式启动SQL SERVER(不检测日志)

Ⅱ 修改数据库状态为-32768(阻塞状态)

update sysdatabases set status=-32768 where name=数据库名

Ⅲ 授权sybase_ts_role权限(sybase_ts_role为SQL SERVER特殊管理员权限,在日常的数据库管理中,不需要这个角色)

sp_role “grant”,”sybase_ts_role”,sa

set role “sybase_ts_role”

Ⅳ 清除日志

dbcc rebuild_log(数据库名,1,1)

完成以上步骤后,重新启动SQL SERVER即可。如果数据库能正常启动,数据库就恢复完成;如果无法启动,只能重新创建数据库。

=================================================================

压缩日志

1:截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG

2:清空日志
DUMP TRANSACTION 库名 WITH NO_LOG

再:
企业管理器–右键你要压缩的数据库–所有任务–收缩数据库–收缩文件–选择日志文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

3: 删除LOG

1:分离数据库 企业管理器->服务器->数据库->右键->分离数据库
2:删除LOG文件
3:附加数据库 企业管理器->服务器->数据库->右键->附加数据库
此法生成新的LOG,大小只有500多K
再将此数据库设置自动收缩

或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

EXEC sp_detach_db @dbname = ‘pubs’
EXEC sp_attach_single_file_db @dbname = ‘pubs’,
@physname = ‘c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf’

4: 如果想以后不让它增长
企业管理器–服务器–右键数据库–属性–事务日志–将文件增长限制为xM(x是你允许的最大数据文件大小)

–SQL语句的设置方式:
alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)

5.设置为自动收缩
企业管理器–服务器–右键数据库–属性–选项–选择”自动收缩”

MySQL创建用户与授权

一, 创建用户:

命令:CREATE USER ‘username’@’host’ IDENTIFIED BY ‘password’;

说明:username – 你将创建的用户名, host – 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password – 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.

继续阅读