MySQL上沒有跟SQL Server、Oracle一樣的Merge語法
但還是有相似的語法可以用
INSERT INTO ... ON DUPLICATE KEY UPDATE : 新增資料時遇到重複唯一值時更新部分欄位
REPLACE INTO : 新增資料時遇到重複唯一值時取代原先資料
INSERT IGNORE : 新增資料時當遇到重複唯一值時忽略該筆資料
MySQL上沒有跟SQL Server、Oracle一樣的Merge語法
但還是有相似的語法可以用
INSERT INTO ... ON DUPLICATE KEY UPDATE : 新增資料時遇到重複唯一值時更新部分欄位
REPLACE INTO : 新增資料時遇到重複唯一值時取代原先資料
INSERT IGNORE : 新增資料時當遇到重複唯一值時忽略該筆資料
在MySQL上面建立procedure、function or trigger時,會看到要寫DEFINER = XXX@XXX 的語句
因為剛開始還不清楚這個語句會有什麼影響,還真的不小心撞到牆
所以紀錄並分享一下Definer跟SQL sercurity的功用
當我們原本撰寫的語法如下
CREATE PROCEDURE SP名稱()
在資料庫管理權限的授予、移除是很重要的事情,最近因為專案開始接觸MySQL的操作,紀錄一下操作上學習到的部分
我們可以先檢查目前有配置了那些權限
SHOW GRANTS;
SHOW GRANTS FOR [使用者];
授予權限

最近在研究如何透過SSRS製作儀錶板,RS報表大多都是報表形式,適合細看不適合當作彙整用的儀表板
如果能透過儀表板延伸到趨勢圖表在延伸到明細報表,這樣在數據圖表的閱讀性能大幅提升,也不用浪費既有報表改用其他報表工具
可以把一些概述的數據會是指標放在行動報表上,在透過延伸的功能串到既有的明細報表
在這邊跟大家分享一下使用行動報表的一些小技巧 - 參數篩選
如果是針對傳入資料集在報表中在進行篩選,那很簡單就讀入資料集後,在篩選清單中選擇要篩選的欄位

最近剛好遇到工作上需要對特定資料表,根據排序後的第一筆資料進行刪除
過往可能需要先查詢出排序後第一筆資料關鍵Key值再進行刪除
範例資料
CREATE TABLE dbo.T1 ( C1 INT PRIMARY KEY IDENTITY(1,1))
INSERT INTO dbo.T1 DEFAULT VALUES

Aggregate Function
彙整函數是大多撰寫SQL Script很常使用的,以下我簡單進行分類
Aggregate Function 種類
1. 計次型 - Count、Count_Big
2. 最大最小型 - MAX、MIN
最近在處理DB方面的CI/CD,讓資料庫方面的異動能夠透過版控留存紀錄,在透過CI/CD去部屬到指定的環境當中。
這邊先不討論CI/CD方面怎麼處理,而是分享一下SQL Server如何透過讀取.sql檔然後在DB中執行的部分。
我們保存好的.sql檔是放在os的指定資料夾,透過sqlcmd的方式讀取檔案然後執行
格式
sqlcmd -s [伺服器] -u [User名稱] -p [密碼] -d [資料庫] -i [檔案名稱(包含路徑)]
在處理交易型平台資料常常會遇到一個問題,我該如何清理資料表中老舊的資料,像是每天自動去清除三十天前的交易紀錄。
如果使用最簡單的 DELETE 語法,可能會影響線上交易並且產生大量的Transaction Log。
過往會建立Partition Table,然後透過搬動Parition分區到另一張資料表然後在 TRUNCATE TABLE清除掉。
但這樣需要先建立一個一模一樣的資料表,並且設定一樣的Partition Schema,會有點小麻煩。
在SQL Server 2016開啟,提供了TRUNCATE TABLE WITH PARTITION的語法能更方便的清除老舊的資料

遇到問題
要在A SQL Server中透過Link Server方式去執行B SQL Server的預設程序,發生了並未為RPC設定伺服器"B"
解決方法
RPC(Remote Procedure Call) 是一個電腦通訊協定,該協定允許執行於一台電腦的程式呼叫另一台電腦的子程式。
簡單來說就是該[Link Server]尚未開通RPC這個設定。
整理工作上的筆記,在DB中非常少會使用到Cursor來回圈處理資料
真的有非常複雜要處理的資料,否則還是不建議使用Cursor
簡單用sys.all_obkects來做為範例
SET NOCOUNT ON
DECLARE @TableName NVARCHAR(100)
在撰寫預設程序(store procedure, SP)時
有時候會在當中呼叫其他的SP取得資料在進行加工
不時會發生 An INSERT EXEC statement cannot be nested 的問題
這幾天在撰寫一個共用SP來產生所要的資料時剛好遇到
來分享一下所遇到的狀況以及解決的方法