[SQL]在區分大小寫的DB中找Table, View or SP是否有大小寫不同,但相同的名稱

[SQL]在區分大小寫的DB中找Table, View or SP是否有大小寫不同,但相同的名稱

前言

今天同事問我說為何使用Red Gate的SQL Data Compare時,會出現「A duplicate object name has been found. This may occur if the SQL Server that you are registering is case sensitive but the case sensitive option is not set.」的錯誤,如下圖。

image

因為我們的SQL Database是區分大小寫,所以應該是有些物件有重覆到!

解決

要解決這個錯誤有以下2個方式,

1.在SQL Data Compare的Options中,勾選「Use case sensitive object definition」,如下圖。

image

2.使用SQL找出到底是那裡重覆了,所以可以利用sys.tables, sys.views及sys.procedures等View來檢查!


--在區分大小寫的DB中找Table, View or SP是否有重覆的名稱
--找看看有沒有重覆的Table
SELECT UPPER(RTRIM(name)) FROM sys.tables
GROUP BY UPPER(RTRIM(name)) 
HAVING COUNT(*) > 1

--找看看有沒有重覆的View
SELECT UPPER(RTRIM(name)) FROM sys.views
GROUP BY UPPER(RTRIM(name))
HAVING COUNT(*) > 1

--找看看有沒有重覆的SP
SELECT UPPER(RTRIM(name)) FROM sys.procedures
GROUP BY UPPER(RTRIM(name))
HAVING COUNT(*) > 1

後來找到是SP名稱重覆,刪掉錯誤的SP Tool就可以正常運作了!

image

環境

MS SQL 2008 R2

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^