Click here to Skip to main content
Click here to Skip to main content

Tip: Run a Transact-SQL Script (.SQL File) From the Command Line

By , 22 Dec 2010
 
This tip isn't really anything much, just a tidbit to stuff away in the file folder of useful snippets. Therefore I am putting this in the Scrapbook section.
 

Running a Transact-SQL Query in a Quick-And-Dirty Fashion

 
Say I have a .sql file and I want to run it very quickly against a certain database on my computer. I happen to know I can connect to a database using plain-old-fashioned Windows Authentication and integrated security, so we aren't doing anything fancy.
 

Tutorial: Northwind Database

 
This small tutorial assumes you've downloaded and installed the Northwind database on your instance of SQL Server Express. If not, see my article at HowTo: Install the Northwind and Pubs Sample Databases[^] if you're using SQL Server 2005 Express, or HowTo: Install the Northwind and Pubs Sample Databases in SQL Server 2008 Express[^] if you're using SQL Server 2008 Express.
 
Let's create a .sql query file for use against the Northwind database, which I will say is on the SQLEXPRESS instance on my computer, called COMPUTER as its computer name.
 
The following code is in the MyQuery.sql file:
 
SELECT TOP 10 * FROM Customers
 
I typed the above into Notepad and then saved it as myQuery.sql on the Desktop. Now let's whip it off. Click the Start button, and then click Command Prompt.
 
Next, at the C:\> prompt, type:
 
C:\Users\bchart\Desktop\> sqlcmd -S COMPUTER\SQLEXPRESS -d Northwind -i myQuery.sql
 
That's all you do if you want to exec a quickie query from a .sql script file against a specific server instance and database. Type:
 
C:\Users\bchart\Desktop\> sqlcmd -?
 
For more juicy command-line goodness :)
 

Now Let's Put this To Work

 
This is a great tip, because what if you have a command-line console application you've written in C# to do, e.g., automated database reporting, and you have it living as, e.g., a Scheduled Task. Now what if you have some .sql Transact-SQL script you need that process to run and it's some ungodly long stored-procedure creation script or whatever.
 
Well, with the tip above, just make a C# call to run the command line above from your code, as in:
 
using System.Diagnostics;
 
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.CreateNoWindow = true;
process.StartInfo.FileName = "sqlcmd.exe";
process.StartInfo.Arguments = "-S COMPUTER\\SQLEXPRESS -d Northwind -i myQuery.sql";
process.StartInfo.WorkingDirectory = @"C:\Users\bchart\Desktop";
process.Start();
process.WaitForExit();
 
This C# code does identically the same thing as when I ran the command line above by hand from the Command Prompt. Clickety to this nice article[^] to learn more about spawning child processes from code!
 
Brian

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Brian C Hart
Software Developer (Senior) Corrugated Technologies, Inc.
United States United States
Member
From Fridley, Minnesota and I like computer programming! When I got started, I was working mostly with Windows GUI programming in C/C++. Then later on I worked with COM/DCOM for a school internship. I used COM/DCOM to write an ad hoc cluster server and job-running environment for a cluster of 24 Windows-based high-end visualization workstations. I moved on to C# and have been working in C# and Windows Forms ever since. I have yet to embrace Silverlight Smile | :)

Sign Up to vote   Poor Excellent
Add a reason or comment to your vote: x
Votes of 3 or less require a comment

Comments and Discussions

 
Hint: For improved responsiveness ensure Javascript is enabled and choose 'Normal' from the Layout dropdown and hit 'Update'.
You must Sign In to use this message board.
Search this forum  
    Spacing  Noise  Layout  Per page   
Questionsqlcmd output or statusmemberkkeyur21 Nov '12 - 0:18 
GeneralReason for my vote of 4 great tipmemberdaltonrs@hotmail.com11 Jan '11 - 0:15 
GeneralReason for my vote of 3 goodmemberSumit Kumar Pranav27 Dec '10 - 7:02 
GeneralReason for my vote of 5 Thanks for sharing this tip.memberlinuxjr23 Dec '10 - 2:23 
GeneralReason for my vote of 5 Good one............:-)memberVivek Johari22 Dec '10 - 21:52 
GeneralReason for my vote of 5 Thanks, I will be able to use this.memberRockingDownTheHighway22 Dec '10 - 11:21 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Permalink | Advertise | Privacy | Mobile
Web02 | 2.6.130523.1 | Last Updated 22 Dec 2010
Article Copyright 2010 by Brian C Hart
Everything else Copyright © CodeProject, 1999-2013
Terms of Use
Layout: fixed | fluid