仓酷云

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

[学习教程] MSSQL网站制作之天生表中的数据的剧本。

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

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

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

x
出于效率方面的考虑,InnoDB数据表的数据行级锁定实际发生在它们的索引上,而不是数据表自身上。显然,数据行级锁定机制只有在有关的数据表有一个合适的索引可供锁定的时候才能发挥效力。剧本|数据
在A服务器中有表table1,想把该表的内容导到B服务器中,这两个数据库没联网,怎样办?
导成内部文件,再用导进导出。。。。这太笨了吧,假如对方服务器是INTERNET上的,只能实行服本怎样办,晕逝世了吧,用这个存储历程来帮你。
ALTERprocsp_GetTableData
@objnamenvarchar(776)
as
--set@objname=s_coderule

/*declare@novarchar(35),@yesvarchar(35),@nonevarchar(35)
select@no=namefrommaster.dbo.spt_valueswheretype=Bandnumber=0
select@yes=namefrommaster.dbo.spt_valueswheretype=Bandnumber=1
select@none=namefrommaster.dbo.spt_valueswheretype=Bandnumber=2
*/
declare@numtypesnvarchar(80)
select@numtypes=Ntinyint,smallint,decimal,int,real,money,float,numeric,smallmoney,varbinary,bit
declare@chartypesnvarchar(80)
select@chartypes=Nchar,varchar,text,nchar,ntext,nvarchar
declare@datetypesnvarchar(80)
select@datetypes=Ndatetimesmalldatetime
declare@LimitlengthInt,@Limitlength1Int

declare@objidbigint
--declare@sysobj_typechar(2)
select@objid=id
--,@sysobj_type=xtype
fromsysobjectswhereid=object_id(@objname)
set@Limitlength=0
set@limitLength1=0
declare@namevarchar(30),@typevarchar(10),@lengthint,@FieldSQLvarchar(5000),@SQLvarchar(8000),@identsmallint
set@SQL=
set@FieldSQL=

declarecurcursor
for

select
Column_name=name,
Type=type_name(xusertype),
Length=convert(int,length),
Ident=colstat
fromsyscolumnswhereid=@objidandnumber=0orderbycolid

openCur
fetchnextfromcurinto@name,@type,@length,@ident
while@@fetch_status=0
begin
if@Ident=0
begin
if@Limitlength>200
begin
set@sql=@sql+,
set@limitlength=0
end

if@Limitlength1>200
begin
set@Fieldsql=@Fieldsql+char(39)+,+char(39)
set@limitlength1=0
end
Set@FieldSQl=@FieldSQL+LTrim(Rtrim(@name))+,
ifcharindex(@type,@numtypes)>0--(+convert(char(6),@length)+)
set@sql=@SQL++Casewhen+@name+isnullthenNullelseRtrim(Convert(char,+@name+))end
elseifcharindex(@type,@chartypes)>0
set@sql=@SQL++Casewhen+@name+isnullthenNullelse+char(39)+RTrim(+@name+)+char(39)end
elseifcharindex(@type,@datetypes)>0
set@sql=@SQL++Casewhen+@name+isnullthenNullelse+char(39)+RTrim(convert(char(19),+@name+,120))+char(39)end
set@SQL=@SQL+++char(39)+,+char(39)
set@Limitlength=@Limitlength+@Length
set@Limitlength1=@Limitlength1+Len(@Name)

end

fetchnextfromcurinto@name,@type,@length,@ident
end
closecur
deallocatecur

--print@sql
ifright(@FieldSQl,1)=char(39)
SET@FieldSQL=Substring(@FieldSQL,1,len(@FieldSQL)-5)
else
SET@FieldSQL=Substring(@FieldSQL,1,len(@FieldSQL)-1)

ifright(@SQl,1)=,
SET@SQL=Substring(@SQL,1,len(@SQL)-5)
else
SET@SQL=substring(@SQL,1,len(@SQL)-4)

--print(@FieldSQL)



set@FieldSQl=select+char(39)+insertinto+@objname+(+@FieldSQL+)
--set@FieldSQl=select+char(39)+insertinto+@objname+(+@FieldSQL+)
print@FieldSQL

set@Sql=values(+char(39)+@SQL+++char(39)+)+char(39)+from+@objname

print@SQL

set@sql=@fieldsql+@sql
exec(@sql)

--Exec@FieldSQl+@sql
--selectRtrim(isnull(convert(char(8),Did),))froms_send_files

GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO

看看了局吧,有一些BUG,够用就行,懒得改了。
“数据行级锁定”的意思是指在事务操作的执行过程中锁定正在被处理的个别记录,不让其他用户进行访问。这种锁定将影响到(但不限于)SELECT、LOCKINSHAREMODE、SELECT、FORUPDATE命令以及INSERT、UPDATE和DELETE命令。
活着的死人 该用户已被删除
沙发
发表于 2015-1-19 19:50:29 | 只看该作者
having子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having条件显示特定的组,也可以使用多个分组标准进行分组。
板凳
发表于 2015-1-25 18:09:19 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
深爱那片海 该用户已被删除
地板
发表于 2015-2-3 12:39:50 来自手机 | 只看该作者
理解了存储结构,再阅读下性能优化的章节基本上会对sqlserver有个清晰地认识
若相依 该用户已被删除
5#
发表于 2015-2-9 00:46:12 | 只看该作者
代替了原来VB式的错误判断。比Oracle高级不少。
精灵巫婆 该用户已被删除
6#
发表于 2015-3-8 15:51:11 | 只看该作者
需要注意的一点,也是我使用过程中发现的一个问题。在建立function->schema->table后,如果在现有的分区表上建立没有显式声明的聚集索引时,分区表会自动变为非分区表。这一点很让我纳闷。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-16 03:49:49 | 只看该作者
财务软件要用SQL也只是后台的数据库而已,软件都是成品的,当然多学东西肯定是有好处的..
透明 该用户已被删除
8#
发表于 2015-3-22 19:40:50 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-12-22 23:46

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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