SQLCMD supports parameterized variables and provides ":" commands

SQLCMD is a new command line tool provided by SQL 2005, which depricates the old ODBC based OSQL. The functionality of SQLCMD has been greatly enhanced beyond OSQL.

SQLCMD can be useful for running some SQL scripts which require you to pass different parameters specific to a certain environment. For example, you can use it in a WiX customization (CustomAction) to set up you database.

The following is an example: Use notepad to create a SQL script as: sqlcmd.sql

    DECLARE @myVariable varchar(255)
    SET @myVariable = '$(myVariable)'
    SET @myVariable = @myVariable + ' ' + suser_sname()

    PRINT @myVariable

You can run it from a command console:

    SQLCMD -b -w4000 -l10 -E -i"sqlcmd.sql" -v myVariable="hello"

SQLCMD provides ":" commands

SQLCMD supports ":" commands, which provides you some kind of micro functionalities. Following is a list of some interesting commands.

  1. :ed to edit the current batch with the editor specified in the sqlcmdeditor environment variable. SET SQLCMDEDITOR=notepad
  2. :!! to run a cmd.exe command. For example: !!dir
  3. :r to read a file in as a sqlcmd script
  4. :setvar <name> ["value"] to set a sqlcmd variable that can be accessed with $(name). Also environment variables can be accessed with the same syntax.
  5. {:error|:out|:perftrace} {|stderr|stdout} to redirect the relevant output streams
  6. :xml {on|off} to control outputting data in the result set style or as XML.
  7. -X [1] stops security sensitive commands from running (the 1 flag causes the script to terminate instead of just issue a warning). The flag can help avoid client side scripting style attacks.

See also

  • SQL: Use Dynamic SQL Query Correctly
  • SQL 2005: Use DMV and CROSS APPLY to Get Cached Plans
  • SQL 2005: Discontinued or Deprecated Features in SQL Server 2005
  • SQL 2005: Default Trace Enabled Option
  • SQL 2005: Column Level Permissions
  • SQL 2005: SQLCMD Supports Parameterized Variables and Macro Features
  • SQL 2005: DTS Has Become SSIS now
  • SQL 2005: Microsoft SQL Server 2005 JDBC Driver
  • SQL 2005: Query Notifications in ADO.Net 2.0
  • SQL 2005: Overcome SQL Index Size Limit
  • SQL 2005: DDL Triggers
  • SQL 2005: Why Should Use 64 Bit Now
  • SQL 2005: How to Rebuild The Master Database
  • SQL 2005: A Little Trick to Install SQL 2005 Onto Your Dirty DEV Machine
  • SQL 2005: New Resource Database
  • SQL 2005: Alter Index Rebuild
  • SQL 2005: XQuery Sample
  • SQL 2005: How to Move Database
  • SQL: Use COALESCE to Generate a List
  • SQL: How to Debug SQL Deadlocks
  • .Net: How to Bypass Strong Name Check
  • Agile: Lean Software Development - An Agile Toolkit
  • ORM: How to Use nHibernate 1.2 to Call Stored Procedure to Return a Dataset Without a Mapping Entity
  • AJAX: ASP.NET AJAX Tips
  • .Net: Debugging Commands
  • .Net: How to Run NUnit And Debug Your Test Fixtures Directly from VS 2005
  • .Net: How to Add Domain User to Local Group
  • .Net: Lock Value Type?
  • .Net: How to Create an Instance of a Generic Type with Parameters
  • .Net: How to Get Address of a Managed Type
  • ORM: New Features of nHibernate 1.2
  • .Net: How to Get System Error Message from HRESULT in Managed Code
  • .Net: Use Windows PowerShell Now
  • WMI: Use WMI to Run Commands on Remote Machine
  • API: GetLogicalProcessorInformation to Detect CPUs
  • .Net: How to Implement Singleton Correctly
  • .Net: There is no MTS object context (Exception from HRESULT: 0x8004E004)
  • .Net: The Net Objectives Pattern Repository
  • Web: Access Denied When ASP.Net Accesses Eventlog
  • Nant: Error Loading GUID of Project
  • AJAX: Ajax in Action
  • DTC: DtcGetTransactionManager Fails
  • .Net: Run .Net 1.1 COM+ Serviced Components Under .Net 2.0 Framework
  • .Net: Debugging Managed Code Tip
  • .Net: Assembly Binding Log Viewer (Fuslogvw.exe)
  • .Net: .Net Framework Design Guidelines
  • .Net: Use Global Catalog and CheckTokenMembership to Check AD Group Membership



  • THIS POST IS PROVIDED "AS-IS" WITH NO WARRANTIES AND CONFERS NO RIGHTS. Build time: Sun 03/30/2008 . ©2007 Dalun Software. All rights reserved. Back to Article List