数据库安全收录:Sql Server应用程序的高级Sql注入
[ 2009-09-26 08:13:03 | 作者: admin ]
本文作者:未知
文章出处:未知
文章性质:原创
阅读次数:22
发布日期:2004-09-27
Sql-Server应用程序的高级Sql注入
本文作者:Chris Anley
翻译: luoluo [luoluonet@hotmail.com]
小组: http://www.ph4nt0m.net/
http://www.play8.net/
[目 录]
[概要]
[介绍]
[通过错误信息获取信息]
[更深入的访问]
[xp_cmdshell]
[xp_regread]
[其他扩展存储]
[联合服务器]
[用户自定义扩展存储]
[向表中导入文本文件]
[利用BCP创建文本文件]
[SQL-Server里的ActiveX 脚本]
[存储过程]
[高级Sql注入]
[没有引号的字符串]
[Sql-Injection二次注入]
...
阅读全文…
文章出处:未知
文章性质:原创
阅读次数:22
发布日期:2004-09-27
Sql-Server应用程序的高级Sql注入
本文作者:Chris Anley
翻译: luoluo [luoluonet@hotmail.com]
小组: http://www.ph4nt0m.net/
http://www.play8.net/
[目 录]
[概要]
[介绍]
[通过错误信息获取信息]
[更深入的访问]
[xp_cmdshell]
[xp_regread]
[其他扩展存储]
[联合服务器]
[用户自定义扩展存储]
[向表中导入文本文件]
[利用BCP创建文本文件]
[SQL-Server里的ActiveX 脚本]
[存储过程]
[高级Sql注入]
[没有引号的字符串]
[Sql-Injection二次注入]
...
阅读全文…
Sql Server及ACCESS中,如何随机排序数据集
[ 2009-09-14 13:52:02 | 作者: admin ]
p.s. 这个方法挺有用,不用自己写随机读行号函数
相信熟悉SQL语句的朋友都知道,在SQL SERVER中可以使用ORDER BY NEWID()来随机排序SELECT的数据集结果,那相同的功能在ACCESS中如何实现呢?
其实方法也很简单,就是使用随机函数Rnd()来实现.
例如:
SELECT * FROM TABLE ORDER BY Rnd(id)
说明:id为自动编号
相信熟悉SQL语句的朋友都知道,在SQL SERVER中可以使用ORDER BY NEWID()来随机排序SELECT的数据集结果,那相同的功能在ACCESS中如何实现呢?
其实方法也很简单,就是使用随机函数Rnd()来实现.
例如:
SELECT * FROM TABLE ORDER BY Rnd(id)
说明:id为自动编号
sql server 授权模式
[ 2009-03-18 16:45:48 | 作者: admin ]
一、服务器模式指你为每台服务器购买了多少份许可,就可以有多少个并发连接连到你的这台服务器;(指能有多少电脑设备上sql客户端可同时连接到服务器,如有多个财务软件需要链接到服务器,一台WEB服务器连到数据库时只产生一个客户端链接)
二、客户端模式指你为一个客户购买了多少份许可,这个客户就可以与服务器存在多少个并发连接。
三、cpu模式为数据库服务器上限制的cpu数目
以星型来表示的话,
服务器模式表示服务器是中心,并发连接从服务器向客户发散;
客户端模式表示客户机是中心,并发连接从客户端向服务器发散。
二、客户端模式指你为一个客户购买了多少份许可,这个客户就可以与服务器存在多少个并发连接。
三、cpu模式为数据库服务器上限制的cpu数目
以星型来表示的话,
服务器模式表示服务器是中心,并发连接从服务器向客户发散;
客户端模式表示客户机是中心,并发连接从客户端向服务器发散。
存储过程中插入ntext大文本,避开nvarchar(4000)限制
[ 2009-03-05 13:00:04 | 作者: admin ]
当无法直接使用sql语句,需要用sp_executesql来插入记录的时候,对于插入ntext比较难以处理,现在推荐一个相对简单的办法
先插入其他字段,ntext只插入空文本,然后获取该记录ntext的大文本指针,在指针处写入大文本
--插入新记录,ntext只插入空文本
insert into tao123_Info ...
--获取插入记录的id号
set @newId = SCOPE_IDENTITY()
--获取该记录ntext的大文本指针
select @tao123_pointer = textptr(ntext_Body) from tao123_Info WITH (NOLOCK) where Id = @newId
--在指针地方插入
WRITETEXT tao123_Info.ntext_Body @tao123_pointer @ntextNewContent
先插入其他字段,ntext只插入空文本,然后获取该记录ntext的大文本指针,在指针处写入大文本
--插入新记录,ntext只插入空文本
insert into tao123_Info ...
--获取插入记录的id号
set @newId = SCOPE_IDENTITY()
--获取该记录ntext的大文本指针
select @tao123_pointer = textptr(ntext_Body) from tao123_Info WITH (NOLOCK) where Id = @newId
--在指针地方插入
WRITETEXT tao123_Info.ntext_Body @tao123_pointer @ntextNewContent
用sp_executesql 时获取SCOPE_IDENTITY()的问题
[ 2009-03-04 15:14:28 | 作者: admin ]
存储过程中遇到表名、字段为变量的时候不可避免的会使用
exec sp_executesql @sql
当插入一条记录的时候,我们习惯用 SCOPE_IDENTITY() 来获取最后一条的ID号,
然而用在 sp_executesql 之后时,获取的值为NULL,无法正常得到ID,原因是当 exec sp_executesql 执行结束,这个所谓的“范围”也就结束了。要想得到ID,必须让 SCOPE_IDENTITY 在这个范围内,所以需要将 SCOPE_IDENTITY 放入@sql中
参考:
exec sp_executesql @sql
当插入一条记录的时候,我们习惯用 SCOPE_IDENTITY() 来获取最后一条的ID号,
然而用在 sp_executesql 之后时,获取的值为NULL,无法正常得到ID,原因是当 exec sp_executesql 执行结束,这个所谓的“范围”也就结束了。要想得到ID,必须让 SCOPE_IDENTITY 在这个范围内,所以需要将 SCOPE_IDENTITY 放入@sql中
参考:
select @Sql = N' insert into tao123 ; select @varNewId= SCOPE_IDENTITY() ; '
execute sp_executesql @Sql ,N'@varNewId int OUTPUT',@varNewId=@newId output
execute sp_executesql @Sql ,N'@varNewId int OUTPUT',@varNewId=@newId output
SQLSERVER管理员必备DBCC命令
[ 2008-10-24 00:10:59 | 作者: admin ]
一、了解DBCC
DBCC(database consistenecy checker,简称dbcc) 是一个实用命令集,用来检查数据库的逻辑一致性及物理一致性。
数据库控制台命令语句可分为以下类别:
维护: 对数据库、索引或文件组进行维护的任务。
杂项: 杂项任务,如启用跟踪标志或从内存中删除 DLL。
信息: 收集并显示各种类型信息的任务。
验证: 对数据库、表、索引、目录、文件组或数据库页的分配进行的验证操作
二、DBBCC维护语句:对数据库、索引或文件组进行维护的任务。
DBCC CLEANTABLE。回收删除的可变长度列和文本列的空间。
DBCC CLEANTABLE
(
{ 'database_name' | database_id | 0 }
, { 'table_name' | table_id | 'view_name' | view_id }
...
阅读全文…
DBCC(database consistenecy checker,简称dbcc) 是一个实用命令集,用来检查数据库的逻辑一致性及物理一致性。
数据库控制台命令语句可分为以下类别:
维护: 对数据库、索引或文件组进行维护的任务。
杂项: 杂项任务,如启用跟踪标志或从内存中删除 DLL。
信息: 收集并显示各种类型信息的任务。
验证: 对数据库、表、索引、目录、文件组或数据库页的分配进行的验证操作
二、DBBCC维护语句:对数据库、索引或文件组进行维护的任务。
DBCC CLEANTABLE。回收删除的可变长度列和文本列的空间。
DBCC CLEANTABLE
(
{ 'database_name' | database_id | 0 }
, { 'table_name' | table_id | 'view_name' | view_id }
...
阅读全文…
SqlServer如何删除大记录数据?以及如何更新大数量数据?
[ 2008-10-23 00:52:01 | 作者: admin ]
p.s. 用下面的删除操作,700万记录中删除有条件的记录200万,在查询分析器操作耗时1:30秒。
删除的问题:
1. 减少索引的影响: 删除所有索引, 然后做处理, 最后再重建索引
2. 减少日志记录:
a. 备份数据库(如果有必要的话,因为下面的操作很少记录日志,出错后无法从日志中恢复数据)
b. 设置最小日志记录:
alter database <dbname> recovery simple
c. 进行你的处理
d. 恢复默认设置:
alter database <dbname> recovery full
...
阅读全文…
删除的问题:
1. 减少索引的影响: 删除所有索引, 然后做处理, 最后再重建索引
2. 减少日志记录:
a. 备份数据库(如果有必要的话,因为下面的操作很少记录日志,出错后无法从日志中恢复数据)
b. 设置最小日志记录:
alter database <dbname> recovery simple
c. 进行你的处理
d. 恢复默认设置:
alter database <dbname> recovery full
...
阅读全文…
SQL 获得不包含时间部分的日期
[ 2008-09-03 16:44:17 | 作者: admin ]
GetDate()获得的日期由两部分组成,是今天的日期和当时的时间:
Select GetDate()
用DateName()就可以获得到相应的年、月、日,再把它们连接起来就好了:
Select Datename(year,GetDate())+'-'+Datename(month,GetDate())+'-'+Datename(day,GetDate())
另外,DateName()还可以获得到小时、时间、秒、星期几、第几周,分别如下:
Select Datename(hour,GetDate())
Select Datename(minute,GetDate())
Select Datename(second,GetDate())
Select Datename(weekDay,GetDate())
Select Datename(week,GetDate())
SQL中的日期类型DateTime的默认格式就是yyyy-mm-dd ...
阅读全文…
Select GetDate()
用DateName()就可以获得到相应的年、月、日,再把它们连接起来就好了:
Select Datename(year,GetDate())+'-'+Datename(month,GetDate())+'-'+Datename(day,GetDate())
另外,DateName()还可以获得到小时、时间、秒、星期几、第几周,分别如下:
Select Datename(hour,GetDate())
Select Datename(minute,GetDate())
Select Datename(second,GetDate())
Select Datename(weekDay,GetDate())
Select Datename(week,GetDate())
SQL中的日期类型DateTime的默认格式就是yyyy-mm-dd ...
阅读全文…