ASP.NET预编译更新问题与SQL 2005标识列继承问题

ASP.NET预编译更新问题

     唉,今天客户又打电话过来尔抱怨说“又有页面出错了,不能老这样呀,这个问题你必须查清楚,然后给我一个答复!!”,具体的错误信息如下 :

 未能加载文件或程序集“App_Web_g0e7hiww,   Version=0.0.0.0,   Culture=neutral,   PublicKeyToken=null”或它的某一个依赖项。系统找不到指定的文件。  

      对于这个问题,之前也是有出现过,所以客户显得有点不耐烦了。一个解决办法就是把对应的页面文件打开再保存一下就可以了,但这个好像有点治标不治本,

因为我们网站发布时是使用单页程序集发布的(就是一个页面对应一个dll文件,这个更新时只要更新对应改动过的页面就可以),倒,这个问题出得有点莫名其妙。
      网上找了下资料,有又一种解决办法:在web.config里配置成这样子: <compilation debug="true" batch="false"> ,只是这种方法不知是不是治本的方案,这还有待时间的证明。
      唉,问题的真正原因还是没找到,客户那边只好应付说更新时缓存没清掉。
      这里也出现相同的问题,大家可以看一下:http://topic.csdn.net/t/20060717/16/4885830.html

  

SQL 2005标识列继承问题

      在点击查看列表时,出现了以下一个异常:

 无法使用 SELECT INTO 语句将标识列添加到表 '#TMP_FB37F2DD_6103_414A_931B_6EB0D9664369',该表的列 'ID' 已继承了标识属性。

这个主要我们在取数据时,用到了一个分页的存储过程,将一页的数据插入到临时表,代码片断如下:
ContractedBlock.gif ExpandedBlockStart.gif Code
--创建一个用于分页的空的临时表
SELECT IDENTITY(BIGINT,1,1AS ROWID,
       
* INTO #TMP_39F71656_CFF0_4FAA_BE24_9E62B12488E1
FROM   (
           
SELECT TOP 0  *
           
FROM   T_forum_speaker
           
WHERE  Forum_ID = 1169
             
AND  fallnum = 13
           
ORDER BY
                  orderid
       ) 
AS T ; 

此时这个临时表#TMP_39F71656_CFF0_4FAA_BE24_9E62B12488E1可能会有两个标识列:ROWID和ID(表 T_forum_speaker的主键),根据微软的官方文档,这是不允许,如下所示:

将现有标识列选入新表时,新列将继承 IDENTITY 属性,除非下列条件中的一个成立
·SELECT 语句包含联接、GROUP BY 子句或聚合函数。
·多个 SELECT 语句由 UNION 联接。
·标识列在选择列表内多次列出。
·标识列是表达式的一部分。
·标识列来自远程数据源。

请参阅http://technet.microsoft.com/zh-cn/library/ms188029.aspx

可是,我们这个系统之前都运行得好好的,忽然想起前天因为要统计各个表占用的空间而修改了数据库的属性里的“兼容级别”,会不会这个引起的了?好,把数据库的属性设置还原过去。再访问一下页面,呵呵,OK了!!
     数据库-->属性-->选项-->兼容级别:改为原来的“SQL Server 2000(80) ”

估计在兼容级别(SQL Server 2000)下,新列不会继承IDENTITY属性,呵呵,这个还有待去验证。呵呵,肚子有点饿了,去吃饭了,下次再验证了

转载于:https://www.cnblogs.com/icewindq/archive/2009/11/12/1602055.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值