Làm cách nào để chỉ chạy câu lệnh mà con trỏ của tôi đang bật trong SQL Server Management Studio?


93

Từ lâu Toad đối với người dùng Oracle, tôi đã quen với việc nhấn Ctrl + Enter và chỉ thực thi câu lệnh dưới con trỏ.

Trong SQL Server Management Studio, nhấn F5 sẽ chạy toàn bộ tập lệnh. Để chỉ chạy câu lệnh hiện tại, tôi phải đánh dấu câu lệnh mà tôi muốn theo cách thủ công, rồi nhấn F5.

Điều đó thực sự khó chịu với tôi. Có ai biết công cụ có phím tắt để chạy câu lệnh hiện tại trên SQL Server không? Tôi sẽ thay đổi các công cụ chỉ cho một tính năng này.

Lưu ý: Thật kỳ lạ, ngay cả Toad miễn phí cho SQL Server cũng không cho phép bạn chỉ chạy câu lệnh dưới con trỏ.


2
Lưu ý trên ghi chú của bạn: Trong TOAD, phím F9 chạy (các) nhóm câu lệnh hiện tại. Các nhóm được phân tách bằng cách sử dụng từ khóa "go" (cũng được trả lời bởi "ercan").
crokusek

F9 chỉ chạy câu lệnh hiện tại trong các phiên bản sau của TOAD (v6.6 ++). Các câu lệnh tùy ý được phân tách bằng dấu chấm phẩy. Nó đáng tin cậy 95% khi có thể biết nơi kết thúc câu lệnh ngay cả khi không có dấu chấm phẩy.
crokusek

1
Mười năm sau, điều này vẫn còn là một vấn đề. Chỉ đến từ Nhà phát triển SQL và tôi bị sốc, tôi thực sự nên thực hiện một giải pháp tẻ nhạt cho việc này ngay cả bây giờ. Bất kỳ giải pháp gần đây có lẽ?
MattSom

1
@MattSom Tôi ước!
JosephStyons

Câu trả lời:


37

Bạn có thể xem phần bổ trợ này cho SSMS 2012. Đặt con trỏ trong câu lệnh bạn muốn thực thi và nhấn CTRL+ SHIFT+E

SSMS Executor - https://github.com/devvcat/ssms-executor/releases

Cập nhật:
Dự án đã được chuyển sang github và phần bổ trợ được viết lại để hỗ trợ SSMS 2014, SSMS 2016. (Trước đây, dự án sống trên codeplex, tại SSMS Executor - http://ssmsexecutor.codeplex.com/ .)


2
Điều này thực sự hiệu quả đối với tôi trong SSMS2012, nhưng bây giờ tôi đang chạy SSMS2014 và tôi thực sự nhớ nó! Có ai biết về giải pháp SSMS2014 không?
samp

3
Xin chào samp Tôi đang làm lại công cụ cho SSMS2014. Sẽ cho bạn biết khi sẵn sàng.
Stanislav Stoyanov

1
@ st.stoqnov - Tôi rất thích sử dụng addin này nhưng chúng tôi đang chạy SSMS 2013. Khi nào bạn định hỗ trợ phiên bản này? Cảm ơn
namford

1
Xin chào @namford, dự án đã được chuyển sang github và addin được viết lại để hỗ trợ SSMS 2014/2016.
Stanislav Stoyanov

1
@StanislavStoyanov Vui lòng chỉnh sửa câu hỏi để đề cập rằng bạn là tác giả của dự án mà bạn đang đề xuất.
jpaugh

34

Sử dụng Ctrl+ KUđể chọn một dòng. Sau đó sử dụngF5 để chạy nó.

Mặc dù nó chỉ hoạt động cho lựa chọn dòng đơn, tôi vẫn thấy nó khá hữu ích.

Hy vọng nó giúp!!


1
Này, thật tiện lợi, cho một tấm lót. Cảm ơn
JosephStyons

Hoặc đó và CTRL E
Hugh seagraves

CTRL-E đã thực thi toàn bộ tập lệnh trong tệp trong SSMS 18.5
Alexander

20

Ok, vì vậy những gì tôi nhận được từ tất cả những câu trả lời này là "Không, điều đó là không thể."

Biên tập:

Đây là cách tôi có thể làm điều này:

1 - Tải xuống SQL Developer

2 - Tải xuống trình điều khiển jTDS

3 - Làm theo các hướng dẫn sau để thêm trình điều khiển đó vào SQL Developer

4 - Kết nối với SQL Server bằng SQL Developer (tuyệt vời!)

5 - Chạy nó và cuộc sống là tốt


3
Tôi không chắc làm thế nào đây có thể được coi là câu trả lời vì tất cả đều dựa trên các công cụ của Oracle. Câu hỏi đặt ra có liên quan đến SSMS
Jacques

2
DBeaver cũng cho phép truy vấn này giữa; ; chấp hành. Và nó mạnh hơn nhiều so với Nhà phát triển SQL
Dima Fomin

@Jacques Thực thi một dòng là một tính năng duy nhất mà Oracle đã làm đúng, còn Microsoft thì không. Mọi thứ khác về SQL Developer là sub-par, nhưng nó không tích hợp với các máy chủ MS SQL.
jpaugh

@Jacques vì ​​điều này không dễ thực hiện trong SSMS, tôi rất vui khi có câu trả lời này và đối với tôi thì câu trả lời này có vẻ là tốt nhất (thông thường các truy vấn của tôi không phải là một dòng, tôi không thích viết các truy vấn phức tạp trong một dòng chỉ để làm cho CTRL + KU hoạt động ...)
Betlista

9

Ai đó đã đề xuất tính năng này trên Devart dbForge SQL Complete (addon cho Management Studio) và nó vẫn đang trong giai đoạn phát triển. Hãy hy vọng rằng nó đã hoàn thành và không bị bỏ dở giữa chừng trong quá trình phát triển.


2
Tôi vừa cài đặt phiên bản miễn phí cho Sqlserver14 (?) Và nó có vẻ hoạt động. [Trang Devart] ( devart.com/dbforge/sql/sqlcomplete/editions.html )
LosManos

Tôi đã sử dụng nó cho đến bây giờ .... bây giờ nó hiển thị thêm mỗi khi tôi khởi chạy studio trực quan.
PAS

6

Lưu ý: Thật kỳ lạ, ngay cả Toad miễn phí cho SQL Server cũng không cho phép bạn chỉ chạy câu lệnh dưới con trỏ.

Thật là khó chịu khi TOAD không tuân theo những gì nó hứa hẹn:

Trợ giúp từ TOAD: [F9 để thực thi] một phần của câu lệnh, có thể chứa một hoặc nhiều câu lệnh. Bạn có thể chọn một phần của câu lệnh bằng cách đặt con trỏ bên trong hoặc bên cạnh câu lệnh, hoặc bằng cách chọn câu lệnh. Lưu ý: Toad coi "liền kề" tất cả các câu lệnh (bao gồm cả chú thích) cách con trỏ hoặc cách nhau ít hơn hai dòng trống. Nếu lỗi xảy ra trong quá trình thực thi câu lệnh, một thông báo lỗi sẽ hiển thị, cho phép bạn bỏ qua lỗi và tiếp tục hoặc hủy thực thi.

Tôi đã thử nó hàng triệu lần nhưng nó chỉ thực thi toàn bộ tập lệnh. Tôi muốn tìm kiếm nó trong nhóm hỗ trợ người dùng (cóc (at) yahoogroups.com) nhưng yahoo có công cụ tìm kiếm ngu ngốc nhất từ ​​trước đến nay! Nó thậm chí không thể tìm thấy từ khóa "con cóc" trong nhóm thư con cóc, DOH!

Tôi nghĩ TOAD là công cụ truy vấn tốt nhất từ ​​trước đến nay, nhưng việc thiếu tính năng này thực sự làm tôi khó chịu.

CẬP NHẬT: GIẢI PHÁP TÌM HIỂU! Tôi đã hỏi vấn đề này trong nhóm thư điện tử và nhận được câu trả lời. Không giống như Oracle, bạn phải tách các câu lệnh trong SQL Server bằng từ khóa GO sau mỗi câu lệnh. Chỉ khi bạn làm điều đó nút F9 hoạt động như mong đợi, thực hiện câu lệnh hiện tại.


6

Câu trả lời trên đã giúp tôi tạo lối tắt để Thực thi câu lệnh hiện tại mà không cần chọn truy vấn

1 - Nhấp vào Công cụ > Tùy chọn > Môi trường > Bàn phím

2 - Đối với Hiển thị các lệnh có chứa, hãy đặt nó thành SqlComplete10.Common_ExecuteCurrentStatement

3 - Để Sử dụng phím tắt mới trong, hãy đặt nó thành Trình soạn thảo truy vấn SQL

4 - Đối với các phím tắt Nhấn (phím tắt mong muốn), hãy thực hiện tổ hợp Ctrl-Enter.

5 - Nhấp vào Chỉ định . Nhấp vào OK.


Điều này thực hiện thủ thuật, nhưng trước tiên tôi phải xóa phím tắt khỏi một lệnh khác, nếu không nó sẽ không hoạt động.
Jan

Cậu đã làm thế nào vậy? Khi tôi làm theo các hướng dẫn ở trên ctl-enter chỉ đánh dấu dòng (lưu ý rằng các truy vấn của tôi nằm trên nhiều dòng).
user441521

Có vẻ lỗi thời.
Ali Karaca

@Matt Tôi đã tìm thấy thứ gì đó khi tìm kiếm "Execute", cụ thể là, Tools.ExecuteStatementchỉ hoạt động khi tôi thay đổi phím tắt của nó thành Global.
jpaugh

@Matt Không! Hóa ra, plugin này đã được thêm vào , cuối cùng đã bắt đầu hoạt động.
jpaugh

4

Tôi sử dụng một giải pháp thay thế: Tôi nhận xét các truy vấn mà tôi không sử dụng. Bạn có thể sử dụng CTRL-K, CTRL-C để nhận xét SQL mà bạn đã đánh dấu. Sử dụng CTRL-K, CTRL-U để bỏ ghi chú. Bằng cách đó, bạn có thể nhận xét tất cả các truy vấn khác và thực hiện truy vấn mà bạn quan tâm với F5.


7
Đây là một cơn đau toàn bộ ở mông. Tại sao một Trình soạn thảo SQL phải khiến tôi nhận xét về mọi thứ tôi không muốn? Tôi có thể không chỉ khẳng định "chạy một lệnh này" mà không cần lấy chuột hoặc nhấn "Shift + Up" 35 lần?
JosephStyons

3
Chỉ để làm rõ, cảm ơn vì câu trả lời; Tôi rât cảm kich. Tôi thực sự chỉ hiểu giao diện SQL Server Mgmt Studio.
JosephStyons

1
Nếu bạn tìm thấy một cách tốt hơn, hãy chắc chắn để đăng nó ở đây :)
Andomar

4

Tôi đã sử dụng công việc này xung quanh; khi mã không được bình luận

Ctrl + K + U

(lệnh này đánh dấu dòng truy vấn hiện tại) và sau đó

Ctrl + E

(chạy truy vấn được đánh dấu này).

Nó hữu ích khi bạn muốn chạy một truy vấn dòng đơn giữa một số dòng khác như:

  Select top 100 * from [dbo].[Order]

  Select top 100 * from [dbo].[OrderItem]

  Select top 100 * from [dbo].[OrderStatus]

3

Tôi không nghĩ rằng điều này là có thể thực hiện được nếu chỉ sử dụng studio quản lý. NHƯNG bạn có thể sử dụng phần mềm phím tắt (ví dụ: http://www.autohotkey.com/ ) để ghi lại một chuỗi đặc biệt và gán cho một phím nóng. Trong trường hợp của bạn, bạn cần:

<home><shift-end><F5>

Thao tác này sẽ chọn dòng hiện tại và thực thi nó.


8
Tuy nhiên, điều này sẽ không chọn toàn bộ khối (đa dòng) hiện tại.
tbone

2

Trong Toad for SQL Server, các phím nóng mặc định sau có thể được sử dụng để thực thi:

  • F5: Thực thi tất cả các câu lệnh SQL trong trình soạn thảo
  • F9: Thực thi câu lệnh SQL tại vị trí con trỏ hiện tại
  • Shift-F9: Thực thi tất cả các câu lệnh SQL từ con trỏ, bao gồm hiện tại ở vị trí con trỏ

Tuy nhiên, như 'ercan' đã viết, bạn cần tách riêng / theo từng câu lệnh với 'GO'.

SELECT TOP 5 * FROM accounts
GO

SELECT TOP 5 * FROM users
GO

SELECT TOP 5 * FROM contracts
GO

1

Nếu việc phải di chuyển tay đến phần chuột khiến bạn khó chịu, bạn có thể giữ Ctrl trong khi nhấn phím mũi tên lên hoặc xuống để chọn một dòng cùng một lúc.


6
Ý bạn là Shift, phải không? Và điều đó thật tẻ nhạt đối với những tuyên bố lớn hơn. Cảm ơn cho ý tưởng mặc dù.
JosephStyons

1

Nhấn Ctrl- Etrong khi văn bản được đánh dấu.


9
Được, nhưng tôi vẫn phải tự đánh dấu những gì tôi muốn. Mục tiêu thực sự của tôi là có thể nhập một câu lệnh và sau đó nhấn một số phím sẽ thực thi ngay những gì bên dưới con trỏ.
JosephStyons

7
đối với tôi, F5 dễ nhấn hơn trong khi văn bản được tô sáng sau đó là "CTRL-E".
KM.

1

Phiên bản SQL Complete Express được tích hợp sẵn tính năng này. Nhưng bạn sẽ không nhận được nó nếu không có intellisense tùy chỉnh.

(Tôi lấy cái này từ bài đăng của Salamander2007)


3
Nếu không cho chúng tôi biết cách thực hiện, điều này không hữu ích lắm
G-.

1

Nếu giải pháp bổ trợ của trình thực thi (trong câu trả lời được đăng trên cùng) không hoạt động bình thường, thì tôi phải làm cho nó hoạt động (SSMS v17.8.1): Tiện ích bổ sung thêm lệnh trong các công cụ: Tools> Execute Inner Statement .

Bạn có thể gán một phím tắt bàn phím tùy chỉnh cho nó bằng cách đi tới Công cụ> Tùy chọn> Bàn phím, sau đó tìm kiếm "thực thi" trong phần 'Hiển thị các lệnh chứa:' và chọn Tools.ExecuteInnerStatement . Sau đó, chỉ cần gán (các) tổ hợp phím mong muốn của bạn trong trường 'Nhấn phím tắt:' và nhấn nút Gán.


1

Tính năng này có trong bổ trợ SSMSBoost dành cho SSMS (Tôi là nhà phát triển của bổ trợ này):

Shift-F5 sẽ chọn câu lệnh hiện tại (cho phép bạn xem lại những gì bạn đang thực hiện). Sau đó, bạn nhấn F5 và thực hiện nó.


0

bạn luôn có thể sử dụng các công cụ dòng lệnh sqlcmd và osql. Tôi đã thực hiện rất nhiều sybase tại dòng lệnh unix bằng cách sử dụng một hàm wrapper đã chuyển chuỗi lệnh của tôi thành chuỗi tương đương (mà tôi nghĩ là isql?). Tôi đã sử dụng vi để, vì vậy có lẽ tôi chỉ bị điên khi đó ;-)


Thực ra điều đó sẽ không giúp được gì. SQLCMD sẽ không gửi lệnh đến SQL Server cho đến khi kết thúc đợt. (Thường được chỉ định với GO.)
Shannon Từ chức

0

Chỉ cần chọn (tô sáng) câu lệnh duy nhất bạn muốn chạy và nhấn F5.


2
Từ Câu hỏi: Để chỉ chạy câu lệnh hiện tại, tôi phải tự đánh dấu câu lệnh tôi muốn, rồi nhấn F5.
Paul McCarthy

1
đại loại là bạn chỉ cần ra khỏi xe và vặn lốp trước để chỉ về hướng bạn muốn và nhấn ga ....
pcnate 19/09/18

0

Bạn có thể kết hợp hai Công cụ như sau: SQL Complete từ dbForce và AuhotHotkey.

Với SQL Complete: bạn có thể thực hiện câu lệnh hiện tại tại con trỏ, bằng cách nhấn tổ hợp Ctrl Shift E

Lý do tôi sử dụng AutoHotkey là để làm cho cuộc sống dễ dàng hơn :-) bằng cách chỉ sử dụng F6 để thực thi câu lệnh hiện tại, bằng cách đặt mã sau trong tập lệnh AutoHotkey:

;SQL EXECUTE THE CURRENT STATEMENT
F6::
Send ^+E
return

Và bạn có thể thực hiện bất kỳ câu lệnh hiện tại nào tại con trỏ bằng cách nhấn F6

Nhưng đôi khi, một lần nữa vấn đề lớn của tôi là tôi nhấn nhầm F5 thay vì F6: D


0

Phần mở rộng SQL Prompt của Redgate dành cho SSMS có thể thực hiện điều này.

Nó không miễn phí nhưng theo kinh nghiệm của tôi, nó rất đáng để có. Intellisense tốt hơn so với phiên bản SSMS ra khỏi hộp, tô màu tab, lịch sử tab (rất có giá trị!), Đoạn trích, thực thi một câu lệnh (không chỉ một dòng duy nhất) và nhiều hơn nữa.


0

Để chỉ chạy một phần của tập lệnh lớn hơn, hãy thử điều này ..

Các bước:

  1. Thu gọn câu lệnh SQL bạn muốn chạy bằng cách bấm vào dấu trừ ở lề trái bên cạnh câu lệnh. Điều đó sẽ chỉ hiển thị dòng đầu tiên (với dấu chấm lửng "..." để cho biết thêm mã không được hiển thị) và phần cuối là ";" cho tuyên bố.

  2. Đánh dấu dòng.

  3. Nhấn phím [F5].

Điều đó sẽ chỉ chạy câu lệnh được đánh dấu. Nếu bạn muốn chạy nhiều câu lệnh cùng một lúc, hãy thu gọn từng câu lệnh và đánh dấu tất cả những gì bạn muốn chạy, sau đó nhấp vào [F5]. Nó là một công việc xung quanh, nhưng vẫn dễ dàng hơn nhiều so với việc phải kéo và đánh dấu nhiều dòng mã mỗi lần.


0

Cách dễ nhất để làm điều này là gán cho CTRL+ Enterkết hợp cho hành động Query.Execute in SQL Server Management Studio.

  1. Mở Tools > Optionsmenu.
  2. Chọn Environment > Keyboardtrang trong ngăn bên trái.
  3. Tìm Query.Executehành động và chọn nó.
  4. Đặt SQL Query Editortrong "Use new shortcut in:"danh sách thả xuống.
  5. Bây giờ hãy nhập CTRL + Entertổ hợp vào press shortcut keys:hộp văn bản.
  6. Bấm vào Assignnút.
  7. Thay đổi Shortcut currently used by:thànhQuery.Execute (Ctrl+Enter (SQL Query Editor))
  8. Bấm vào OK. Done.

Để thực hiện chỉ dòng hiện tại, hãy chọn tất cả các dòng cuối dòng bằng Shift + Home, sau đó thực hiện Ctrl + Enter.
Abdullah Ilgaz

0

Cố gắng xác định macro trong SSMSBoost SSMSBoost / Cài đặt / Macro:

Chọn vị trí trống cho macro của bạn trong bảng điều khiển bên phải điền chú thích (nếu bạn muốn) thêm 2 lệnh vào chuỗi: SSMSBoost.SelectCurrentStatement Query.Execute gán phím tắt yêu thích của bạn và đó là tất cả.


-1

Những điều sau đây phù hợp với tôi ... Tôi sử dụng SSMS 2012

1 - Nhấp vào Công cụ> Tùy chọn> Bàn phím Môi trường

2 - Đối với Hiển thị các lệnh có chứa , hãy đặt nó thành Query.

3 - Để Sử dụng lối tắt mới trong , hãy đặt nó thành Trình soạn thảo Truy vấn SQL

4 - Đối với phím tắt Nhấn , hãy thực hiện tổ hợp Ctrl-Enter.

5 - Nhấp vào Chỉ định. Nhấp vào OK.


Đó là toàn bộ tập lệnh - tôi chỉ muốn câu lệnh dưới con trỏ.
JosephStyons

Đúng rồi, xin lỗi tôi đã hiểu sai câu hỏi.
BGA
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.