熱門文章 (Popular Post)

顯示具有 SQL Server 標籤的文章。 顯示所有文章

By :

前言

這是最近工作上的一個問題:如何傳遞 Collection / Array / List 資料給  Stored Procedure。雖然過去曾經請教同事如何實作,了解透過 DataTable 的方式可以達到需求,但先前似乎沒有實作經驗。趁這次工作之餘,以這邊文章做個紀錄,提供未來的自己與有興趣的朋友參考。本篇文章若有錯誤或任何建議,請各位先進不吝指教。


By :

前言

在前一篇文章,我們簡單介紹了 ROW_NUNBER的使用方法與案例,在這一篇文章,我們會對於其他序列函數,包含RANK, DENSE_RANK, NTILE進行介紹與比較。本篇文章若有錯誤或任何建議,請各位前輩不吝指教。

關鍵字:RANK, DENSE_RANK, NTILE


介紹

在介紹這些序列函數之前,我們先簡單建立範例資料表與資料。

Tag : ,

By :

前言

去年因為工作上需求,必須重新開始接觸 Stored Procedure。個人在前一間公司雖然有撰寫的經驗,但當時使用的語法相當簡單,並沒有太過於深入的彙整與研究,非常可惜。這一次透過功能開發需求,重新跟著公司資深前輩重新學習撰寫 Stored Procedure,希望藉此能將基礎打穩。序列函數 ROW_NUMBER() 正是這一次開發過程中接觸的新函式,這裡簡單紀錄並提供參考,若有任何錯誤或建議,請各位前輩不吝指教。


介紹

ROW_NUMBER 函式為顯示分割資料內的資料列的序號,每個分割資料的第一個資料序號從 1 開始。我們透過 PARTITION BY 進行資料分割,其詳細用法如下:
ROW_NUMBER ( )   
    OVER ( [ PARTITION BY expression , .... ] ORDER_BY_CLAUSE ) 

我們以 Study4 資料表為例,透過 Id 排序 並回傳資料列序號
SELECT ROW_NUMBER() OVER( ORDER BY Id DESC) AS row,
       Id,
       [Type],
       Title,
       [Description]
  FROM [dbo].[Album]

Tag : ,

By :

前言

第一次使用 Azure SQL 的時候,發現常常使用的資料庫備份/還原功能(mdf)無法使用。簡單研究後才了解在 Azure SQL 上必須透過匯出/匯入 bacpac 檔案格式(資料層應用程式)方式進行備份、還原或遷移工作。這篇我們就來間單說明如何使用資料層應用程式匯入/匯出工作。
建議將 SSMS 升級到最新版本,透過 SSMS 操作 Azure SQL 才能享受完整功能
關鍵字:匯入資料層應用程式匯出資料層應用程式


介紹

匯入資料層應用程式
Step 1. 右鍵點選資料庫 → 匯入資料層應用程式

Tag : ,

By :

前言

在很久之前自己紀錄了一篇 "搜尋 stored procedure 內的關鍵字":透過簡單的語法可以從大量 stored procedure 找到自己想要語法。最近從資深同事得知 SSMS 有免費圖形化搜尋套件可以使用,比起使用語法搜尋更加方便與直覺。今天介紹這套 RedGate SQL Search 是免費工具 (RedGate 產品功能強大但費用不便宜, SQL Search 不收費相當佛心),除了stored procedure 之外,也能搜尋 Table、Views、Cinstraints、Trigger、Function...等,個人強力推薦。

關鍵字:SQL Search 安裝Stored procedure 搜尋關鍵字

介紹

SQL Search 安裝
Step 1. 開啟  Redgate SQL Search 網頁,點選 Free download
Step 1. Open Redgate SQL Search Website, Click Free download

By :

前言

前陣子因為工作關係,有好一段時間撰寫與練習 Stored Procedure。中間有一個簡單的需求,需要隨機取得特定筆數資料, 當下還真的不清楚有什麼語法或方法可以達到需求。經過 Google 搜尋後認識了 NEW() 函數,在這裡簡單紀錄使用方法。

關鍵字NEW()隨機取得資料


介紹

NEWID () 主要隨機建立類型 uniqueidentifier 資料,如下範例所示,每一次產生的 Id 皆不同。
註:uniqueidentifier 與 GUID 相同,使用的 16 位元組二進位值,為全球唯一識別碼。
以下列語法為例:
DECLARE @Id uniqueidentifier  
SET @Id = NEWID()  
SELECT @Id


Tag : ,

By :

前言

Microsoft SQL Server 2016 版本開始對於 JSON 資料型態提供多種語法上的支援,在這一篇我們將簡單介紹 ISJSON、 JSON_MODIFY 與 OPENJSON。這些語法的作用為:

 用於驗證資料格式是否為 JSON 格式,是回傳 true;否則回傳 false
 用於修改 JSON 資料內容
 對於 JSON 資料進行解析,拆解成資料表格是顯示 Key、Value 與類型;配合 WITH 語法可接 JSON 轉換成資料表結果。

本篇文章若有錯誤或任何建議,請各位先進不吝指教。



介紹

ISJSON
這個簡單的函式可以用來驗證帶入的資料內容是否為正確的 JSON 格式,避免錯誤的資料造成程式錯誤。我們透過範例簡單說明 ISJSON 用法:
Step 1. 首先我們先建立範例資料表與資料,其中有幾筆資料的 Note 欄位存放正確 JSON 資料:

Tag : , ,

By :

前言

Microsoft SQL Server 2016 版本開始對於 JSON 資料型態提供多種語法上的支援,在這一篇我們將簡單介紹與比較 JSON_VALUE 與 JSON_QUERY 之間的差異。本篇文章若有錯誤或任何建議,請各位先進不令指教。

關鍵字:JSON_VALUEJSON_QUERY差異比較



介紹

JSON_VALUE
若您對 JSON 格式不陌生,應該知道 JSON 格式基本的組成為 Key: Value,如下圖所示。

Tag : , ,

By :

前言

Microsoft SQL Server 2016 版本開始對於 JSON 資料型態提供多種語法上的支援,在這一篇我們將簡單介紹與比較 FOR JSON AUTO 與 FOR JSON PATH 之間的差異。本篇文章若有錯誤或任何建議,請各位先進不令指教。

介紹

在介紹之前,我們先產生範例資料庫與資料,下面介紹時會比較清楚其 FOR JSON AUTO 與 FOR JSON PATH 作用:

Tag : , ,

By :

前言

在目前的工作崗位上,與 DBA 聊天間接得知 MS SQL Server 擁有寄信功能 - Database Mail,進而在空閒的時間搜尋相關資料並自己實作。整體設定過程並不困難,但測試的時候需要SMTP Server。這一篇文章將簡單紀錄操作步驟,若有任何錯誤或建議,請各位先進不吝指教。
測試環境:MS SQL Server 2016
SMTP:自己的Gmail 


操作步驟

Step 1. 右鍵點選 Database Mail → 設定 Database Mail

Tag : ,

By :

前言

過去要對 MS SQL Server 進行操作,我們都習慣透過 SSMS 來進行,但常常環境因素(作業系統,如mac) 不方便安裝SSMS,需要遠端連線到有SSMS的主機才能進行操作。而現在,我們透過 Visual Studio Code 也能連線到 MS SQL Server 進行操作,非常方便。

本篇將簡單介紹如何透過 Visual Studio Code 連接MS SQL Server,若有錯誤或任何建議,請各位先進不吝指教。


介紹

Step 1. 開啟 Visual Studio Code → 點選Extension → 輸入mssql → 點選安裝
https://d2mxuefqeaa7sj.cloudfront.net/s_050AD0233E63686269DC4A7D88ECA9BD9037D485893E601A84B29F3778C36976_1514196542221_image.png

By :

前言

WHERE 條件為 NULL 時回傳所有資料,非 NULL 時回傳符合條件資料 這篇的標題很難想,只好直接將問題描述做成題目。這一篇也是撰寫某個功能遭遇到的問題,運氣很好的我有程式碼可以參考,但認為這個方法很特別,且未來很有機會再度用到,故特別撰寫此篇記錄。


問題說明

目前遇到的系統分成 前端 (AngularJS) ↔ 後端 (ASP.NET MVC API) ↔ 資料庫( MS SQL Server/Stored procedure)。多數資料取得是透過 Entity Framework,少數透過呼叫 Stored procedure。

By :

前言

最近三個月因為工作需求,重新開始撰寫 Stored procedure,面對這個只有曾經維護過但沒有正式學習的工作,總是會有些忐忑不安。幸虧周遭同事相當有經驗,給我蠻多指點。這一篇文章主要是撰寫 SQL Scripts 或 stored procedure 過程中,遇到格式與版面跑位的問題,也因為程式碼皆需要 code review,跑版問題常常造成閱讀上的困擾。這一篇將簡單介紹幾個方法與工具,協助我們撰寫程式過程能輕鬆的排版。若有錯誤請各位先進不吝指教。

本篇文章內容:
1. 起手式 - 定位點與空白調整
   1.1 定位點與空白 (Tab and Space)
   1.2 定位點調整


起手式 - 定位點與空白調整

定位點與空白 (Tab and Space)

定位點與空白若沒有一致,當 Scripts 放在不同的地方會導致格式與排版不一致,所以可能在自己電腦上的SSMS撰寫時格式整齊一致,但上傳Code Review的平台,或者團隊成員透過不同的IDE開啟,就會有跑版的情況產生。

首先我們在 SSMS 先將定位點與空白顯示出來:
編輯 → 進階 → 檢視空白區


Tag : ,

By :


最近常常忙於工作,無法將較大篇幅的學習內容記錄下來,
只好先記錄常常用到的語法與設定且篇幅較小的內容。
一方面增加印象,另一方面以後忘記可以藉由此篇進行複習。

以下為工作期間常用到的語法與學習到的設定方法:

語法:

1、IS NULL判斷欄位是否為NULL


Example:
use [testDB]

go

select * from UserTable where seq is null
go


2、ISNUMERIC判斷欄位是否為數字

Example:
use [testDB]
go

select * from UserTable where ISNUMERIC(seq)=1
go



3、Insert + Select ( 快速增加重複資料 )

Example1:
USE [testDB]
GO

INSERT INTO [dbo].[Tcode01]
 ([SEQ],[單位代號],[單位名稱],[主管],[電話])
SELECT [SEQ],[單位代號],[單位名稱],[主管],[電話]
  FROM [dbo].[Tcode01] WHERE 單位代號 = "11"
GO

需要增加特定相同資料,如不同單位有相同材料,只有單位代號不同,
可以有以下用法:
Example2:
USE [water]
GO

INSERT INTO [dbo].[Tcode01]
 ([SEQ],[單位代號],[材料單位],[材料名稱])
SELECT [SEQ],'12',[材料代號],[材料名稱]
  FROM [dbo].[Tcode01] WHERE 單位代號= "11"
GO

定期備份:

1: 點選管理右鍵點選維護計畫,點選維護計畫精靈





2:點選下一步




3:輸入名稱(如backupDB),點選下一步





4:點選備份資料庫(完整)





5:點選下一步





6:選擇資料庫





7:設定為每個資料庫建立一個備份檔案、可設定為每個資料庫建立一個子目錄、副檔名輸入bak





8:拉到下方,選擇排程





9:依據喜好設定,這便設定每日12:00備份、無結束日期,完成後點選下一步





10:點選下一步





11:點選完成






12:點選關閉,即完成定期備份設定




定期刪除備份:


1: 點選管理右鍵點選維護計畫,點選維護計畫精靈






2:輸入名稱(如deleteDB),點選下一步





3:點選維護清除作業,點選下一步





4:點選下一步





5:點選備份檔案、選擇依據赴檔名搜尋資料夾及刪除檔案、選擇資料夾與輸入副檔名(bak)、選擇檔案存在時間(6天,只保留六天份備份)





6:點選下一步





7:點選完成





8:點選關閉,即完成定期刪除備份



--
如果覺得文章不錯,請幫忙點選廣告,
謝謝!


- Copyright © Duran Hsieh @ Duran 的技術冶煉廠 - Date A Live - Powered by Blogger - Designed by Johanes Djogan -