In Part I we saw a few ways of using the SQL Server 2005 SQLCMD command line utility. In Part II of this article, I illustrate how to use transact SQL files and generate output.
Method 7
The SQL Server 2005 command line tool, SQLCMD, can be used to input Transact SQL scripts to be executed on a SQL Server instance. Let us create a C:\Test.sql file with the following code. Refer Fig 1.0
Select @@Servername Go Select @@version Go Select Top 3 name from master..sysdatabases Go
Fig 1.0
Execute the following command at the MS-DOS command prompt as shown below. You will get the following results.
SQLCMD -Stcp:HOME,7005 -E –i C:\Test.sql
Results
C:\Program Files\Microsoft SQL Server\90\Tools\Binn>SQLCMD -Stcp:HOME,7005 -E -i C:\Test.sql -------------------------------------------------------------------------------- ------------------------------------------------ HOME\SQLEXPRESS (1 rows affected) -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- ------------------------------------------------------------ Microsoft SQL Server 2005 - 9.00.2047.00 (Intel X86) Apr 14 2006 01:12:25 Copyright (c) 1988-2005 Microsoft Corporation Express Edition with Advanced Services on Windows NT 5.1 (Build 2600: Service Pack 2) (1 rows affected) name -------------------------------------------------------------------------------- ------------------------------------------------ master tempdb model (3 rows affected)
Method 8
The SQL Server 2005 command line tool SQLCMD output can be formatted either in FIXED length column or in a variable length column. Let us see how to format the output in a variable length.
Execute the following command at the MS-DOS command prompt as shown below. You will get the following results
SQLCMD -Stcp:HOME,7005 -E -Q"Select dbid,name,status,right(filename, charindex('\',reverse(rtrim(filename)))-1) from master..sysdatabases" -y20
Results
dbid name status ------ ----------------------------------------------------------------------------------------------------------------- --------------- ----------- -------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------ ------------------------------------------------ 1 master 65544 master.mdf 2 tempdb 8 tempdb.mdf 3 model 65544 model.mdf 4 msdb 65544 MSDBData.mdf 5 test 1073807369 test.mdf (5 rows affected)
Note: -Y is for Fixed column length and –y is for variable column length.
Method 9
SQL Server 2005 command line tool SQLCMD output can be formatted either in FIXED length column or in a variable length column. Let us see how to format the output in fixed length.
Execute the following command at the MS-DOS command prompt as shown below. You will get the following results. Refer Fig 1.2.
SQLCMD -Stcp:HOME,7005 -E -Q"Select dbid,name,status,right(filename, charindex('\',reverse(rtrim(filename)))-1) from master..sysdatabases" -Y20
Results
dbid name status ------ -------------------- ----------- -------------------- 1 master 65544 master.mdf 2 tempdb 8 tempdb.mdf 3 model 65544 model.mdf 4 msdb 65544 MSDBData.mdf 5 test 1073807369 test.mdf (5 rows affected)
Fig 1.2
Note: -Y is for Fixed column length and –y is for variable column length.
Method 10
The SQLCMD utility can be used to input Transact SQL scripts to be executed on a SQL Server instance. The output can be stored in an output file. Let us create a C:\Test2.sql file with the following code. Refer Fig 1.3.
Select dbid,name,status,right(filename,charindex('\',reverse(rtrim(filename)))-1) as MDF from master..sysdatabases
Fig 1.3
Execute the following command at the MS-DOS command prompt as shown below. Refer Fig 1.4.
SQLCMD -Stcp:HOME,7005 -E -i c:\test2.sql >C:\test2output.txt
Fig 1.4
The output is redirected to C:\test2output.txt. Refer Fig 1.5.
dbid name status MDF ------ ------------------------------------------------------------------------------------------- ------------------------------------- ----------- ------------------------------------------------ -------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------- ---------------- 1 master 65544 master.mdf 2 tempdb 8 tempdb.mdf 3 model 65544 model.mdf 4 msdb 65544 MSDBData.mdf 5 test 1073807369 test.mdf (5 rows affected)
Results
Fig 1.5
Method 11
The SQLCMD utility can be used to input Transact SQL scripts to be executed on a SQL Server instance and the output can be stored in a output file, in a fixed length column format. Let us create a C:\Test2.sql file with the following code. Refer Fig 1.6.
Select dbid,name,status,right(filename,charindex('\',reverse(rtrim(filename)))-1) as MDF from master..sysdatabases
Fig 1.6
Execute the following command at the MS-DOS command prompt as shown below. Refer Fig 1.7.
SQLCMD -Stcp:HOME,7005 -E -i c:\test2.sql –Y20 >C:\test2output.txt
Fig 1.7
The output is redirected to C:\test2output.txt. Refer Fig 1.8.
dbid name status MDF ------ -------------------- ----------- -------------------- 1 master 65544 master.mdf 2 tempdb 8 tempdb.mdf 3 model 65544 model.mdf 4 msdb 65544 MSDBData.mdf 5 test 1073807369 test.mdf (5 rows affected)
Fig 1.8
Method 10 and 11 used a conventional method of redirecting the output to a file.
Method 12
The SQLCMD utility can be used to input Transact SQL scripts to be executed on a SQL Server instance with the stored in an output file in a fixed length column format. Let us create a C:\Test2.sql file with the following code.
SQLCMD -Stcp:HOME,7005 -E -i c:\test2.sql -Y20 -o C:\test2output.txt
The output is redirected to C:\test2output.txt. Refer Fig 1.9.
dbid name status MDF ------ -------------------- ----------- -------------------- 1 master 65544 master.mdf 2 tempdb 8 tempdb.mdf 3 model 65544 model.mdf 4 msdb 65544 MSDBData.mdf 5 test 1073807369 test.mdf (5 rows affected)
Fig 1.9
Conclusion
Part II of this series illustrated a few of the various ways of using the SQL Server 2005 command line utility “SQLCMD”. In future articles, we will discuss more of the SQLCMD utility features.