小妖女 发表于 2015-1-16 22:37:29

MSSQL网页设计利用SQL Server 2000创立一时Job异步执...

Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用server|创立|剧本|异步|实行
使用场景:
在复杂的数据库中良多庞大的更新查询十分的耗时。为了不用户长工夫的守候,那些耗时的操纵能够接纳异步实行的办法,立即前往实行信息给用户,同时在数据库背景实行操纵,比及实行终了再更新数据表。

开辟情况:
SQLSERVER2000.NET

办理计划:
在SQLSERVER2000中创立一个一时的Job,(大概流动的Job,依据详细的使用场景),传送必要实行的SQLbatch剧本,然后启动这个Job。如许就能够在数据库取得异步伐用的功效了。因为创立的是一时的Job,
SQLSERVER在该Job运转停止今后会主动删除该Job。

弱点:该存储历程必需指定命据库的名字

====================================================================================
/******************************************************************************
*Author:iret
*Desc:CreatetemporaryjobtoprovideasynchronouslyinvokingSQLbatch
*在SQLSERVER2000中创立用于实行异步伐用的一时Job
*@EXECSQL:Transact-SQLbatch
*Eample:EXECdbo.AsynchronousInvoking@EXECSQL=UPDTAEcustomerSETbalance=0
*弱点:该存储历程必需指定命据库的名字
*ModifiedDate:2004/11/03
******************************************************************************/
CREATEProceduredbo.AsynchronousInvoking
@EXECSQLnvarchar(4000)
AS

BEGINTRANSACTION
DECLARE@JobIDBINARY(16)
DECLARE@ReturnCodeINT
SELECT@ReturnCode=0

BEGIN

--Addthejob
EXECUTE@ReturnCode=msdb.dbo.sp_add_job@job_id=@JobIDOUTPUT,
@job_name=Ntemp_sqljob,
@owner_login_name=N,
@description=Ndescriptionforjob,--thedescriptionofthejob
@category_name=N,
@enabled=1,
@notify_level_email=0,
@notify_level_page=0,
@notify_level_netsend=0,
@notify_level_eventlog=0,
@delete_level=3

IF(@@ERROR0OR@ReturnCode0)GOTOQuitWithRollback

--Addthejobsteps
EXECUTE@ReturnCode=msdb.dbo.sp_add_jobstep@job_id=@JobID,
@step_id=1,
@step_name=Nstep1,
@command=@EXECSQL,--sqlbatch
--弱点:该存储历程必需指定命据库的名字
@database_name=Nyour_database_name,--thedatabasenameofthejobtomanipulate
@server=N,
@database_user_name=Nappuser,
@subsystem=NTSQL,
@cmdexec_success_code=0,
@flags=0,
@retry_attempts=0,--executeonceonly
@retry_interval=0,
@output_file_name=N,
@on_success_step_id=0,
@on_success_action=1,--onsuccessabort
@on_fail_step_id=0,
@on_fail_action=2--onfailabort

IF(@@ERROR0OR@ReturnCode0)GOTOQuitWithRollback

--setthestarstepidofthejob
EXECUTE@ReturnCode=msdb.dbo.sp_update_job@job_id=@JobID,
@start_step_id=1

IF(@@ERROR0OR@ReturnCode0)GOTOQuitWithRollback

--AddtheTargetServers
EXECUTE@ReturnCode=msdb.dbo.sp_add_jobserver@job_id=@JobID,
@server_name=N(local)

IF(@@ERROR0OR@ReturnCode0)GOTOQuitWithRollback

END

COMMITTRANSACTION
GOTOEndSave

QuitWithRollback:
IF(@@TRANCOUNT>0)BEGIN
ROLLBACKTRANSACTION
RETURN1
END
EndSave:

--starthejobimmediately
EXEC@ReturnCode=msdb.dbo.sp_start_job@job_id=@JobID

--returntotheinvokerimmediately
RETURN@ReturnCode

GO
SETQUOTED_IDENTIFIEROFF
GO
SETANSI_NULLSON
GO


这章描述如何检查和处理在MySQL数据库中的数据损坏。如果你的表损坏很多,你应该尝试找出其原因!见G.1调试一个MySQL服务器。

只想知道 发表于 2015-1-19 19:03:23

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

admin 发表于 2015-1-28 09:38:26

另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);

精灵巫婆 发表于 2015-2-5 18:14:04

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

再见西城 发表于 2015-3-3 14:38:27

SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)

兰色精灵 发表于 2015-3-11 11:33:30

外键的级联更能扩展可能大部分的同行在设计OLTP系统的时候都不愿意建立外键,都是通过程序来控制父子数据的完整性。

山那边是海 发表于 2015-3-18 08:15:35

现在是在考虑:如果写到服务器端,我一下搞他个10个存储过程导过去,那久之服务器不就成垃圾箱了吗?即便优化了我的中间层.

愤怒的大鸟 发表于 2015-3-25 14:30:03

但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)
页: [1]
查看完整版本: MSSQL网页设计利用SQL Server 2000创立一时Job异步执...