By: Daniel Farina | Updated: 2017-07-06 | Comments (5) | Related: More >Database Administration
Problem
Invoke-Sqlcmd is Now Available for MacOS & Linux in the SqlServer module. The module has been posted as v21.1.18095-preview which means to download the module you'll have to add the. @JonofAllTrades By default yes, SQLCMD sends all output to stdout. However, you can instruct SQLCMD to send errors to stderr via the -r0 command-line switch, in which case they can be redirected to a file using 2, or they can be displayed while regular messages are redirected via. Please see my answer for details. – Solomon Rutzky Aug 12.
Usually when we need to run a SQL script we open it in SQL Server ManagementStudio and execute it, but there are cases when the file is too big. For example,when the script we need to run is a scripted database containing a large schemaand data. Also, you may need to run a script on a SQL Server instance running onLinux where you cannot connect using SSMS due to firewall rules. In this tip I will showyou how you can accomplish these tasks with sqlcmd.
Solution
It is a fact that we as SQL Server DBA’s are more prone to use graphical toolsfor our day to day work, mostly because SQL Server has historically run on theWindowsplatforms. Things are changing and with the release of SQL Server 2017 itwon’t be uncommon to see SQL Server instances running on Linux. That willforce us to adapt to new ways of doing our work, like running script files.
Sqlcmd to the Rescue
As I told you in my previous tipIntroduction to SQL Server's sqlcmd Utility, this command line tool allows youto execute T-SQL statements, stored procedures, and script files from theconsole. Amongst the sqlcmd arguments there are three that will serve us when weneed to execute a script from the command line.
Argument | Description |
---|---|
-i <filename> | This argument followed by the script name serves as input for sqlcmd.After executing the commands in the input file sqlcmd exits. |
-o <filename> | With this argument you can make the input queries write the outputto a file. |
-u | Specifies that the output file is stored in Unicode format. |
-e | Echo input. Basically, when you specify this argument, sqlcmd writesthe commands of the input file to the console or the output file beforeshowing the results. |
SQL Server sqlcmd Examples
Now I will show you a few examples on how to run script files with sqlcmdfor different scenarios. I am using a script file with the AdventureWorksDW databasewhich you can download from Microsoft for free at this link:AdventureWorks Databases and Scripts for SQL Server 2016.
Passing an Input file to sqlcmd
If you need to execute a script file with sqlcmd on a server using Windows Authentication(a Trusted Connection), you can do so with the following command:
The –S argument is the server name, and the –E argument is for a TrustedConnection.
On the other hand, if we need to accomplish the same task, but use aSQL Server login, there is a slight variation to the previous command:
In this command the –U argument is used to specify the SQL login account andthe –P is for the account password. As you may notice, this is not the best wayto authenticate to SQL Server if you need to use sqlcmd in a batch script, sinceit shows the password.
Saving the Output to a Text File
Usually when we are running a big script, we cannot use thescreen output to determine if one of the batches on the input script has failedbecause the output is displayed really fast on the screen. To overcome this situationwe must redirect the output to a text file for further analysis.
The following command will connect to SQL Server using Windows Authentication,execute the file after the –i argument and save the execution results in the fileafter the –o argument.
Saving the Output to a Text File Including the Input Batches
This feature is very useful when you are running small scripts on a databaseand need to send the results to another person, like the development team. To doso, we have to add the –e argument:
Remember that the –e argument is not required to be used with the –o option.You can also use it without the –o argument if you need the results to be displayedon the screen. That may be useful if you are invoking sqlcmd from another programthat reads the standard output.
Suppose you have a script file named sample.sql with the following contents:
Get Sqlcmd For Mac Windows 7
If you want to execute this file and display the output to the console, youcanuse the following command:
The output of the command will be like the screen capture below. I enclosedthe commands with a red box to make this clear.
Next Steps
- Read my previous tip -Introduction to SQL Server's sqlcmd Utility.
- If you need to execute multiple files with sqlcmd, you can take a look atArmando’s tip:Using SQLCMD to Execute Multiple SQL Server Scripts.
- If what you need is to run a SSIS package from command line, please reviewthe following stepCommand line tool to execute SSIS packages from theSQL Server Integration Services (SSIS) Tutorial.
- Need to run Analysis Services scripts from the command line? In the followingtip you will find the answers:Using ASCMD to run command line scripts for SQL Server Analysis Services.
Last Updated: 2017-07-06
Get Sqlcmd For Mac Torrent
About the author
View all my tips