Please start any new threads on our new 
    site at https://forums.sqlteam.com.  We've got lots of great SQL Server
    experts to answer whatever question you can come up with. 
    
        
            
                
                    
                        
                            
                                | Author | 
                                
                                 Topic  | 
                             
                            
                                    | 
                                         AjarnMark 
                                        SQL Slashing Gunting Master 
                                         
                                        
                                        3246 Posts  | 
                                        
                                        
                                            
                                            
                                             Posted - 2002-03-11 : 16:50:16
                                            
  | 
                                             
                                            
                                            Credit for this script really goes to ToddV (see [url]http://www.sqlteam.com/Forums/topic.asp?TOPIC_ID=13737[/url])The following script issues a DBREINDEX command against every table in every database on your server.  It can be modified to issue other commands, but this one in particular is helpful as we are migrating about 30 databases from SQL 7 to SQL 2000 (new server) and re-indexing is recommended.  Here's the script:DECLARE @SQL  NVarchar(4000)SET @SQL = ''SELECT @SQL = @SQL + 'EXEC ' + NAME + '..sp_MSforeachtable @command1=''DBCC DBREINDEX (''''*'''')'', @replacechar=''*''' + Char(13)FROM MASTER..SysdatabasesWHERE dbid > 6  -- skip the 6 built-in databases.  Remove to process ALLPRINT @SQL  -- Only if you want to see the code you're about to execute.EXEC (@SQL)Notes:  There is a limit (nvarchar 4000) to how big your command can be, so too many databases will halt this.------------------------GENERAL-ly speaking... | 
                                             
                                         
                                     | 
                             
       
                            
                       
                          
                            
                                    | 
                                     robvolk 
                                    Most Valuable Yak 
                                     
                                    
                                    15732 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2002-03-11 : 17:01:01
                                          
  | 
                                         
                                        
                                          | Mark-Couldn't you use varchar(8000) instead?  EXEC can use varchar, and sp_MSforeachtable also takes varchar values.   | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                       
                          
                            
                                    | 
                                     AjarnMark 
                                    SQL Slashing Gunting Master 
                                     
                                    
                                    3246 Posts  | 
                                    
                                      
                                        
                                          
                                           
                                            Posted - 2002-03-11 : 17:26:56
                                          
  | 
                                         
                                        
                                          | Yes, you are correct.  I thought of that as I was typing my note, but didn't take time then to test it.  I just tested it and it worked fine.  Of course, this means there's still a limit, but it's much higher... somewhere around 80 DBs, I'm guessing, depending on the length of your database names.Also, you can change the * to a ?, which is the default replacechar, and then strip off the , @replacechar=''*''' syntax.  That was a leftover from something else I tried and is not necessary here.------------------------GENERAL-ly speaking...Edited by - AjarnMark on 03/11/2002  17:27:43  | 
                                         
                                        
                                            | 
                                         
                                       
                                     | 
                                   
                            
                            
                                | 
                                    
                                      
                                     
                                    
                                 | 
                             
                         
                     | 
                 
             
         |   
     
     
            
              
	     |  
		
			
     
          
		 |