Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 938
  • Last Modified:

primary key in stored procedure temp table question

Hi,

I use primary key in my temp tables since they hold many rows and I wanted to speed up the performance.  Many of these stored procedures uses open query.  These store proc are fired via scheduled DTS.  The trouble is that they sometimes fail (I don't know why, maybe timeout issues), and the temp tables gets orphaned in tempdb.  The temp tables have unique names w/in tempdb, but not the indexes.  The next time the same sp runs, the pk name is already taken and the sp will fail every scheduled run thereafter.  I could not figure out why the sp fails.  Is there a way the temp table can have unique index names so that if the temp tables gets orphaned, it would not prevent the same sp from running again?  

Unfortunately, the only way I can remove the orphaned temp tables is to restart the sql server.

Thx.
0
skip1000
Asked:
skip1000
  • 4
  • 2
  • 2
  • +1
1 Solution
 
3abqariCommented:
Are you referencing these temp tables only within that given code block in the SP?
0
 
skip1000Author Commented:
yes
0
 
randy_knightCommented:
Not sure why your temp tables are not being dropped.  The temp table are created with # prefix, not ##?  Or hard tables?  By this I mean you can create a permanent table in tempdb just like any other database.  The difference being it will go away when the instance i restarted.  

In any case, to answer your index name question, one solution would be to use dynamic sql to generate a unique index name using NEWID().  Use the REPLACE() function to strip out the - and append it to your index name.

declare @Indexname varchar(50)
set @indexname = 'ix_' + replace(newid(),'-','')
print @indexname

use the @indexname in dynamic sql to create your index.


0
Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

 
sqlconsumerCommented:
Hi Skip,

I was wondering why your creating such big temp tables? Could you achieve your objective by using indexed views ???

Whats going in/out of these temp tables ???

Could you supply an example of your SP ?
0
 
skip1000Author Commented:
bc it is openquery, it is not possible to join rows in mssql to mysql.  for me to be aware of any changes, i would have to take all row (selected fields) from mysql and bring it to mssql b4 i can make any comparison.  these tables in mysql can contain almost 2million rows, therefore, indexing would help w/ processing the info from temp tables.  if u know of a way to compare lots of data (hundreds of thousands of row) from 2 different environment (mysql and ms sql), then you would've indirectly solve my problem.:)
0
 
sqlconsumerCommented:
Hows your knowledge of linked servers???

Here is a link that decribes setting up mySQL as a linked server. It might take a bit of time and patients to get it working, but I think this will create a manageable and scalable solution to your problem.

http://www.sqlservercentral.com/Forums/Topic340912-146-1.aspx

The MSSQL <=> MYSQL marriage is a common industry topic so you should be able to find lots of info out there.

Hope this message has been of help.

sqlconsumer.
0
 
skip1000Author Commented:
i doubt there is a solution for that other than the way I'm doing it.  I posted a question here ages ago and it went unanswered for the longest time.  i think i finally had to just close it.  maybe it was deleted since i can't find any record of that question now.
0
 
skip1000Author Commented:
hi randy_knight,

I tried to create the temp table dynamically, except it disappears as soon as it is created.  seems like the temp table only exist w/in session of the dynamic sql, eg. exec(@sql).  I guess in the worst case, i might have to resort to using permanent tables that get reused each time.
0
 
randy_knightCommented:
Nothing wrong with permanent tables that you create/drop each time.  And put them in tempdb so if they get orphaned they will get dropped on the next SQL Sevice restart.


0

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 4
  • 2
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now