需求:讀取本地 Excel 檔,更新遠端連結伺服器上資料表特定欄位。完整 T-SQL 腳本如下:
exec sp_addlinkedserver 'web_Server', '', 'sqloledb', 'ServerName'
exec sp_addlinkedsrvlogin 'web_Server', 'false', null, 'sa', 'PassWord'
update srv_lnk.[e-budget].dbo.TA_Current set CYLE3 = b.Y07LE3
from srv_lnk.[e-budget].dbo.TA_Current a
join (
SELECT f1,
convert(varchar(50), convert(decimal(18,0), f2)) as account,
convert(decimal(18,2), f13/1000) as Y07LE3
FROM OPENROWSET('Microsoft.JET.OLEDB.4.0',
'Excel 8.0;HDR=NO;Database=D:\...\420200.xls',
'SELECT * FROM [sheet$A18:AC78]'
) tableExcel
) b
on a.accountcode = b.account COLLATE Chinese_PRC_CI_AS
where a.costcenter = 420201
A18:AC78),無需匯入暫存表。decimal 再轉 varchar 對齊遠端 accountcode 型別。HDR=YES,否則數值欄位會被誤判為文字導致轉換失敗(作者踩坑:標題列導致數值全變 NULL)。此腳本示範異構資料源(Excel)透過連結伺服器直接參與遠端資料更新的高效模式,適合定期批次同步場景。