仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 794|回复: 7
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之依据基础表布局及其数据天生 INSERT .....

[复制链接]
再见西城 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:27:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
使为了数据安全,我们搭建了主从。但实时主从备份只能防止硬件问题,比如主库的硬盘损坏。但对于误操作,则无能为力。比如在主库误删一张表,或者一个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:29 | 只看该作者
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
简单生活 该用户已被删除
板凳
发表于 2015-1-26 09:35:07 | 只看该作者
多加的系统视图和实时系统信息这些东西对DBA挑优非常有帮助,但是感觉粒度还是不太细。
柔情似水 该用户已被删除
地板
发表于 2015-2-4 13:57:26 | 只看该作者
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
飘灵儿 该用户已被删除
5#
发表于 2015-2-10 01:44:01 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-28 14:05:30 | 只看该作者
外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。
活着的死人 该用户已被删除
7#
发表于 2015-3-17 03:10:34 | 只看该作者
你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
小魔女 该用户已被删除
8#
发表于 2015-3-23 18:10:32 | 只看该作者
比如日志传送、比如集群。。。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-5-7 04:31

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表