TLDR:我最终要找的是能够在SQL查询编辑器中突出显示某些文本(这将是部分对象名称),然后按键盘快捷键(例如CTRL+5
)它将根据匹配突出显示的文本在当前数据库中搜索对象。然后在结果中找到对象,复制它(或别名版本),按CTRL+R
关闭网格然后粘贴。然后继续编码(然后可能在一分钟之后再次进行)。
使用SQL查询编辑器在SSMS中编码/编写查询时,我不断发现自己在数据库中搜索要在当前查询中使用的对象。我使用 SSMS Boost ,因此我的方法如下。
使用SSMS AutoReplace粘贴以下代码。 (光标位于#
所在的位置。)
DECLARE @t nvarchar(100)
SET @t = N'%#%'
SELECT
o.Type,
o.Type_Desc,
'['+SCHEMA_NAME(o.schema_id)+'].['+o.name+']' AS ObjectName,
CASE WHEN Type IN (N'U') AND o.name LIKE N'%[_]%' THEN o.name + N' AS ' + STUFF(o.name, 1, CHARINDEX(N'_', o.name), N'') END AS Alias
FROM sys.objects AS o
WHERE o.name like @t
AND RIGHT(REPLACE(o.name, N'sel', N''), 3) NOT IN (N'upd', N'del', N'ins', N'bdc')
--AND Type IN (N'U')
ORDER BY o.name
输入或粘贴文字
F5
执行查询CTRL+F4
我很快就做到了这一点,但我仍觉得浪费了相当多的时间。
为了尝试使用SSMS Boost解决此问题并增加功能,我尝试使用Macro Functionality
由于似乎没有能力将参数/自由文本添加到宏中,我陷入困境,无法弄清楚还有什么要做。我尝试在SSMS Boost Forums发帖,但我没有得到太多回应。
当对象(视图或表)有效时,以下2个查询与SSMS快捷方式配合良好。它似乎也有效,因为该功能允许将突出显示的文本添加到快捷键/ SQL的末尾。
SELECT COUNT(*) AS [Count] FROM --to get a quick count of the number of records in a table
SELECT TOP 100 * FROM --to get a glimpse of the data in the highlighted table or view
最后,我研究了使用SSMS模板(这似乎是非常好的功能),但我无法弄清楚如何使用键盘快捷键动态使用它们。
答案 0 :(得分:1)
这是一个使用SSMS键盘快捷键的解决方案,这似乎在SSMS 2016中适用于我。将以下内容分配给一个组合键(一个长行):
EXEC('CREATE PROC #up_helpalias @t sysname AS SELECT o.Type, o.Type_Desc, ''[''+SCHEMA_NAME(o.schema_id)+''].[''+o.name+'']'' AS ObjectName, CASE WHEN Type IN (N''U'') AND o.name LIKE N''%[_]%'' THEN o.name + N'' AS '' + STUFF(o.name, 1, CHARINDEX(N''_'', o.name), N'''') END AS Alias FROM sys.objects AS o WHERE o.name like N''%'' + @t + ''%'' AND RIGHT(REPLACE(o.name, N''sel'', N''''), 3) NOT IN (N''upd'', N''del'', N''ins'', N''bdc'') ORDER BY o.name;DROP PROC #up_helpalias;');exec #up_helpalias
它的工作原理是创建并根据您的查询执行临时存储过程 - 下面是一个更易读的语句定义版本。请注意,该过程包括在执行结束时自行删除的代码:
CREATE PROC #up_helpalias
@t sysname
AS
BEGIN
SELECT
o.Type,
o.Type_Desc,
'['+SCHEMA_NAME(o.schema_id)+'].['+o.name+']' AS ObjectName,
CASE WHEN Type IN (N'U') AND o.name LIKE N'%[_]%' THEN o.name + N' AS ' + STUFF(o.name, 1, CHARINDEX(N'_', o.name), N'') END AS Alias
FROM sys.objects AS o
WHERE o.name like N'%' + @t + '%'
AND RIGHT(REPLACE(o.name, N'sel', N''), 3) NOT IN (N'upd', N'del', N'ins', N'bdc')
ORDER BY o.name
DROP PROC #up_helpalias
END
接下来是:
exec #up_helpalias
使用键盘快捷键传入的值执行过程。
答案 1 :(得分:1)
我们已在 SSMSBoost 中实现了此功能:在查询编辑器中选择任意字符串,然后按 Shift-F2 。这将打开我们的“数据库对象搜索”对话框,并按选定的字符串过滤。
(很抱歉,如果您没有在我们的论坛上回复,也许我们已经执行了您的建议,却忘记了回复您)