将临时表改为普通表,用完后删除select * into newtable from your table
...
drop table newtable

解决方案 »

  1.   

    1、建一個全域的temp table (##),用一個字段來區分每一個連線的數據。如:
      Create table ##GlobalTable(SecID int,....)
      INSERT INTO ##GlobalTable 
      SELECT @@SPID,......  /*@@SPID是每一條連線的ID,可根據這個來區分 */2、不要在程序中生成临时表,直接在存儲過中生成數據。在外部程中接受SP的計算結果。
      例:
      Create Proc ProcName ....
      AS
         CREATE Table #tmp (.....)
         ......
         SELECT * From #tmp
      程式外部
      Create table #tempResult(....)
      INSERT INTO #tempReult)
      EXEC ProcName
    3、若是SQL Server2000,則可用XML技術。
       程式外部把這些數據組成XML字串,然後在存儲過中用OpenXML函數重新成結果集。
      例:
      Create ProcName @xmlData text,.....
      AS
        Declare @myid int
        Create table #tmp(....)    exec sp_xml_preparedocument @myid OUTPUT, @xmlData
        INSERT INTO #tmp
        SELECT *
        FROM   OPENXML (@myid,.......