2009-09-11 47 views
0

我們正在考慮2000年到2005年我嘗試運行Windows文件搜索從MSFT SQL升級的可能性在我們的代碼基礎上,但它看起來像尋找'*='不能正常工作。也許*是某種通配符?擺脫非ANSI外部聯接「= *」「* =」 - 我怎麼設置一個窗口搜索

+1

這是'Windows Search'的問題,而不是'SQL Server'。它屬於'superuser.com'。 – Quassnoi 2009-09-11 13:50:19

+0

如果你有* =在slq server 2000中,你已經有一個問題,因爲這段代碼並不一致地返回正確的結果。即使你沒有升級,你也需要找到並解決所有這些問題。 – HLGEM 2009-09-11 15:51:57

回答

1

在哪裏存儲您的疑問?如果他們是數據庫中的過程,那麼基於文件的搜索將不會對您有所幫助。如果他們在您的客戶端代碼中,請使用IDE中的搜索功能。如果他們真的在磁盤上的sql文件,這對我來說似乎很奇怪。

+0

我們所有的procs都作爲文件存儲在硬盤上。這是確保它們處於源代碼管理的唯一途徑。這並不奇怪。 – HLGEM 2009-09-11 15:50:50

0

讓自己的Cygwin的副本,並用「真​​實」的搜索工具,如grep :-)我從來沒有信任的Windows搜索,因爲我相當肯定它只有已註冊的文件類型中的搜索(雖然可能已自改上次我看了)。

命令行findstr似乎在所有類型的文件工作得更好,這樣你就可以使用這樣的:在您的頂級目錄

findstr /s /l "*=" *.sql 

/s告訴它搜索所有子目錄,而/l表示文字搜索。如果你非常喜歡它,它甚至可以執行正則表達式 - 從命令行運行findstr /?以獲取詳細信息。

+0

我只想做一個搜索,而不是要求IT人員在我的機器上安裝新的東西,這需要時間。 – AlanR 2009-09-11 13:57:01

+1

他在說什麼是Windows搜索不會這樣做。如果您想要可靠地完成此操作,您將需要使用其他工具。 – 2009-09-11 13:59:20

+0

Windows搜索被嚴重破壞。即使在ASCII文本文件中搜索「正常」文本,我也看到它不會返回明顯存在的結果。 – 2009-09-11 14:09:34

0

要搜索包含存儲特效可怕= *或* =你可以使用這個

select o.name,c.text 
FROM yourdatabase..syscomments c(NOLOCK) 
    JOIN yourdatabase..sysobjects o(NOLOCK) ON c.id=o.id 
where text like '%*=%' or text like '%=*%' 

一些變型替換,當然你的數據庫名稱。

要在我的評論擴大較早你需要如何查找和修復你是否升級與否,SQL Server 2000是壞了,當涉及到使用= *或* =。有時它將它們作爲外部連接加以干涉,有時將它們解釋爲交叉連接,從而給出完全不同的結果集。這種行爲是如此糟糕,以至於不推薦這種語法在2000年以前的任何SQL服務器上使用(我不能說爲ealier版本)

+0

沒有存儲過程。 – AlanR 2009-09-14 13:26:04