環境與版本

作業系統:Window10 64x 版本:20H2

資料庫產品版本:Microsoft SQL Server Developer (64-bit) v18.9.1

資料庫版本編號:15.0.2080.-

在處理大量資料庫的時候,有時候一支一支維運修改顯得過於緩慢,所以使用大量處理的範本,來快速進行修正。

產生大量 修改特定欄位名稱 的 執行語法範本

調整並設定二個地方

  • 設定值
  • 相關條件

詳細調整影響的已經寫在Code裡面了。

-- =============================================
-- Author:		Steven玄
-- ALTER date:  20210126
-- Description:	產生大量修改Table 修改特定欄位名稱 的執行語法範本 
-- =============================================


DECLARE @Old_File VARCHAR(25);
DECLARE @New_File VARCHAR(25);

---設定值
SET @Old_File = 'Old_FILE_NAME' ;			--更改前的欄位名
SET @New_File = 'New_FILE_NAME' ;			--更改後的欄位名


-- 創暫存TABLE
DECLARE @table_name_TABLE TABLE  (
[rk] [int] NOT NULL,					--順序
[Table_name] [nvarchar](50) NULL,		--預存程序名稱
[schema_name] [nvarchar](10) NULL,		--資料庫結構名稱
[type_desc] [nvarchar](50) NULL,		--項目類別
[create_date] [DATETIME] NULL,			--創建時間
[modify_date] [DATETIME] NULL			--修改時間
);
-- 創暫存TABLE
DECLARE @TEMP TABLE  (
[CODE] [nvarchar](MAX) NULL	--預存程序名稱
);



--下條件把要抓取的TABL放進去這個暫存taBLE
INSERT INTO @table_name_TABLE
--可先查看 
SELECT 
	dense_rank() over(order by [create_date],[modify_date],[object_id] asc) as [rk]
	,[name] AS [Table_name]   
    ,SCHEMA_NAME(schema_id) AS [schema_name]  
    ,[type_desc]  
    ,[create_date]  
    ,[modify_date]  
FROM sys.tables
--設定相關條件
where [name]  like 'TABD' ;   --資料表名稱




-- 表格的字串
DECLARE @MAX   BIGINT;
DECLARE @Min   BIGINT;
SELECT @MAX = MAX([rk]),@Min=MIN([rk]) FROM @table_name_TABLE

DECLARE @Table_name nvarchar(100) --預存程序名稱
WHILE(@Min <= @MAX)
BEGIN
SELECT @Table_name = [Table_name] FROM @table_name_TABLE  WHERE [rk] = @Min

INSERT INTO @TEMP SELECT 'exec sp_rename ''['+@Table_name+'].'+@Old_FILE+''' , '''+@New_File+'''';
        
SET @Min=@Min+1
END

SELECT * FROM @TEMP; --回傳可使用字串

Steven玄

謝謝您觀看本站內容!! 😅 西元93年台灣男,軟體前、後、資料庫工程師 和 多元收入實踐,程式設計、網站系統規劃、商業策略分析規劃、多元收入研究,目前在網站開發公司擔任工程師。

發佈留言