仓酷云

标题: MSSQL网页编程之依据基础表布局及其数据天生 INSERT ..... [打印本页]

作者: 再见西城    时间: 2015-1-16 22:27
标题: MSSQL网页编程之依据基础表布局及其数据天生 INSERT .....
使为了数据安全,我们搭建了主从。但实时主从备份只能防止硬件问题,比如主库的硬盘损坏。但对于误操作,则无能为力。比如在主库误删一张表,或者一个update语句没有指定where条件,导致全表被更新。数据
createprocspGenInsertSQL
@TableNameasvarchar(100)
as
--declare@TableNamevarchar(100)
--set@TableName=orders
--set@TableName=eeducation
DECLARExCursorCURSORFOR
SELECTname,xusertype
FROMsyscolumns
WHERE(id=OBJECT_ID(@TableName))
declare@F1varchar(100)
declare@F2integer
declare@SQLvarchar(8000)
set@sql=SELECTINSERTINTO+@TableName+VALUES(
OPENxCursor
FETCHxCursorinto@F1,@F2
WHILE@@FETCH_STATUS=0
BEGIN
set@sql=@sql+
+casewhen@F2IN(35,58,99,167,175,231,239,61)then+casewhen+@F1+ISNULLthenelseend+else+end
+replace(ISNULL(cast(+@F1+asvarchar),NULL),,)
+casewhen@F2IN(35,58,99,167,175,231,239,61)then+casewhen+@F1+ISNULLthenelseend+else+end
+char(13)+,
FETCHNEXTFROMxCursorinto@F1,@F2
END
CLOSExCursor
DEALLOCATExCursor
set@sql=left(@sql,len(@sql)-5)++)FROM+@TableName
print@sql
exec(@sql)

第二版:2003.03.08

alterprocSPGenInsertSQL(@tablenamevarchar(256))
as
begin
declare@sqlvarchar(8000)
declare@sqlValuesvarchar(8000)
set@sql=(
set@sqlValues=values(+
select@sqlValues=@sqlValues+cols++,+,@sql=@sql+[+name+],
from
(selectcase
whenxtypein(48,52,56,59,60,62,104,106,108,122,127)
thencasewhen+name+isnullthenNULLelse+cast(+name+asvarchar)+end
whenxtypein(58,61)
thencasewhen+name+isnullthenNULLelse+++cast(+name+asvarchar)+++end
whenxtypein(167)
thencasewhen+name+isnullthenNULLelse+++replace(+name+,,)+++end
whenxtypein(231)
thencasewhen+name+isnullthenNULLelse+N++replace(+name+,,)+++end
whenxtypein(175)
thencasewhen+name+isnullthenNULLelse+++cast(replace(+name+,,)asChar(+cast(lengthasvarchar)+))++end
whenxtypein(239)
thencasewhen+name+isnullthenNULLelse+N++cast(replace(+name+,,)asChar(+cast(lengthasvarchar)+))++end
elseNULL
endasCols,name
fromsyscolumns
whereid=object_id(@tablename)
)T
set@sql=selectINSERTINTO[+@tablename+]+left(@sql,len(@sql)-1)+)+left(@sqlValues,len(@sqlValues)-4)+)from+@tablename
--print@sql
exec(@sql)
end

第三版:2003.3.9

ALTERprocSPGenInsertSQL(@tablenamevarchar(256))
as
begin
declare@sqlvarchar(8000)
declare@sqlValuesvarchar(8000)
set@sql=(
set@sqlValues=values(+
select@sqlValues=@sqlValues+cols++,+,@sql=@sql+[+name+],
from
(selectcase
whenxtypein(48,52,56,59,60,62,104,106,108,122,127)
thencasewhen+name+isnullthenNULLelse+cast(+name+asvarchar)+end
whenxtypein(58,61)
thencasewhen+name+isnullthenNULLelse+++cast(+name+asvarchar)+++end
whenxtypein(167,175)
thencasewhen+name+isnullthenNULLelse+++replace(+name+,,)+++end
whenxtypein(231,239)
thencasewhen+name+isnullthenNULLelse+N++replace(+name+,,)+++end
elseNULL
endasCols,name
fromsyscolumns
whereid=object_id(@tablename)andautovalisnull
)T
set@sql=selectINSERTINTO[+@tablename+]+left(@sql,len(@sql)-1)+)+left(@sqlValues,len(@sqlValues)-4)+)from+@tablename
print@sql
exec(@sql)
/*
select*
fromsyscolumns
whereid=object_id(test)andautovalisnull
*/
end

刚安装好的MySql包含一个含空密码的root帐户和一个匿名帐户,这是很大的安全隐患,对于一些重要的应用我们应将安全性尽可能提高,在这里应把匿名帐户删除、root帐户设置密码
作者: 冷月葬花魂    时间: 2015-1-19 12:57
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
作者: 简单生活    时间: 2015-1-26 09:35
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
作者: 柔情似水    时间: 2015-2-4 13:57
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
作者: 飘灵儿    时间: 2015-2-10 01:44
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
作者: 飘飘悠悠    时间: 2015-2-28 14:05
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
作者: 活着的死人    时间: 2015-3-17 03:10
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
作者: 小魔女    时间: 2015-3-23 18:10
比如日志传送、比如集群。。。




欢迎光临 仓酷云 (http://www.ckuyun.com/) Powered by Discuz! X3.2