CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

EXEC是否存在問題,請教大俠

楼主tangmins(tom)2003-06-03 16:50:47 在 MS-SQL Server / 疑难问题 提问

我使用如下的語句得一錯誤  
  Server:   Msg   510,   Level   16,   State   2,   Line   1  
  Cannot   create   a   worktable   row   larger   than   allowable   maximum.   Resubmit   your   query   with   the   ROBUST   PLAN   hint.  
  語句如下  
  DECLARE   @EXECSQL   VARCHAR(500)  
  declare   @sourceservername   char(20)  
  declare   @destinationservername   char(20)  
  declare   @dbname   char(20)  
  set   @sourceservername='FILESRV'  
  set   @destinationservername='FILESRV'  
  set   @dbname='WY2000_80'  
   
  SET   @EXECSQL='INSERT   INTO     '+  
  LTRIM(RTRIM(@DESTINATIONSERVERNAME))+  
  '.WY2000.DBO.TRIGGERS     (DBNAME,TBNAME,NAME,CONTENT,ID)   '+  
  '   SELECT     '''+LTRIM(RTRIM(@DBNAME))+''',d.NAME,   A.NAME,C.TEXT,A.ID   '+  
  '   FROM     '+LTRIM(RTRIM(@SOURCESERVERNAME))+'.'+RTRIM(LTRIM(@DBNAME))+'.DBO.SYSOBJECTS   A,   '+  
  LTRIM(RTRIM(@SOURCESERVERNAME))+'.'+RTRIM(LTRIM(@DBNAME))+'.DBO.SYSCOMMENTS     C,   '+  
  LTRIM(RTRIM(@SOURCESERVERNAME))+'.'+RTRIM(LTRIM(@DBNAME))+'.DBO.SYSOBJECTS     D   '+  
  '   WHERE   D.XTYPE=''U''     AND     A.PARENT_OBJ=D.ID   '+  
  '   AND   A.XTYPE=''TR''   AND   C.ID=A.ID   '+  
  '   AND   RTRIM(A.NAME)   NOT   IN   '+  
  '   (SELECT   RTRIM(TR.NAME)     FROM   '+  
  LTRIM(RTRIM(@DESTINATIONSERVERNAME))+  
  '.WY2000.DBO.TRIGGERS   TR   WHERE     RTRIM(UPPER(TR.DBNAME))='''+  
  RTRIM(LTRIM(upper(@DBNAME)))+'''   )'  
  EXEC(@execsql)  
   
  如果用下面的語句就不會出錯:  
    SELECT     'WY2000_80',d.NAME,   A.NAME,C.TEXT,A.ID    
    FROM   SYSOBJECTS   A,SYSCOMMENTS     C,   .SYSOBJECTS     D    
    WHERE   D.XTYPE='U'     AND     A.PARENT_OBJ=D.ID    
  AND   A.XTYPE='TR'   AND   C.ID=A.ID    
    AND   RTRIM(A.NAME)   NOT   IN    
    (SELECT   RTRIM(TR.NAME)     FROM   WY2000.DBO.TRIGGERS   TR   WHERE     RTRIM(UPPER(TR.DBNAME))='WY2000_80')  
   
   
   
  請各位大俠指教。謝謝。 问题点数:0、回复次数:5Top

1 楼weixiao51(4fen)回复于 2003-06-03 17:01:19 得分 0

可能是你的字段总长度超过8000了吧  
  试试将较大的字段改成text型Top

2 楼liuyun2003(流云(老老实实做人,认认真真还贷))回复于 2003-06-03 17:04:13 得分 0

WY2000.DBO.TRIGGERS     这个可能也是问题。表名可是使用保留字吗?如果使用的话,应该是要加[]的吧??Top

3 楼joygxd(不经风雨怎见彩虹)回复于 2003-06-03 17:23:00 得分 0

应该是超长了Top

4 楼pengdali()回复于 2003-06-03 17:34:08 得分 0

DECLARE   @EXECSQL   VARCHAR(5000)  
  declare   @sourceservername   varchar(20)  
  declare   @destinationservername   varchar(20)  
  declare   @dbname   varchar(20)  
  set   @sourceservername='FILESRV'  
  set   @destinationservername='FILESRV'  
  set   @dbname='WY2000_80'  
   
  SET   @EXECSQL='INSERT   INTO     '+  
  LTRIM(RTRIM(@DESTINATIONSERVERNAME))+  
  '.WY2000.DBO.TRIGGERS     (DBNAME,TBNAME,NAME,CONTENT,ID)   '+  
  '   SELECT     '''+LTRIM(RTRIM(@DBNAME))+''',d.NAME,   A.NAME,C.TEXT,A.ID   '+  
  '   FROM     '+LTRIM(RTRIM(@SOURCESERVERNAME))+'.'+RTRIM(LTRIM(@DBNAME))+'.DBO.SYSOBJECTS   A,   '+  
  LTRIM(RTRIM(@SOURCESERVERNAME))+'.'+RTRIM(LTRIM(@DBNAME))+'.DBO.SYSCOMMENTS     C,   '+  
  LTRIM(RTRIM(@SOURCESERVERNAME))+'.'+RTRIM(LTRIM(@DBNAME))+'.DBO.SYSOBJECTS     D   '+  
  '   WHERE   D.XTYPE=''U''     AND     A.PARENT_OBJ=D.ID   '+  
  '   AND   A.XTYPE=''TR''   AND   C.ID=A.ID   '+  
  '   AND   RTRIM(A.NAME)   NOT   IN   '+  
  '   (SELECT   RTRIM(TR.NAME)     FROM   '+  
  LTRIM(RTRIM(@DESTINATIONSERVERNAME))+  
  '.WY2000.DBO.TRIGGERS   TR   WHERE     RTRIM(UPPER(TR.DBNAME))='''+  
  RTRIM(LTRIM(upper(@DBNAME)))+'''   )'  
  EXEC(@execsql)  
   
   
   
   
  ????Top

5 楼tangmins(tom)回复于 2003-06-03 18:53:06 得分 0

問題應是在content上面,TRIGGERS中的content是text型,而SYSCOMMENTS則是varbinary型,  
  有的時間執行不出錯,有的時候則出錯。Top

相关问题

  • 求教:是否存在控件数组?
  • 请教,pb中是否存在函数类似VC中的wait()?????
  • 高手请执教! 判断文件是否存在的问题!!
  • 请教判断表中记录是否存在写法
  • 请教:如何知道某个数据库是否存在?
  • 请教:C++如何判断某一文件是否存在?
  • 请教如何判断一个session是否存在,如果存在是什么类型的?
  • 请教如何判断ACCESS数据库中是否存在某表?谢谢
  • 请教一个file类检测文件是否存在的问题
  • 请教如何判断目录中的某个文件是否存在???

关键词

  • sourceservername
  • rtrim
  • ltrim
  • destinationservername
  • dbname
  • filesrv
  • execsql
  • wy2000
  • dbo
  • triggers

得分解答快速导航

  • 帖主:tangmins

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo