BrianRudloff.com

.Net Development


My Resume
WebDOCPDF
RTFODTTXT
powered by emurse

Recent comments





SQL Server Index Issue - Causes "Order By" Error

I recently came across the following error after using the SQL Server 2005 Index Tuning Wizard:

A column has been specified more than once in the order by list.  Columns in the order by list must be unique.

I assumed the error was caused by a line in one of my stored procedures or triggers and I spun my wheels for quite some time looking for the root cause.  As it turns out,  the tuning wizard added several hypothetical indexes to my table that weren't displaying when I tried to view the indexes the traditional way (right clicking on the table and choosing 'manage indexes'.  To see them, I had to run the following stored procedure:  sp_helpindex ('table') 

After dropping all of the hypothetical indexes,  the issue was resolved.   

 

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Categories: sql
Posted by Brian Rudloff on Tuesday, January 29, 2008 11:51 PM
Permalink | Comments (0) | Post RSSRSS comment feed

Exporting SQL Data to Excel Programatically (Without DTS)

The following code can be used for creating a spreadsheet on the fly and presenting it to a user for download.  It's important to note that it doesn't really create a spreadsheet on the fly... rather it copies a template sheet and then populates the copy.  Either way, to the user its transparent.  Just create a template sheet with all of your column names and store it in one of your project folders.

The code is as follows:

protected void btn_exportdata_Click(object sender, EventArgs e)

     {               
         //Creates a guid named filequid (unique identifier)
        Guid fileguid = Guid.NewGuid();
        //String the new filename  * Replace “Server_Name” & “Folder_Name”     
        string filename = @"\\Server_Name\Folder_Name\" + fileguid.ToString() + ".csv";
        
        //Create the new file and copy the template column names into it * Replace “Server_Name” & “Folder_Name”
       File.Copy(@"\\Server_Name\Folder_Name\Template.xls", filename);              
      
       //Make your database connection
        string cs = ConfigurationManager.ConnectionStrings["ConnectionString"].ToString();
        SqlConnection dbConnection = new SqlConnection(cs);
        dbConnection.Open();
       
       //Create sql command
        SqlCommand export_data = dbConnection.CreateCommand();
       
       //Populate sql command * Replace “Select * from customers” with your select command
       export_data.CommandText = @"insert into OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=" +     filename + ";', 'SELECT * FROM [Sheet1$]') select * from customers";
                    
        //Execute sql command
         export_data.ExecuteNonQuery();
       
        //Close the connection
         dbConnection.Close();
       
      //Present the spreadsheet to the user for download * Replace “sitename.com/Folder_Name” with your specifics
        Response.Redirect("http://sitename.com/Folder_Name/" + fileguid.ToString() + ".csv");
    }

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , ,
Categories: .net | c# | sql | excel
Posted by Brian Rudloff on Thursday, August 30, 2007 8:45 AM
Permalink | Comments (0) | Post RSSRSS comment feed