通常在我的 C# 程式碼中,我可以更改變數的名稱,並且對它的所有引用也會更改。
是否有類似的功能允許我對 SQL 伺服器中的物件執行此操作?我的一些表、列和預存程序需要重命名,但我當然希望保持它們全部正常運作。
答案1
Q:是否有應用程式和功能可以執行此操作?
是的。
Q:你應該使用它們嗎?
可能不會。 SQL 的問題在於要擷取所有對物件名稱的參考非常困難。
一個例子是動態 SQL - 建立字串,然後將字串作為查詢執行的技術。我的預存程序可能有這樣的程式碼:
DECLARE @StringToExecute
SET @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'
EXEC (@StringToExecute);
如果您想將 dbo.MyTableName 重新命名為其他名稱,則必須查看預存程序和應用程式程式碼中的字串。這確實很難做到,因為這也是有效的:
DECLARE @StringToExecute
SET @StringToExecute = 'USE Database1;'
SET @StringToExecute = @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'
EXEC (@StringToExecute);
SET @StringToExecute = 'USE Database2;'
SET @StringToExecute = @StringToExecute = 'SELECT * FROM dbo.'
SET @StringToExecute = @StringToExecute + 'MyTableName;'
這會為兩個不同資料庫中的兩個不同的 MyTableName 建立兩個不同的查詢。
另一個例子是連結伺服器查詢。您的任何其他 SQL Server 都可以設定連結伺服器、同義詞、視圖等來查詢現有物件。
因此,物件名稱變更和表重構實際上只能在以下情況下執行:
- 你的應用程式還很年輕
- 您對查詢有非常嚴格的控制
- 您知道查詢來自何處
答案2
如果您正在談論 Linq to SQL 並在 Visual Studio 中更改 LINQ 物件定義,那麼更新這些定義的典型方法是在設計器中刪除並重新新增它們,然後找到它們的參考並將它們更新為新名稱。如果您使用 DI 和儲存庫模式之類的東西,這非常容易,因為引用都在一個區域中,而不是分佈在整個程式碼中。
答案3
如果你想買東西,看起來像紅門有你喜歡的東西。
答案4
我建議你嘗試一下SQL完整 它允許您透過為表、列、臨時表和列、視圖、預存程序和函數提供有意義且不言自明的名稱來提高程式碼可讀性。 SQL Complete 將自動修正對重命名物件的所有參考。
借助重命名功能,您還可以在幾秒鐘內更改本地變數和 SQLCMD 變數的名稱。在「重新命名」對話方塊視窗的便利樹視圖中預覽程式碼變更。