0
當我執行下面的代碼時,我仍然在ObjName列中查看以'x'值開頭的值。我不明白爲什麼。我也嘗試使用下面的LIKE子句很好,但無濟於事:NOT LIKE子句在執行sp_MSforeachdb函數時不起作用
和o.name NOT LIKE「」 x%的'
如何糾正我的問題任何幫助/方向是不勝感激。謝謝你的時間。請參閱下面的圖片以及我的結果集。
這裏是我的代碼:
SET NOCOUNT ON;
DECLARE @text NVARCHAR(128)
DECLARE @text1 NVARCHAR(128)
DECLARE @text2 NVARCHAR(5)
DECLARE @sql NVARCHAR(MAX)
SET @text = 'DBSQLSERVER.' -- ENTER THE SQL SERVER BEING SEARCHED FOR.
SET @text1 = 'DBSQLSERVER].' -- ENTER THE SQL SERVER BEING SEARCHED FOR.
SET @text2 = 'x' -- |
SET @sql = -- |
-- V
'USE [?]
SELECT ''?'' [DBName], @@SERVERNAME AS [WorkingServer], ''DBSQLSERVER'' AS [ServerToSearch], o.name AS [ObjName], o.type_desc [TypeDesc]
FROM sys.sql_modules m
INNER JOIN sys.objects o
ON m.object_id = o.object_id
WHERE m.definition LIKE ' + CHAR(39) + '%' + @text + '%' + CHAR(39) + '
OR m.definition LIKE ' + CHAR(39) + '%' + @text1 + '%' + CHAR(39) + '
AND o.name NOT LIKE '+ CHAR(39) + @text2 + '%' + CHAR(39) + '
ORDER BY o.name asc'
EXEC sp_MSforeachdb @sql;
'或'和'和'有混亂的優先級。總是在整個子句中添加括號:'WHERE((p)OR(q))AND(s)',否則你會得到這樣的令人討厭的驚喜。 –
非常感謝Jeroen。我很欣賞快速反應。就是這樣。 – Melinda