sql >> Databáze >  >> Database Tools >> SSMS

Co je režim SQLCMD v SQL Server Management Studio?

Udělal jsem další průzkum, takže zde je moje chápání toho, abych rozšířil to, co bylo dosud napsáno:

Co je SQLCMD

SQLCMD.exe je konzolová utilita, která je součástí instalace SQL Server 2005 a vyšší. Obvykle jej najdete v cestě jako c:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE .

Jedná se o jednoduché skriptovací prostředí, které umožňuje automatizaci úloh souvisejících s SQL serverem. Můžete například napsat a spustit skript, který se přihlásí ke konkrétní instanci SQL Serveru, spustí skripty z daného adresáře na tomto připojení a uloží výstup do určeného souboru.

Invoke-Sqlcmd cmdlet byla představena s SQL Server 2008 jako prostředek k nahrazení tohoto nástroje standardizovaným přístupem založeným na Powershell, který zachovává většinu původní syntaxe a funkčnosti.

Co je režim SQLCMD v SSMS

V SSMS, režim SQLCMD je režim spouštění skriptu, který simuluje prostředí sqlcmd.exe, a proto přijímá některé příkazy, které nejsou součástí jazyka T-SQL. Na rozdíl od sqlcmd.exe , kontaktuje databázi pomocí SqlClient (stejně jako SSMS), nikoli ODBC poskytovatel dat, takže v některých aspektech může mít jiné chování než sqlcmd.exe .

Spouštění skriptů v režimu SQLCMD umožňuje používat příkazy typické pro sqlcmd.exe životní prostředí. Neexistuje však žádná podpora IntelliSense nebo ladění pro režim SQLCMD, takže údržba skriptů, které kombinují čisté T-SQL s kódem specifickým pro SQLCMD, může být bolestná. Proto by se měl používat pouze tehdy, když je to nutné.

Příklad použití

Předpokládejme, že společnost má konvenci pojmenování pro databáze, které v názvu obsahují prostředí, např.:MyDb_Prod , MyDb_Test , MyDb_Vývoj . Tuto konvenci lze použít k minimalizaci možnosti chyb .

Když vývojář napíše skript T-SQL, bude muset být spuštěn v různých prostředích v procesu nasazení/testování, což by vyžadovalo mnoho verzí kódu:

 SELECT *
 FROM [MyDb_Dev].[dbo].[MyTable1] -- MyDb_Dev -> MyDb_Test -> MyDb_Prod

Místo toho můžeme předpokládat, že název databáze bude poskytnut jako proměnná SQLCMD v procesu nasazení a bude mít přesně stejný soubor nasazený do všech prostředí:

 -- :setvar databaseName "MyDb_Dev" -- uncomment for testing in SSMS

 SELECT *
 FROM [$(databaseName)].[dbo].[MyTable1]

(v tomto jednoduchém příkladu lze název databáze vynechat úplně, ale pokud máte propojení mezi databázemi, je nutné použít název databáze)



  1. MySQL Workbench 5.2 CE, Windows 7, nelze se připojit k serveru MySQL na 127.0.0.1 (10061)

  2. phpMyAdmin hlásí 'Žádná privilegia'

  3. Xampp 1.8.3.3 s phpmyadminem 4.1.8 Úložiště konfigurace phpMyAdmin není úplně nakonfigurováno

  4. Vytvořte vlastní položku nabídky v Průzkumníku objektů