sql server varchar字段文本替换存储过程:拯救被sql注入的网站数据

数据库被注入以后,要手工删除被非法注入的信息是痛苦的事情,下面这个存储过程可以帮你一键搞定。

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

create proc [dbo].[ReplaceKeyWord]

@old nvarchar(100),

@new nvarchar(100)

as

declare @sql nvarchar(1000)

set @sql=N' 

declare   @s   nvarchar(4000),@tbname   sysname 

select   @s=N'''',@tbname=N''?'' 

select   @s=@s+N'',''+quotename(a.name)+N''=replace(''+quotename(a.name)+N'',N'''''+@old+''''',N'''''+@new+''''')'' 

from   syscolumns   a,systypes   b 

where   a.id=object_id(@tbname)    

and   a.xusertype=b.xusertype 

and   b.name   like   N''%char'' 

if   @@rowcount>0 

begin 

set   @s=stuff(@s,1,1,N'''') 

exec(N''update   ''+@tbname+''   set   ''+@s) 

end '

--print @sql

exec   sp_msforeachtable   @sql;

set @sql=N' 

declare   @s   nvarchar(4000),@tbname   sysname 

select   @s=N'''',@tbname=N''?'' 

select   @s=@s+quotename(a.name)+N'',''

from   syscolumns   a,systypes   b 

where   a.id=object_id(@tbname)    

and   a.xusertype=b.xusertype 

and   b.name   like   N''%text'' 

if   @@rowcount>0 

begin 

exec UpdateTextColumn @tbname,@s,'''+@old+''','''+@new+'''

end

' ;

exec   sp_msforeachtable @sql
GO

用法:

exec ReplaceKeyWord '替换前字符串','替换后的字符串';

SqlServer 2005 导出数据字典

-----------------------------------------------------
--作用:用于sql server 2005 导出用户表数据字典
--作者:郭强--时间:年月日--用法如下:
--1 默认导出当前数据库中所有用户表(xtype = 'u')的数据字典;
--2 可以在xtype = 'u'替换为如下所示语句xtype = 'u' and name in ('son','Person') 导出自定义的表的数据字典;
--3 可以利用集成服务SSIS导出数据字典的excel文件,形成文档;
------------------------------------------------------
 
 
select sysobjects.name as "表名",syscolumns.name as "字段名",
case when systypes.name in ('binary','char','nchar') then (systypes.name + '(' + cast(syscolumns.prec as varchar(50)) + ')')
when systypes.name in ('decimal','numeric') then (systypes.name + '(' + cast(syscolumns.prec as varchar(50)) + ',' + cast(syscolumns.scale as varchar(50)) + ')')
when systypes.name in ('nvarchar','varchar','varbinary') then (case when syscolumns.prec = -1 then (systypes.name + '(MAX)') else (systypes.name + '(' + cast(syscolumns.prec as varchar(50)) + ')') end)
else systypes.name end as "字段类型",
syscomments.text as "默认值", case when syscolumns.isnullable = 1 then 'Y' else 'N' end as "能否为空",
 cast(sys.extended_properties.value as varchar(1024)) as "备注"
from syscolumns inner join systypes on syscolumns.xtype = systypes.xtype left join sysobjects
on syscolumns.id = sysobjects.id left outer join sys.extended_properties
on ( sys.extended_properties.minor_id = syscolumns.colid and sys.extended_properties.major_id = syscolumns.id) left outer join syscomments
on syscolumns.cdefault = syscomments.id where syscolumns.id in (select id from sysobjects where xtype = 'u') and (systypes.name <> 'sysname') order by sysobjects.name asc

SQL Server 2005 的触发 Trigger

SqlServer 2005 可以针对表添加触发。下面是一个例子:

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
create trigger [dbo].[TrDelCommentImg]
on [dbo].[cms_comment]
for delete
as
begin
declare @commentid int
select @commentid=commentid from deleted
delete from cms_peopleimg where commentid=@commentid
end

数据表的Insert,Delete,Update事件,都可设置触发器。

ADM3核处理器安装SQLServer 2005的方法

公司昨天新买了两台主机,都是adm3核心的CPU。结果安装SQLServer 2005是出错。网上资料表明,是adm3核问题造成的。

微软提供的两种解决方法都无法解决:

1、通过msconfig设置启动参数,让计算机只使用一个核心。

2、通过制定HOTFIXPATH。

失败之后,我想,既然SP3已经解决了这个问题,那么,只要我找到集成了SP3的版本,不久解决了吗?可是网络上集成SP3的SQLServer版本很难找。只能靠自己集成了,好在已经有先贤写下了集成方法:

http://www.yongfa365.com/Item/Microsoft-SQL-Server-2005-With-SP3.html

原文转载如下,以备不时之需:

Microsoft SQL Server 2005 SP3 介绍及下载地址:

        微软发布了SQL Server 2005 SP3的正式版,而这也将是该软件的最后一次升级服务。SQL Server 2005 SP3版本号9.00.4035,作为一个累计升级包集成了此前所有的更新补丁,能全方位提升SQL Server 2005的各种服务等级,适用于企业版、企业评估版、开发者版、标准版、工作组版等所有商业版本。
        SQL Server 2005 SP3中文版下载地址(x86/x64/IA64):
  http://www.microsoft.com/downloads/details.aspx?FamilyID=ae7387c3-348c-4faa-8ae5-949fdfbe59c4&DisplayLang=zh-cn

        针对免费的精简版SQL Server 2005 Express Edition,微软也放出了相应的SP3服务包,不过要注意,SQLEXPR.EXE可以在32/64位系统上安装,SQLEXPR32.EXE则只能用于32位系统。
下载地址:
   http://www.microsoft.com/downloads/details.aspx?FamilyID=3181842a-4090-4431-acdd-9a1c832e65a6&DisplayLang=zh-cn

 


 Microsoft SQL Server 2005原版各版本下载地址:

SQL_2005_All简体中文开发版DVD.iso 1.7GB
SQL_2005_x64简体中文企业版CD1.iso 454.8MB
SQL_2005_x64简体中文企业版CD2.iso 593.4MB
SQL_2005_x86简体中文企业版CD1.iso 421.4MB
SQL_2005_x86简体中文企业版CD2.iso 606.3MB
SQL_2005_x86简体中文标准版CD1.iso 421.4MB
SQL_2005_x86简体中文标准版CD2.iso 606.3MB

 Microsoft SQL Server 2005 各版本序列号:

SQl 2005 Enterprise (x86 & x64) S/N: WXGDG-DJ8DJ-CC77F-8FDJV-DFBYG
SQl 2005 Standard (x86 & x64) S/N: B4H74-BJX3P-37RX2-J9TTB-H9RMJ
SQl 2005 Developer (x86 & x64) S/N: G9Y4M-86RC4-7MFBD-QTPR8-P2VD3
SQl 2005 Workgroup (x86 & x64) S/N: RY62Q-9XHXY-FHXK6-CWWJH-2FK4B 


 Microsoft SQL Server 2005 整合、集成SP3 批处理版:

解压 SQLServer2005SP3-KB955706-x86-CHS.exe 文件(使用 WinRAR 可直接解压,或使用 /extract)
解压后文件夹 搜索 “*.msi *.msp” ,然后复制所有搜索到的文件 放到 D:\SQL2005\SP3 中.
提取 cs_sql_dev_all_dvd.iso(SQL Server 2005 开发版) 中的 x86 版本,放到 D:\SQL2005\MSSQL 中;此时 D:\SQL2005\MSSQL 中应该有以下文件和文件夹 autorun.infServersTools

然后把以下代码存为D:\SQL2005\Install.cmd,并双击运行。

@ECHO OFF
ECHO /////////////////////////////////////////////////
ECHO // Microsoft SQL Server 2005 整合、集成SP3
ECHO // Author  : 柳永法
ECHO // Date    : 2008-12-19
ECHO // Modi    : 2008-12-22
ECHO // Version : 1.1
ECHO // Web     : http://www.yongfa365.com/
ECHO // URL     : http://www.yongfa365.com/Item/Microsoft-SQL-Server-2005-With-SP3.html
ECHO /////////////////////////////////////////////////

ECHO 运行此批处理前,得建目录:D:\SQL2005,D:\SQL2005\SP3,D:\SQL2005\MSSQL
ECHO D:\SQL2005\MSSQL 把SQL Server 2005原DVD光盘里的X86目录下的所有文件Copy到这里
ECHO D:\SQL2005\SP3 把下载来的SP3文件解压,并搜索"*.msi *.msp"复制全部,然后放到这个目录下

ECHO 更新Servers环境文件
XCOPY /Y /H D:\SQL2005\SP3\*.msi D:\SQL2005\MSSQL\Servers\Setup\

RD /S /Q D:\SQL2005\SWAP
MD D:\SQL2005\SWAP

ECHO 释放Servers文件 时间比较长 请耐心等待
msiexec /quiet /a D:\SQL2005\MSSQL\Servers\Setup\sqlrun_as.msi TARGETDIR=D:\SQL2005\SWAP /L*vx D:\SQL2005\Install.log
msiexec /quiet /a D:\SQL2005\MSSQL\Servers\Setup\sqlrun_dts.msi TARGETDIR=D:\SQL2005\SWAP /L*vx D:\SQL2005\Install.log
msiexec /quiet /a D:\SQL2005\MSSQL\Servers\Setup\sqlrun_ns.msi TARGETDIR=D:\SQL2005\SWAP /L*vx D:\SQL2005\Install.log
msiexec /quiet /a D:\SQL2005\MSSQL\Servers\Setup\sqlrun_rs.msi TARGETDIR=D:\SQL2005\SWAP /L*vx D:\SQL2005\Install.log
msiexec /quiet /a D:\SQL2005\MSSQL\Servers\Setup\sqlrun_sql.msi TARGETDIR=D:\SQL2005\SWAP /L*vx D:\SQL2005\Install.log

ECHO 更新释放出来的文件 时间比较长 请耐心等待
msiexec /quiet /a D:\SQL2005\SWAP\sqlrun_as.msi /p D:\SQL2005\SP3\sqlrun_as.msp /L*vx D:\SQL2005\Install.log
msiexec /quiet /a D:\SQL2005\SWAP\sqlrun_dts.msi /p D:\SQL2005\SP3\sqlrun_dts.msp /L*vx D:\SQL2005\Install.log
msiexec /quiet /a D:\SQL2005\SWAP\sqlrun_ns.msi /p D:\SQL2005\SP3\sqlrun_ns.msp /L*vx D:\SQL2005\Install.log
msiexec /quiet /a D:\SQL2005\SWAP\sqlrun_rs.msi /p D:\SQL2005\SP3\sqlrun_rs.msp /L*vx D:\SQL2005\Install.log
msiexec /quiet /a D:\SQL2005\SWAP\sqlrun_sql.msi /p D:\SQL2005\SP3\sqlrun_sql.msp /L*vx D:\SQL2005\Install.log

ECHO 把更新后的文件再放回Servers 
XCOPY /Y /E  D:\SQL2005\SWAP D:\SQL2005\MSSQL\Servers\Setup\

RD /S /Q D:\SQL2005\SWAP
MD D:\SQL2005\SWAP

ECHO 更新Tools环境文件
XCOPY /Y /H D:\SQL2005\SP3\*.msi D:\SQL2005\MSSQL\Tools\Setup\

ECHO 释放Tools文件
msiexec /quiet /a D:\SQL2005\MSSQL\Tools\Setup\sqlrun_tools.msi TARGETDIR=D:\SQL2005\SWAP /L*vx D:\SQL2005\Install.log

ECHO 更新释放出来的文件
msiexec /quiet /a D:\SQL2005\SWAP\sqlrun_tools.msi /p D:\SQL2005\SP3\sqlrun_tools.msp /L*vx D:\SQL2005\Install.log

ECHO 把更新后的文件再放回Tools 
XCOPY /Y /E  D:\SQL2005\SWAP D:\SQL2005\MSSQL\Tools\Setup\

RD /S /Q D:\SQL2005\SWAP
ECHO "Microsoft SQL Server 2005 整合SP3成功"
PAUSE


OK,完成,一般为保证程序的完整性你可以再把他做成ISO文件存放,选中优化文件,体积会小一些,推荐使用软件UltraISO

 


以上代码柳永法(yongfa365)'Blog制作并亲测,并在虚拟机上测试全新安装全部功能成功。查看SQL Server 2005 "关于"看到的数据:

Microsoft SQL Server Management Studio 9.00.4035.00
Microsoft Analysis Services 客户端工具 2005.090.4035.00
Microsoft 数据访问组件 (MDAC) 2000.086.3959.00 (srv03_sp2_rtm.070216-1710)
Microsoft MSXML 2.6 3.0 6.0
Microsoft Internet Explorer 6.0.3790.3959
Microsoft .NET Framework 2.0.50727.42
操作系统 5.2.3790


如何识别 SQL Server 的版本看查询,结果如下:
SELECT SERVERPROPERTY('productversion'),SERVERPROPERTY('productlevel'),SERVERPROPERTY('edition')

9.00.4035.00 SP3 Developer Edition


如果你下载的是企业版的,两张光盘的,操作有一点点不同:

复制CD1(卷标为SQLSRVRS)的光盘里的所有文件到D:\SQL2005\MSSQL\Servers\
复制CD2(卷标为SQLTOOLS) 的光盘里的所有文件到D:\SQL2005\MSSQL\Tools\

建一个文件:D:\SQL2005\MSSQL\autorun.inf
文件内容是:
[autorun]
shellexecute=Servers\splash.hta *DVD*
icon=Servers\autorun.ico
 

其它操作跟上面提到的是一样的,企业版我也操作过,正常
9.00.4035.00 SP3 Enterprise Edition

还有,上面提到的下载地址应该不是原版的,因为序列号都是集成在里面的,本来以为下载了开发版改下序列号就成企业版了,可是没发现修改的地方,可能是集成到程序里了吧。我想应该不是微软做的,呵呵,所以说可能不是原版的。

== 向分享经验的作者致敬 ==

patindex:使用正则表达式查找字符

在sql server 2000(及以上版本)中,有一些字符串处理函数,可以方便的帮助用户处理字符串的查找。其中一个非常有用的函数patindex('%pattern%',expression),支持正则查找。

函数:patindex('%pattern%',exression)

返回值:

1:开始位置

0:没找到

其他值:在字符串中的位置。

应用举例:找出字段中不是以http://开头的行,并添加http://字符串。这个需求是在友情链接中,由于程序没有对提交的网址进行判断,字段值部分有http://,部分只有域名。读取到页面时不好处理。

update [site] set [address] = 'http://'+[address] where patindex('%http%',[address]) = 0

参考网址:http://database.ctocio.com.cn/tips/446/7006446.shtml Sql Server基本函数介绍。

SQL在SQLite中的支持情况(译稿)

SQLite兼容绝大部分SQL标准语句。然而,SQLite的确忽略了部分SQL特性,同时,拥有一些自己的特性。本文档恰恰就是为了说明SQLite支持哪些特性,不支持哪些特性。这里提供了SQL关键字列表,还有语法表。

下面是已经翻译好的语法主题。

事务:SQLite3 Prepare V2(),SQLite3 Prepare(),SQLite3 Prepare16(),Sqlite exec()和Sqlite3 get_table()接受SQL语句的集合——使用分号(;)分开的SQL语句集。

Sqlite语句集:

语句集中的每条SQL语句,都是下面集合中的一种:

英文版地址:http://www.sqlite.org/lang.html

MSSQL表结构改变后,视图出错的解决方法

MSSQL数据表结构改变之后,会导致与之关联的视图读取表的字段混乱。用下面两种方式可以解决这个问题。

办法一:修改一下视图,只需要执行修改,视图的代码不需要修改,这样视图就会重新获取最新的表结构。

办法二:执行sp_refreshview命令,刷新视图依赖。

为了批量刷新,可以先执行以下语句,“生成”批量刷新所有视图的语句:

select 'sp_refreshview ' + [name] from sysobjects where xtype = 'v'

再把结果复制出来执行即可。

公告栏

  • 姓名:林剑锋(不见不散)
  • 来自:中国-广州
  • 简介:潮汕人,出生于广东揭西。醉心于Web开发8年,挑战了一年整体策划和网站运营。目前就职于平成混媒IT部。
  • Email/QQ:admin@ljf.cn

QQ群:设计学院 68075618,网站设计师 9908776

统计

文章:335篇
评论:163条 (2条Spam)
相册:1个 (120张图片)
主题:Nagrand新主题

www.ljf.cn网站PR查询