SSMS
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> SSMS

Trong SQL Server Management Studio, chế độ SQLCMD là gì?

Tôi đã thực hiện thêm một số nghiên cứu, vì vậy đây là hiểu biết của tôi về điều này để mở rộng những gì đã được viết cho đến nay:

SQLCMD là gì

SQLCMD.exe là một tiện ích bảng điều khiển được bao gồm trong phiên bản SQL Server 2005 trở lên. Bạn thường có thể tìm thấy nó trong một đường dẫn như c:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE .

Nó là một môi trường kịch bản đơn giản cho phép tự động hóa các tác vụ liên quan đến máy chủ SQL. Ví dụ:bạn có thể viết và thực thi một tập lệnh sẽ đăng nhập vào một phiên bản SQL Server cụ thể, thực thi các tập lệnh từ một thư mục nhất định trên kết nối này và lưu trữ kết quả đầu ra trong một tệp được chỉ định.

Invoke-Sqlcmd cmdlet được giới thiệu cùng với SQL Server 2008 như một phương tiện để thay thế công cụ này bằng cách tiếp cận dựa trên Powershell được chuẩn hóa, bảo tồn hầu hết các cú pháp và chức năng ban đầu.

Chế độ SQLCMD trong SSMS là gì

Trong SSMS, chế độ SQLCMD là một chế độ thực thi tập lệnh mô phỏng môi trường sqlcmd.exe và do đó chấp nhận một số lệnh không phải là một phần của ngôn ngữ T-SQL. Không giống như sqlcmd.exe , nó liên hệ với cơ sở dữ liệu bằng SqlClient (theo cách tương tự như SSMS), không phải ODBC nhà cung cấp dữ liệu, vì vậy ở một số khía cạnh, nó có thể có hành vi khác với sqlcmd.exe .

Thực thi các tập lệnh trong chế độ SQLCMD cho phép sử dụng các lệnh điển hình cho sqlcmd.exe môi trường. Tuy nhiên, không có IntelliSense hoặc hỗ trợ gỡ lỗi cho chế độ SQLCMD, vì vậy việc duy trì các tập lệnh kết hợp giữa T-SQL sạch với mã dành riêng cho SQLCMD có thể là một vấn đề khó khăn. Do đó, nó chỉ nên được sử dụng khi cần thiết.

Trường hợp sử dụng mẫu

Giả sử rằng một công ty có quy ước đặt tên cho cơ sở dữ liệu bao gồm môi trường trong tên, ví dụ: MyDb_ Prod , MyDb_ Kiểm tra , MyDb_ Dev . Quy ước này có thể được sử dụng để giảm thiểu khả năng mắc lỗi .

Khi một nhà phát triển viết một tập lệnh T-SQL, nó sẽ phải được thực thi trong các môi trường khác nhau trong quá trình triển khai / thử nghiệm, điều này sẽ yêu cầu nhiều phiên bản của mã:

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

Thay vào đó, chúng ta có thể giả định rằng tên cơ sở dữ liệu sẽ được cung cấp dưới dạng biến SQLCMD trong quá trình triển khai và có chính xác cùng một tệp được triển khai cho tất cả các môi trường:

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

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

(trong ví dụ đơn giản này, tên cơ sở dữ liệu có thể được bỏ qua hoàn toàn, nhưng nếu bạn có kết hợp cơ sở dữ liệu chéo, thì việc sử dụng tên cơ sở dữ liệu là cần thiết)



  1. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. Làm cách nào để xóa danh sách cơ sở dữ liệu bị xóa do nhầm lẫn khỏi danh sách giống cây của Sql Server Management Studio?

  2. SQL Server 2008 - Đính kèm mdf mà không có nhật ký - Hệ điều hành lỗi 5:5 (Quyền truy cập bị từ chối.)

  3. SQL Server:Nhập cơ sở dữ liệu từ .mdf?

  4. Sql Server management studio cách tự động viết hoa

  5. SQL Server Management studio sẽ không khởi động - Không tìm thấy thư viện loại