T-SQL 變數大小寫相異的錯誤
這次同事遇到的說資料庫的 stored procedure 執行錯誤,但那隻我們執行多次,也不記得有錯過
請我去看,錯誤訊息是找不到指定的變數,檢視了一下,他要用的變數是有定義,只是大小寫不一樣
之前我對 M$ 的印象就是大多數都不管大小寫的差異的XD
這次居然會出現變數有差異,也覺得很驚奇,雖然直覺應該是定序的差異,但我還真沒印象我之前定序設 BIN 時,資料庫變數名就會有大小寫的差異
後來去查了一下,原來變數是由 master 統管,所以只要 master 的定序為大小寫視為相異,那變數名就會變嚴謹!
因為是 master 的定序,就不是說想改就能改的
據網路上找到的資料,只能透過重建的方式來變更定序,而重建需要安裝程式(光碟)
然後到其 setup.exe 的檔案目錄,使用命令提示字元下以下命令,即可以以不區分大小寫的方法進行重建資料庫
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName
/SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ]
/SQLCOLLATION=CollationName
注意:進行相關操作前,請記得備份好自己的資料,並將相關資料庫卸離,避免因為重建,導致自己的資料庫資料上有錯誤,事後修補起來反而麻煩!
Reference:
[1] https://heryla.tian.yam.com/posts/92615937
[2] https://docs.microsoft.com/zh-tw/sql/relational-databases/collations/set-or-change-the-server-collation
請我去看,錯誤訊息是找不到指定的變數,檢視了一下,他要用的變數是有定義,只是大小寫不一樣
之前我對 M$ 的印象就是大多數都不管大小寫的差異的XD
這次居然會出現變數有差異,也覺得很驚奇,雖然直覺應該是定序的差異,但我還真沒印象我之前定序設 BIN 時,資料庫變數名就會有大小寫的差異
後來去查了一下,原來變數是由 master 統管,所以只要 master 的定序為大小寫視為相異,那變數名就會變嚴謹!
因為是 master 的定序,就不是說想改就能改的
據網路上找到的資料,只能透過重建的方式來變更定序,而重建需要安裝程式(光碟)
然後到其 setup.exe 的檔案目錄,使用命令提示字元下以下命令,即可以以不區分大小寫的方法進行重建資料庫
Setup /QUIET /ACTION=REBUILDDATABASE /INSTANCENAME=InstanceName
/SQLSYSADMINACCOUNTS=accounts /[ SAPWD= StrongPassword ]
/SQLCOLLATION=CollationName
注意:進行相關操作前,請記得備份好自己的資料,並將相關資料庫卸離,避免因為重建,導致自己的資料庫資料上有錯誤,事後修補起來反而麻煩!
Reference:
[1] https://heryla.tian.yam.com/posts/92615937
[2] https://docs.microsoft.com/zh-tw/sql/relational-databases/collations/set-or-change-the-server-collation
留言
張貼留言