SSMS
 sql >> Baza danych >  >> Database Tools >> SSMS

Co to jest tryb SQLCMD w programie SQL Server Management Studio?

Zrobiłem trochę więcej badań, więc oto moje zrozumienie tego, aby rozszerzyć to, co zostało napisane do tej pory:

Co to jest SQLCMD

SQLCMD.exe to narzędzie konsoli zawarte w instalacji SQL Server 2005 i nowszych. Zazwyczaj można go znaleźć w ścieżce, takiej jak c:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE .

Jest to proste środowisko skryptowe umożliwiające automatyzację zadań związanych z serwerem SQL. Na przykład możesz napisać i wykonać skrypt, który zaloguje się do określonej instancji SQL Server, wykona skrypty z podanego katalogu na tym połączeniu i zapisze dane wyjściowe w określonym pliku.

Invoke-Sqlcmd Polecenie cmdlet zostało wprowadzone w SQL Server 2008 jako sposób na zastąpienie tego narzędzia standardowym podejściem opartym na Powershell, zachowując większość oryginalnej składni i funkcjonalności.

Co to jest tryb SQLCMD w SSMS

W SSMS, tryb SQLCMD to tryb wykonywania skryptu, który symuluje środowisko sqlcmd.exe i dlatego akceptuje niektóre polecenia, które nie są częścią języka T-SQL.W przeciwieństwie do sqlcmd.exe , kontaktuje się z bazą danych za pomocą SqlClient (tak samo jak SSMS), a nie ODBC dostawca danych, więc w niektórych aspektach może działać inaczej niż sqlcmd.exe .

Wykonywanie skryptów w trybie SQLCMD pozwala na użycie poleceń typowych dla sqlcmd.exe środowisko. Jednak nie ma obsługi technologii IntelliSense ani debugowania dla trybu SQLCMD, więc utrzymywanie skryptów, które łączą czysty T-SQL z kodem specyficznym dla SQLCMD, może być uciążliwe. Dlatego należy go używać tylko wtedy, gdy jest to konieczne.

Przykładowy przypadek użycia

Załóżmy, że w firmie obowiązuje konwencja nazewnictwa baz danych zawierających w nazwie środowisko, np.:MyDb_Prod , MyDb_Test , MyDb_Programowanie . Ta konwencja może być wykorzystana do minimalizacji szans na błędy .

Kiedy programista pisze skrypt T-SQL, będzie musiał zostać wykonany w różnych środowiskach w procesie wdrażania/testowania, co wymagałoby wielu wersji kodu:

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

Zamiast tego możemy założyć, że nazwa bazy danych zostanie podana jako zmienna SQLCMD w procesie wdrażania i będzie mieć dokładnie ten sam plik wdrożony we wszystkich środowiskach:

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

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

(w tym prostym przykładzie nazwa bazy danych może zostać całkowicie pominięta, ale jeśli masz połączenia między bazami danych, użycie nazwy bazy danych jest konieczne)



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Czas wykonania zapytania w Management Studio i profilerze. Co to mierzy?

  2. Wykonaj dołączenie na połączonych zapytaniach

  3. Czy są dostępne bezpłatne dodatki do autouzupełniania programu SQL Server Mgmt Studio?

  4. Grupuj tabele według schematu w SSMS

  5. Domyślna lokalizacja zapisu plików Management Studio